YuGiOhJCJ a écrit:moi1392 à dit:
Tu n'as donc pas besoin de ton "case SDL_KEYDOWN" car des que cet evenement arrivera, la seconde partie de ET sera fausse et donc tu sortiras du while
En fait, tu ne feras jamais les instructions contenues dans le case SDL_KEYDOWN
Donc c'est pour ça que j'ai choisi la solution de la variable, au moins la ça marche j'ai essayé:
- Code: Tout sélectionner
while(SDL_WaitEvent(&event)){
switch (event.type){
case SDL_QUIT: //Lorsque l'on ferme la fenêtre
exit(0);
break;
case SDL_KEYDOWN:
printf("touche pressee : %d\n", event.key.keysym.sym);
sortieboucle = 1; //Retenir dans une variable que une touche a été appuyée
break;
}
if(sortieboucle == 1){ //Si une touche a été appuyée, sortir de la boucle while
break;
}
}//FIN DE LA BOUCLE WHILE
sortieboucle = 0; //Réinitialisation de la variable pour une utilisation ultérieure de cette variable lors d'une nouvelle demande d'évennement
...
while(SDL_WaitEvent(&evenement)==1){
if(evenement.key.keysym.sym==SDLK_***){
...
break;
}
if(evenement.key.keysym.sym==SDLK_***){
...
break;
}
...
}//Fin de while
moi1392 a écrit:pas besoin de break dans les if.
Par contre, c'est beaucoup moins optimisé car pour chaque évenement, il teste TOUS tes if !
Mets plutot des else if, mais même avec ça, le switch est plus performant, car il impose une serstriction, c'est que les différents "case" sont des CONSTANTES (il ne peuvent pas êtres variables comme dans le cas des if) et du coup il se permet de les indexer et il peut retrouver le bon dans un tableau trié en un temps log(n) alors que pour des if/else if, c'est n/2 la complexité
Retourner vers Besoin d'aide en SDL ?
Utilisateurs parcourant ce forum: Aucun utilisateur enregistré et 2 invités