IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

C# Discussion :

C# Action qui se répète même si elle ne le devrait pas en théorie


Sujet :

C#

  1. #1
    Membre habitué
    Homme Profil pro
    Étudiant
    Inscrit en
    Juin 2011
    Messages
    273
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juin 2011
    Messages : 273
    Points : 152
    Points
    152
    Par défaut C# Action qui se répète même si elle ne le devrait pas en théorie
    Bonjour

    Je suis en train de programmer un petit jeu et j'en suis encore au tout début.
    Voici l'interface :

    Nom : interface.jpg
Affichages : 510
Taille : 248,6 Ko

    J'aimerais maintenant mettre en place un compteur qui indique le nombre de fois où la balle aura touché la barre. A priori rien de compliqué sauf qu'à chaque fois que ça touche, cela incrémente le compteur 1 à 5 fois, comme si ça toucherait 5 fois de suite.

    Voici le code : http://pastebin.com/JKRiTT6M

    Dans private void pictureBoxBalle_LocationChanged(object sender, EventArgs e) il y a beaucoup de commentaires mais le code de l'événement se trouve vers le bas. J'ai fais un tas d'essais mais à chaque fois le compteur est incrémenté plusieurs fois.

    Le compteur est incrémenté plusieurs fois alors que je fais une vérification pour voir si 2 secondes minimum se sont écoulées avant la dernière incrémentation et en plus la variable bControle devrait empêcher une incrémentation supplémentaire tant qu'un rebond n'a pas eus lieu.

    Donc il y a deux choses qui devraient empêcher plus d'une incrémentation par rebond mais visiblement ça ne fonctionne pas.

    Pouvez vous m'aider ?

    Merci d'avance

  2. #2
    Membre habitué
    Homme Profil pro
    Étudiant
    Inscrit en
    Juin 2011
    Messages
    273
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juin 2011
    Messages : 273
    Points : 152
    Points
    152
    Par défaut
    Personne ne sait comment faire pour que le compteur ne soit incrémenté qu'une fois à chaque rebond ?

    Si je dois modifier une partie du code ce n'est pas grave.

  3. #3
    Membre chevronné
    Avatar de PixelJuice
    Homme Profil pro
    Ingénieur .NET & Game Designer
    Inscrit en
    Janvier 2014
    Messages
    652
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Ingénieur .NET & Game Designer
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Janvier 2014
    Messages : 652
    Points : 2 180
    Points
    2 180
    Par défaut
    Bonjour,

    Je n'ai pas trop regarder le code mais regarde si entre le moment ou tu détecte la collision et que tu comptes , et le moment ou la balle doit remonté , si ça ne repasse pas par le compteur.

    Sinon faire un jeu en Winform pure est une très mauvaise idée , ce n'est pas fait pour du tout ,et les performances sont médiocres , même pour un simple casse-brique. Tu t’embêterai beaucoup moins a le faire en XNA par exemple. Et ça réglerai aussi d'ailleurs ton problème car l'ordre d’exécution est beaucoup plus simple et tu verras plus vite ou ça bloque.

  4. #4
    Membre habitué
    Homme Profil pro
    Étudiant
    Inscrit en
    Juin 2011
    Messages
    273
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juin 2011
    Messages : 273
    Points : 152
    Points
    152
    Par défaut
    Oui c'est l'ordre d’exécution qui pose problème.

    Je pense laisser tomber le C#.

  5. #5
    Membre actif Avatar de stolx_10
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juillet 2006
    Messages
    374
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2006
    Messages : 374
    Points : 270
    Points
    270
    Par défaut
    Pour ma part, je pense qu'il faut que tu contrôles la hauteur de la barre qui renvoie la balle. Si la balle touche le premier pixel de cette barre, tu comptes 1.
    Je pense qu'aujourd'hui, ton code ne contrôle pas cette hauteur de barre, et la balle passe au travers des pixels de la barre augmentant ton compteur d'autant de pixels traversés.

    Ceci est une hypothèse.

    Quand tu mets un point d'arrêt dans pictureBoxBalle_LocationChanged, et ici particulièrement :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     if ((pictureBoxBalle.Location.X >= pictureBoxBarre.Location.X) && (pictureBoxBalle.Location.X <= pictureBoxBarre.Location.X + 88) && (pictureBoxBalle.Location.Y > 364)) // valeur normale = 366
    ça fait quoi exactement ?

    Je pense que le problème vient de là. Y'a soit un contrôle de valeur manquant, ou alors les valeurs ne reflètent pas ce que tu attends.

  6. #6
    Membre habitué
    Homme Profil pro
    Étudiant
    Inscrit en
    Juin 2011
    Messages
    273
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juin 2011
    Messages : 273
    Points : 152
    Points
    152
    Par défaut
    Oh merci

    Effectivement la barre a 5 pixels d’épaisseur. Je n'avais jamais compris pourquoi c'est toujours incrémenté 5 fois.

    Pour le moment je ne connais que le HTML PHP CSS JAVASCRIPT C C++ C# et comme le C# c'est le seul que le connais et qui peut permettre de faire cela, je préfère ne pas laisser tomber le C# pour le moment.

    Je pense qu'il y aura un problème lorsque je vais faire une option qui permet de régler la vitesse de déplacement de la barre ainsi que la longueur de la barre mais au moins je ne vais pas m'ennuyer. Si jamais je bloque, je testerais avec un langage mieux approprié mais que je ne maîtrise pas encore, ce sera plus facile puisque j'aurais déjà toutes les idées en tête et je saurais les différents contrôles à effectuer à chaque déplacement.

    Je pourrais continuer tout cela dès que mon épreuve orale de demain sera passée.

Discussions similaires

  1. [Python 2.X] Problème de condition : respectée alors qu'elle ne le devrait pas.
    Par Quartman dans le forum Programmation multimédia/Jeux
    Réponses: 4
    Dernier message: 18/02/2015, 02h09
  2. Action qui porte sur la même page
    Par longbeach dans le forum Langage
    Réponses: 12
    Dernier message: 17/03/2009, 08h37
  3. supprimer les fichiers qui ont des mêmes noms
    Par manaboko dans le forum Langage
    Réponses: 5
    Dernier message: 08/03/2006, 09h09
  4. 2 actions (submit) pour un même formulaire.
    Par spirou dans le forum Balisage (X)HTML et validation W3C
    Réponses: 3
    Dernier message: 02/01/2006, 02h31
  5. 2 fonctions qui tournent en même temps
    Par GOUGOU1 dans le forum C
    Réponses: 7
    Dernier message: 07/12/2002, 18h42

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo