Partage
  • Partager sur Facebook
  • Partager sur Twitter

[SDL] Gestion d'un évennement soudain

tite question dont la réponse est introuvable

    22 octobre 2006 à 16:41:29

    Bonjour,
    Je réalise un programme en SDL (pas un jeu, un utilitaire) et j'ai un petit problème au niveau de la gestion des évennements.
    Cela fait 1 mois que je cherche et je n'ai jamais trouvé de réponse.

    Voici mon problème:
    Je veux poser une question avec plusieurs choix de réponse et le programme doit reconnaitre quelle touche a été appuiyée par l'utilisateur comme réponse.
    Le problème est que le programme continue à poser des questions après en fonction des réponse, donc je ne peux pas faire une grande boucle infinie pour gérer la reconnaissance des évennements, il me faudrait une boucle pour chaque question ou alors une commande pour reconnaitre cette touche mais sans boucle.

    Merci pour vos prchaines réponses.
    • Partager sur Facebook
    • Partager sur Twitter
      22 octobre 2006 à 20:46:30

      Si il suffit d'avoir une variable disons "state" qui prend différente valeur selon l'état en cours .
      Exemple, on définie l'arborescence suivante des questions:
      Programmeur ?
      -Oui:
      C ? C++ ? Autre ?
      -Autre:
      -Interprêté ? Compilé ?

      Alors on définie les états suivants:
      -ASK_FINISHED
      -ASK_PROG
      -ASK_C_CPP_OTHER
      -ASK_COMPILED

      La boucle devient:(pseudo-code)

      state=ASK_PROG
      tant que state!=ASK_FINISHED
        proposer_choix(state)
        E=récupérer_évènement
        switch(state)
          case ASK_PROG
            if E=Choice.No
              state=ASK_FINISHED
            else
              state=ASK_C_CPP_OTHER
          case ASK_C_CPP_OTHER
             if E=Choice.C | Choice.Cpp
               state=ASK_FINISHED
             else
               state=ASK_COMPILED
          case ASK_COMPILED
             state=ASK_FINISHED
      fin tant que

      Après tu peux enregister les choix au fur et à mesure
      • Partager sur Facebook
      • Partager sur Twitter
        23 octobre 2006 à 0:20:24

        Ou dans un autre style, tu fais une fonction qui te renvoie la touche appuyé. Tu l'apelles à chaque menu, tu récupères la valeur de retour de la fonction (numéro de touche par exemple) et ensuite tu fais un switch pour tester cette valeur.

        Donc avec une fonction GetKeyPress (qui est ce que je décris au dessus et que tu devras coder) :

        reboucler = 1
        TANT QUE reboucler = 1
          AFFICHER "programmeur ?"
          K=GetKeyPress
          switch(K)
            case 'o': <ce que tu veux> reboucler = 0
            case 'n': <ce que tu veux> (quit ?)
        FIN TANT QUE


        Et tu répète ce petit bout de code à chacun de tes menus en l'adaptant bien sur.
        • Partager sur Facebook
        • Partager sur Twitter
          23 octobre 2006 à 12:48:36

          :) Merci pour vos réponses, je vais essayer les solutions que vous me proposez.
          Merci
          • Partager sur Facebook
          • Partager sur Twitter

          [SDL] Gestion d'un évennement soudain

          × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
          × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
          • Editeur
          • Markdown