6 years ago
switch (variable()) { case Valeur1 : Liste d'instructions; break; }
Bonjour,
je suis en train de développer un petit jeu très basique de plateforme mais un petit truc m'embête : lorsque je maintient la croix directionnelles appuyée, les boutons sont bloqués. (imaginons : quand je cours à droite avec la croix, je ne peut pas sauter avec le bouton B).
J'ai pensé que c'était un problème avec la structure de mon code (j'utilise un "if" et une suite de "else if") alors j'ai voulu utiliser les switch. Hors je n'ai aucune idée de quoi mettre dedans (à la place de la variable, pour la valeur1 je pense que ça serait (gb.buttons.repeat(BUTTON_LEFT, 0))
Merci d'avance pour vos réponses !
NEW 6 years ago
En fait tu as raison plus ou moins: je m'explique dans les 2 cas tu fais l'un sinon l'autre.
Toi ce qu'il faut dans ton cas c'est séparer les cas. Mettre 2 if séparés l'un de l'autre.
Actuellement tu lui dis si A est appuyé traite A sinon traite B.
Tu peux aussi le faire comme ça mais dans ce cas tu dois faire
si A est appuyé alors
si B est appuyé traite les boutons A et B sont appuyé sinon traite A est appuyé
sinon si B est appuyé alors traite B est appuyé
Si tu ne traite que l'interaction de ces 2 boutons ça reste simple
Tu vois le principe, tu peux l'écrire de différentes façons selon la logique de ton jeu
NEW 6 years ago
Juste pour completer @jicehel , ce qui dit est OK mais sont algo n est pas top .
tu fait un
if(btn_A) { // quelques Action // si je passe ici je ne passe pas dans le else // cette condition est prioritaire sur la suivante } else if(btn_b) { // dautre action que j aimerais pouvoir faire en meme temp que celle de de BTN_A }
tu as remplacer ces if else if par un switch case qui fait exactement la meme chose.
quand tu passe dans le premier if ou dans la premiere case tu ne passe pas dans les autres
la solution est de rester avec des if et d'enlever les else
if(btn_A) { // quelques Action } // pas de else toute les if vont etre tester if(btn_b) { // dautre action que j aimerais pouvoir faire en meme temp que celle de de BTN_A // sans le else cela marche merveilleusement bien HouHou }
NEW 6 years ago
Juste pour compléter @clement, la solution dans ton cas (celle que j'ai essayé d'expliqué dans mon message précédent) avec un algo plus propre que dans le précédent message c'est:
if(btn_A && btn_b) { // Actions à faire si A & B sont appuyés } else if(btn_a) { // Les actions a faire quand le bouton A seulement est appuyé } else if(btn_b) { // Les actions a faire quand le bouton B seulement est appuyé }
NEW 6 years ago
ok je comprend mieux ton algo jicehel.
les use case sont different. Dans ton cas on fait 3 action different, mais uniquement 1 a la fois
dans mon cas on a deux action differente mais qui peuvent etre simultané
Tout dépend du besoin ;)
NEW 6 years ago
Oui, je crois que c'est ce qu'il voulait faire ;) Maintenant de toutes façons, il a le choix des solution
NEW 6 years ago
Merci beaucoup pour vos réponses, pour ma part j'ai fait ça :
if(gb.buttons.repeat(BUTTON_LEFT,0))
{
if(gb.buttons.repeat(BUTTON_B,0))
{
posX-=PAS;
posY-=PAS;
}
else
posX-=PAS;
}
c'est pas très beau mais ça marche haha