Bonsoir,
Il s'agit de mon premier post sur ce forum alors si je ne respecte pas les usages soyez indulgents .
Voila je tente de créer un jeu (style pong) à 2 joueurs (oui je débute....) mais voila, lorsque que j’exécute le code:
- La balle ne rebondit pas et déclenche le "game over".
- Il y a un décalage entre les palets et l'écran et je ne sais pas d'où cela vient.
J'ai vérifié plusieurs fois mon code et je ne vois absolument ce qui cause ces erreurs.....
Merci beaucoup si vous m'aidez
Hors ligne
Bonjour,
Tu placais mal tes raquettes et ta condition de vérification n'était pas juste.
Dans une bonne programmation, il faut donner des noms de variables explicites. Il m'a fallu du temps pour comprendre à quoi correspondait tes variables.
N'hésite pas à utiliser des noms comme hauteurRaquette, largeurRaquette.
Lorsqu'une fenêtre Processing est créée par size(100, 200) par exemple tu peux accéder à ces valeurs par les variables width et height.
Voici ma proposition :
Hors ligne
Bonsoir,
Merci beaucoup!
Oui en effet.... J'essayerais de donner des noms plus clairs c'est vrai que je me perdais un peu dans mes variables ^^
Oui en effet j'aurais du utiliser ces outils.
Mais en tout cas merci beaucoup d'avoir passé du temps sur mon problèmes
Bonne soirée
Hors ligne
Merci encore et en conclusion le code corrigé (enfin le votre ) et en un peu plus clair
D
Hors ligne
un bien bel échange (de Pong) comme on aimerait en voir plus souvent ! merci aux 2 joueurs
Hors ligne
C'est beaucoup plus clair.
Cependant, il y a une petite erreur dans la définition de tes zones de rebond. Voici la correction.
De plus, il y a une convention d'écriture en java qui est valable aussi dans Processing. Les variables commencent toujours par une minuscule, ensuite les différents mots composant le nom de la variable commencent par une majuscule. Cela donnerait pour toi : largueurFenetre, zoneRebondPaletBas, rayonBoulle …
Je t'ai rajouter une instruction pour éviter que le palet disparaisse.
Une faute d'orthographe s'est glissée dans le nom LongeurPalet.
Bonne continuation
Hors ligne
Bonsoir,
Merci encore pour ces réponses
En effet je suis novice et je n'ai prit connaissance de cette convention seulement aujourd'hui...
Merci pour la l'ajout de la procedure pour empêcher les palets de partir de l'écran
En revanche je ne comprend pas très bien pourquoi utiliser de préférence un opérateur =< plutôt qu'un opérateur < cela revient au même non?
Désolé j'était très fatigué ce soir là ^^
Merci encore pour tout ceci en revanche étant en vacances je ne pourrait appliquer ces modifications qu'à mon retour (j'ai essayé la version tablette de processing mais elle n'est pas très au point et les tailles de fenetres fixes me posent pas mal de problèmes..)
Hors ligne
L'erreur n'était pas dans l'opérateur < ou <= mais dans la définition des deux variables ZoneRebondPaletBas et ZoneRebondPaletHaut.
Hors ligne
Ah oui pardon
zoneRebondPaletBas = hauteurPalet + rayonBoulle; zoneRebondPaletHaut = hauteurFenetre - hauteurPalet - rayonBoulle;
Dernière modification par LATTES22 (2014-12-24 12:32:27)
Hors ligne
Tu refais la même erreur, dans le bout de code que j'avais proposé, j'avais déjà fait la correction.
int ZoneRebondPaletBas = HauteurFenetre - HauteurPalet - RayonBoulle; int ZoneRebondPaletHaut = RayonBoulle + HauteurPalet;
Hors ligne
Vraiment ?
Cela m'étonne car zonePaletDuHaut doit avoir une grande valeur vu que y doit être plus petit que lui pour rebondir or vous écrivez :
int zonePaletDuHaut = rayonBoulle + hauteurPalet;
Ce qui correspond a zonePaletDuBas il me semble...
Et pour zonePaletDuBas:
int zonePaletDuBas = hauteurFenetre - hauteurPalet - rayonBoulle;
Ce qui à mon avis correspond plutôt à zonePaletDuHaut...
Je suis désolé si je m'enfonce dans ma bêtise
Hors ligne
Pour simplifier, au considère que la boule est un point.
Le palet du haut, sa limite est égale à la hauteur du palet donc si le y du point est inférieur à la hauteur alors il y a rebond.
Es-tu d'accord avec cela ?
Hors ligne
Oui en effet,
Cela voudrait dire que le 0 de l'axe des ordonnées ce situe tout en haut de l'écran et que le reste de la page a des ordonnées négatives ?
Hors ligne
Voici mes explications pour le palet du haut :
si y < zoneRebondPaletHaut alors rebond
Avec zoneRebondPaletHaut = hauteurPalet + rayonBoule
Pour le palet du bas :
si y > zoneRebondPaletBas alors rebond
Avec zoneRebondPaletBas = height - hauteurPalet - rayonBoule
Es-tu d'accord ?
Hors ligne
Ahhhhh oui!!!
Excusez moi j'inversais les deux zones, je ne comprenais pas le sens de height je l'imaginais dans l'autre sens (ce n'est pas très clair mais maintenant pour moi ça l'est )
Merci beaucoup ^^
Hors ligne