Se connecter avec
S'enregistrer | Connectez-vous

c++

Dernière réponse : dans Programmation

Bonjour,je programme en c++ et j'ai un pb voila mon code:
  1. #include <stdlib.h>
  2. #include <stdio.h>
  3. #include <SDL/SDL.h>
  4. #include <SDL/SDL_image.h>
  5.  
  6. void pause();
  7.  
  8. int main(int argc, char *argv[])
  9. {
  10. SDL_Surface *ecran = NULL, *gg = NULL, *pp = NULL, *jj = NULL;
  11. SDL_Rect positiongg, positionpp, positionjj;
  12. SDL_Event event;
  13. int continuer = 1;
  14. int i=0;
  15.  
  16. positionjj.x = 1;
  17. positionjj.y = 1;
  18.  
  19.  
  20. jj = SDL_LoadBMP("mur.bmp");
  21. SDL_SetColorKey(jj, SDL_SRCCOLORKEY, SDL_MapRGB(jj->format, 0, 0, 255));
  22. SDL_BlitSurface(jj, NULL, ecran, &positionjj);
  23.  
  24. SDL_Surface ** Lesimages[]={ &gg, &pp, NULL};
  25. SDL_Init(SDL_INIT_VIDEO);
  26.  
  27. ecran = SDL_SetVideoMode(640, 480, 32, SDL_HWSURFACE);
  28. SDL_WM_SetCaption("mon premier jeu", NULL);
  29.  
  30.  
  31. gg = SDL_LoadBMP("dbz1.bmp");
  32. SDL_SetColorKey(gg, SDL_SRCCOLORKEY, SDL_MapRGB(gg->format, 0, 0, 255));
  33.  
  34. pp = SDL_LoadBMP("dbz2.bmp");
  35. SDL_SetColorKey(pp, SDL_SRCCOLORKEY, SDL_MapRGB(pp->format, 0, 0, 255));
  36. /* On centre Zozor à l'écran */
  37. positiongg.x = ecran->w / 2 - gg->w / 2;
  38. positiongg.y = ecran->h / 2 - gg->h / 2;
  39. positionpp.x = ecran->w / 2 - pp->w / 2;
  40. positionpp.y = ecran->h / 2 - pp->h / 2;
  41.  
  42.  
  43. while (continuer)
  44. {
  45. SDL_WaitEvent(&event);
  46. switch(event.type)
  47. {
  48. case SDL_QUIT:
  49. continuer = 0;
  50. break;
  51. case SDL_KEYDOWN:
  52. switch(event.key.keysym.sym)
  53. {
  54. case SDLK_RIGHT: // Flèche droite
  55. positiongg.x++;/* je pense que tout se passe ici*/
  56. break;
  57. case SDLK_o: //touche o
  58. i++;
  59. if(i>1)/*Si i est plus grand que 1 (donc qu'il n'a pas d'image allouée puisque le tableau va jusque 2 images(0, 1)), mettre i à 0, donc à la 1ère image*/
  60. {
  61. i=0;
  62. }
  63. positiongg.x++;
  64. break;
  65.  
  66. }
  67. break;
  68. }
  69. SDL_FillRect(ecran, NULL, SDL_MapRGB(ecran->format, 255, 255, 255)); /* On efface l'écran */
  70. SDL_BlitSurface(*Lesimages[i], NULL, ecran, &positiongg); /* On place la nouvelle image */
  71. SDL_Flip(ecran); /* On met à jour l'affichage */
  72. }
  73.  
  74. pause();
  75.  
  76. SDL_FreeSurface(jj);
  77. SDL_FreeSurface(gg);
  78. SDL_FreeSurface(pp);
  79. SDL_Quit();
  80.  
  81. return EXIT_SUCCESS;
  82. }
  83.  
  84. void pause()
  85. {
  86. int continuer = 1;
  87. SDL_Event event;
  88.  
  89. while (continuer)
  90. {
  91. SDL_WaitEvent(&event);
  92. switch(event.type)
  93. {
  94. case SDL_QUIT:
  95. continuer = 0;
  96. }
  97. }
  98. }

et l'image "mur" ne s'affiche pas est ce normale?
sinon aidez moi a l'afficher svp.
Merci.
Lucbu

Autres pages sur : question

Lassé par la pub ? Créez un compte
Lassé par la pub ? Créez un compte
Tom's guide dans le monde