Aller au menu - Aller au contenu

[Plan du site] Vous êtes ici --- > Le Site du Zéro > Les forums > Programmation > Langage C++ > [SDL] Le programme quitte > Lecture du sujet

[SDL] Le programme quitte

Quelque soit la touche que j'appui

Vous devez être inscrit pour pouvoir poster des messages

RésoluLe problème de ce sujet a été résolu

Page : 1 
Auteur Message
1 visiteur sur ce sujet (1 anonyme)
Page : 1 
Hors ligne Jérémie Belpois # Posté le 08/05/2008 à 22:18:42
On t'auras XANA
Avatar
Groupe : Membres
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:
Code : C
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
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.
 
Hors ligne lanfeusst # Posté le 08/05/2008 à 22:22:59
Groupe : Membres
Cette réponse a aidé l'auteur du sujet Cette réponse a aidé l'auteur du sujet
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.
Édité le 08/05/2008 à 22:23:32 par lanfeusst
Hors ligne total chaos # Posté le 08/05/2008 à 22:25:27
le C++, j'en mange!
Avatar
Groupe : Bannis
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
 
Hors ligne lanfeusst # Posté le 08/05/2008 à 22:38:13
Groupe : Membres
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
Hors ligne Fvirtman # Posté le 08/05/2008 à 23:20:10
Avatar
Groupe : Membres
N'imbriquez pas de switchs !!!
faites des fonctions a la place !
Édité le 08/05/2008 à 23:20:21 par Fvirtman

--- "Toute tâche répétitive est automatisable..." ---
Tuto C/C++ basés sur des exemples :
http://perso.numericable.fr/~fvirtman/info/tuto/index.html
Mes programmes a peu pres finis :
http://perso.numericable.fr/~fvirtman/progs/index.html
 
Hors ligne total chaos # Posté le 08/05/2008 à 23:25:13
le C++, j'en mange!
Avatar
Groupe : Bannis
"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
 
Hors ligne Dentuk # Posté le 08/05/2008 à 23:56:28
Yamo...
Avatar
Groupe : Membres
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
Code : C++
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
#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. ;)

Image utilisateur
 
Hors ligne Jérémie Belpois # Posté le 09/05/2008 à 00:00:47
On t'auras XANA
Avatar
Groupe : Membres
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.
Édité le 09/05/2008 à 00:49:35 par Jérémie Belpois
 

Retour au forum "Langage C++" ou à la liste des forums

Vous devez être inscrit pour pouvoir poster des messages

Changer de design | En savoir plus | Plan du site | Politique d'accessibilité | Règles | RSS tutoriels | RSS news
Édité par Simple IT SARL : Nous contacter | Notre blog | Revue de presse | Publicité

Y'a plus rien à lire, faut remonter maintenant !

Hébergement web - Correction de tutoriels - Créer un site
Vous souhaitez apparaître ici ? Contactez-nous.

Nombre de connectés 803 Zéros connectés | Requêtes SQL 6 requêtes | Temps de génération de la page : Total (SQL) 0.0392s (0.007s)