Votre question

Problème avec code C (de débutant)

Tags :
  • Programme
  • Programmation
Dernière réponse : dans Programmation
26 Juin 2006 19:59:22

Bonjour, voila je comprend pas pourquoi programme s'ouvre et se referme le tout en moins d'une seconde chrono:
  1. SDL_Event event;
  2. int continuer=1;
  3. while (continuer)
  4. {
  5. SDL_WaitEvent(&event);
  6. switch (event.type)
  7. {
  8. case SDL_QUIT:
  9. continuer=0;
  10. break;
  11. case SDL_KEYDOWN:
  12. switch (event.key.keysym.sym)
  13. {
  14. case SDLK_RIGHT:
  15. perso=SDL_LoadBMP("droite.bmp");
  16. positionPerso.x+=CASE;
  17. break;
  18. case SDLK_LEFT:
  19. perso=SDL_LoadBMP("gauche.bmp");
  20. positionPerso.x-=CASE;
  21. break;
  22. case SDLK_UP:
  23. perso=SDL_LoadBMP("haut.bmp");
  24. positionPerso.y-=CASE;
  25. break;
  26. case SDLK_DOWN:
  27. perso=SDL_LoadBMP("bas.bmp");
  28. positionPerso.y+=CASE;
  29. break;
  30. }
  31. break;
  32. }
  33.  
  34. SDL_FillRect(ecran, NULL, SDL_MapRGB(ecran->format, 100, 100, 100));
  35. SDL_BlitSurface(perso, NULL, ecran, &positionPerso);
  36. SDL_Flip(ecran);
  37. }
  38.  
  39. SDL_FreeSurface(perso);
  40. SDL_Quit();
  41. }

J'ai aucune erreur a la compilation.
Normalement, il devrait ouvrir une fenètre, colorer le fond, et blitter une images qui bouge avec les flèche du clavier, j'ai déja utilisé se systeme une bonne 10ène de fois, sa a toujours marcher, et la sa marche plus et je comprend pas!!

Si vous pouviez m'aider, pliz :-(

Autres pages sur : probleme code debutant

a b L Programmation
26 Juin 2006 20:17:48

J'ai jamais fait de switch imbriqués (et donc de break imbriqués), ça ne viendrait pas de là par hasard ?
Sinon, le message QUIT n'est-il pas posté dans une autre fonction (ce qui arrêterait ton programme) ?
26 Juin 2006 20:21:02

nan faut mettre ca a la fin de ton code

  1. system("PAUSE");
Contenus similaires
a b L Programmation
26 Juin 2006 20:39:08

Non c'est pas ça Sliv, car ça devrait rester dans la boucle tant qu'on ne quitte pas.

Par contre je viens de voir le problème: il y a SDL_Quit(); dans la boucle. Il ne fait donc qu'une boucle puisque à la deuxième il y a l'évènement SDL_QUIT qui est déclenché par cette fonction ;-)

EDIT: tu devrais faire SDL_Quit() sur l'appui d'une touche particulière (comme ECHAP).
26 Juin 2006 20:56:01

Non, SDL_Quit(); n'est pas dans la boucle, regarde bien les }. Le dernier } c'est la fermeture de la fonction main.
Et je pense pas que sa vienne des switch's imbriqué puisque j'ai déja utilisé cette manière de faire et sa a toujours marcher. D'ailleur, dans les tuto's de SDZ (site du zero) il utilise aussi cette manière.
a b L Programmation
26 Juin 2006 21:10:46

Effectivement, je n'avais pas bien vu les accolades ;-)

Sinon tu n'a pas d'autre SDL_Quit() dans ton programme ?
26 Juin 2006 22:07:49

non, j'ai mis la quasi-totalité du programme, au dessus de la boucle while, y a juste l'initialisation des variables et de la SDL.
a b L Programmation
27 Juin 2006 19:40:41

C'est peut-être un appel de fonction qui cause un crash.
Tu devrais lancer en mode debug pas à pas pour comprendre où ça foire, parce que là je ne vois pas.
Tom's guide dans le monde
  • Allemagne
  • Italie
  • Irlande
  • Royaume Uni
  • Etats Unis
Suivre Tom's Guide
Inscrivez-vous à la Newsletter
  • ajouter à twitter
  • ajouter à facebook
  • ajouter un flux RSS