[Résolu] Séquence de bouttons

c0d4

il y a 4 ans

Bonjour, 

Je cherche à réaliser une sorte de "cheat code" pour une création.

Par exemple : bouton "A" appuyé puis pendant ce temps, "UP, DOWN, UP , B" ... par exemple pour à la fin afficher un message particulier si la séquence est bonne.

Quelqu'un aurait il une idée de comment implémenter ça dans la loop svp ?

J'ai fait quelques essais qui se sont avérés infructueux :(

Merci d'avance :)

Thierry

NEW il y a 4 ans

Pour une séquence, cela implique de stocker la succession de touches appuyées.

Il te faut un tableau ou une liste où tu notes les touches appuyées au fur et à mesure, ainsi qu'un contrôle de la séquence existante pour activer ton message.

Peut être que tu peux partager ce que tu as essayé pour que l'on puisse t'aiguiller. C'est assez simple avec https://gist.github.com/ par exemple

c0d4

NEW il y a 4 ans

Bonjour merci pour ta réponse :)

En fait je pense que je m'y prends mal, j'ai tenté quelquechose comme ça : 

https://hastebin.com/ezipowanej.coffeescript

Le soucis c'est qu'avec une séquence plus longue, je n'ai pas le temps d'appuyer sur les boutons avant que la loop se termine :/


Thierry

NEW il y a 4 ans

oui, c'est normal. il faudrait être capable d'enchainer des touches en quelques ms ;)

Il faut créer une liste ou un tableau et stocker les touches appuyées.

c0d4

NEW il y a 4 ans

Super ça fonctionne parfaitement avec un buffer qui stocke :D

Merci à toi !

Juice_Lizard

NEW il y a 4 ans

Voici le bout de code que j'ai implémenté dans ma boucle loop pour pouvoir choisir le niveau dans "Square Nose Color", si on appuie dans l'ordre sur: haut, bas, gauche, droite, à l'écran titre. J'ai quatre niveaux différents, numérotés de 0 à 3. Le chiffre est visible à l'écran. J'ai aussi trois variables en debut de code:

int level = 0;

int cheatCodeNumber = 0;

bool selectLevel = false;

Le niveau par défaut est le numéro zéro. Le nombre "cheatCodeNumber" augmente de un à chaque nouvelle bonne touche de la combinaison. Il retombe à zéro si un autre bouton est appuyé. Arrivé à 4, le "selectLevel" devient vrai. C'est à dire que mon numéro de niveau peut maintenant varier si j'appuie sur droite ou gauche.

// cheat code to select the level: UP, DOWN, LEFT, RIGHT
      if(selectLevel == false) {
        if(gb.buttons.pressed(BUTTON_UP)) {
          if(cheatCodeNumber == 0) {
            cheatCodeNumber = 1;
          } else {
            cheatCodeNumber = 0;
          }
        }
        if(gb.buttons.pressed(BUTTON_DOWN)) {
          if(cheatCodeNumber == 1) {
            cheatCodeNumber = 2;
          } else {
            cheatCodeNumber = 0;
          }
        }
        if(gb.buttons.pressed(BUTTON_LEFT)) {
          if(cheatCodeNumber == 2) {
            cheatCodeNumber = 3;
          } else {
            cheatCodeNumber = 0;
          }
        }
        if(gb.buttons.pressed(BUTTON_RIGHT)) {
          if(cheatCodeNumber == 3) {
            selectLevel = true;
            cheatCodeNumber = 0;
            level += 1;
          } else {
            cheatCodeNumber = 0;
          }
        }
      } else {
// level selection
        if((gb.buttons.pressed(BUTTON_RIGHT)) && (level < 3)) {
          level += 1;
        }
        if((gb.buttons.pressed(BUTTON_LEFT)) && (level > 0)) {
          level -= 1;
        }
      }