Partage
  • Partager sur Facebook
  • Partager sur Twitter

[SDL] Le programme quitte

Quelque soit la touche que j'appui

Sujet résolu
    8 mai 2008 à 22:18:43

    Bonsoir à tous,

    Voici mon problème:
    Je voudrais que en appuyant sur le touche 4 du pavé numérique, ça quitte le programme.
    Mais quand j'appui sur n'importe qu'elle autre touche, cela fait la même chose, hors je ne veux pas qu'il quitte sur on appui sur autre chose que la touche 4 du pavé numérique.

    Voici le code en question:
    bool boucler = true;
    	SDL_Event evenement;
    	
    	while (boucler)
    	{
    		SDL_WaitEvent(&evenement);
    		switch(evenement.type)
    		{
    			case SDL_KEYDOWN:
    				switch (evenement.key.keysym.sym)
    				{
    					case SDLK_KP4:
    						boucler = false;
    						break;
    				}
    			
    			case SDL_QUIT:
    				boucler = false;
    				break;
    		}
    	}
    


    Merci à celui qui pourra m'aider.
    • Partager sur Facebook
    • Partager sur Twitter
    Mon site internet : http://www.chrissoftware.fr.nf
      8 mai 2008 à 22:23:00

      Il manque un break après la boucle de SDL_KEYDOWN ce qui fait que les instructions de SDL_QUIT sont aussi exécutés.
      • Partager sur Facebook
      • Partager sur Twitter
        8 mai 2008 à 22:25:27

        Citation : lanfeusst

        Il manque un break après la boucle de SDL_KEYDOWN ce qui fait que les instructions de SDL_QUIT sont aussi exécutés.


        break permet simplement de sortir du switch si le cas courant est executé, donc c'est pas ça le probleme
        • Partager sur Facebook
        • Partager sur Twitter
          8 mai 2008 à 22:38:14

          bah si, imagine ce qui se passe quand il tape au clavier :
          - le programme rentre dans la boucle SDL_KEYDOWN
          - si c'est la touche 4 alors boucler = false puis il sort du switch de SDL_KEYDOWN
          -ensuite il continue dans SDL_QUIT car il n'y a pas de break après l'accolade fermante du switch(evenement.key.keysym.sym)
          - et donc boucler = false
          • Partager sur Facebook
          • Partager sur Twitter
            8 mai 2008 à 23:20:11

            N'imbriquez pas de switchs !!!
            faites des fonctions a la place !
            • Partager sur Facebook
            • Partager sur Twitter

            Recueil de code C et C++  http://fvirtman.free.fr/recueil/index.html

              8 mai 2008 à 23:25:13

              "ensuite il continue dans SDL_QUIT car il n'y a pas de break après l'accolade fermante du switch(evenement.key.keysym.sym)"
              il n'entrera dans la SDL_QUIT que si la feetre est fermée
              • Partager sur Facebook
              • Partager sur Twitter
                8 mai 2008 à 23:56:28

                Citation : total chaos

                "ensuite il continue dans SDL_QUIT car il n'y a pas de break après l'accolade fermante du switch(evenement.key.keysym.sym)"
                il n'entrera dans la SDL_QUIT que si la feetre est fermée

                Il n'a pas besoin d'y entrer, il est déjà dedans puisqu'il n'est pas sorti du SDL_KEYDOWN puisqu'il n'a pas rencontré de break. :p
                #include <iostream>
                
                using namespace std;
                
                int main() {
                  int a = 10;
                  switch(a) {
                    case 1:
                      cout << "exec pour 1" << endl;
                    case 10:
                      cout << "exec pour 10" << endl;
                    case 100:
                      cout << "exec pour 100" << endl;
                      break;
                    case 1000:
                      cout << "exec pour 1000" << endl;
                  }
                }
                
                Comme tu peux le voir ceci affiche exec pour 10 et exec pour 100. ;)
                • Partager sur Facebook
                • Partager sur Twitter
                  9 mai 2008 à 0:00:47

                  J'avais effectivement pas vu mon oubli du break, là suis sous Windows donc je verrais demain en retournant sous Linux(a moins que je comprenne sans IDE comment utiliser un fichier .lib au lieu d'un .a ;) ).

                  EDIT: C'est bon je viens d'essayer en rajoutant le break oublié, et effectivement ça fonctionne parfaitement.
                  • Partager sur Facebook
                  • Partager sur Twitter
                  Mon site internet : http://www.chrissoftware.fr.nf

                  [SDL] Le programme quitte

                  × 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