Se connecter avec
S'enregistrer | Connectez-vous

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

Dernière réponse : dans Programmation

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

Lassé par la pub ? Créez un compte
Expert Programmation

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) ?
Expert Programmation

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).

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.
Lassé par la pub ? Créez un compte
Tom's guide dans le monde