Déplacement de plusieurs sprites à l'écran (SDL)

Déplacement de plusieurs sprites à l'écran (SDL) - C - Programmation

Marsh Posté le 08-01-2010 à 18:51:26    

Bonjour à tous,  
je débute en C et j'essaie de créer un programme où l'on peut déplacer plusieurs sprites à l'écran, par cases de 40px.  
Le problème est que la fonction qui gère le déplacement fonctionne très bien pour le premier, mais le deuxième sprite refuse désespérément de bouger.

Code :
  1. int game(ecran)
  2. {
  3. SDL_Surface *perso2 = NULL;
  4. SDL_Rect pos2;
  5. SDL_Surface *perso = NULL;
  6. SDL_Rect pos;
  7. int i, j;
  8. int continuer = 1;
  9. SDL_Event event;
  10. SDL_Rect position, position2;
  11. perso = IMG_Load("mur.jpg" );
  12. perso2 = IMG_Load("robot.gif" );
  13. err = IMG_Load("err2.jpg" );
  14. pos.x = 0;
  15. pos.y = 0;
  16. pos2.x = 300;
  17. pos2.y = 300;
  18. SDL_BlitSurface(perso, NULL, ecran, &pos);
  19. SDL_BlitSurface(perso2, NULL, ecran, &pos2);
  20. SDL_EnableKeyRepeat(100, 100);
  21. while(continuer)
  22. {
  23.  SDL_WaitEvent(&event);
  24.  switch(event.type)
  25.  {
  26.  case SDL_QUIT:
  27.   continuer = 0;
  28.   break;
  29.  case SDL_KEYDOWN:
  30.   switch(event.key.keysym.sym)
  31.   {
  32.   case SDLK_UP:
  33.    pos2.y++;
  34.    break;
  35.   case SDLK_DOWN:
  36.    pos2.y--;
  37.    break;
  38.   case SDLK_RIGHT:
  39.    pos2.x++;
  40.    break;
  41.   case SDLK_LEFT:
  42.    pos2.x--;
  43.    break;
  44.   case SDLK_KP8:
  45.    pos.y--;
  46.    break;
  47.   case SDLK_KP2:
  48.    pos.y++;
  49.    break;
  50.   case SDLK_KP6:
  51.    pos.x++;
  52.    break;
  53.   case SDLK_KP4:
  54.    pos.x--;
  55.    break;
  56.   }
  57.  }
  58.  position.x = pos.x * BLOC;
  59.  position.y = pos.y * BLOC;
  60.  position2.x = pos2.x * BLOC;
  61.  position2.y = pos2.y * BLOC;
  62.  SDL_BlitSurface(perso2, NULL, ecran, &position2);
  63.  SDL_BlitSurface(perso, NULL, ecran, &position);
  64.  SDL_Flip(ecran);
  65. }
  66. SDL_EnableKeyRepeat (0, 0);
  67. }


Mais où est le problème ?   :??:


Message édité par mahery le 08-01-2010 à 19:04:23
Reply

Marsh Posté le 08-01-2010 à 18:51:26   

Reply

Marsh Posté le 08-01-2010 à 19:48:25    

Ça vaut quoi BLOC ? Si c'est 40, il n'y aurait pas des chances pour que position2 soit hors écran (parce que 300 * 40 = 12000).

Reply

Marsh Posté le 08-01-2010 à 20:08:25    

tpierron a écrit :

Ça vaut quoi BLOC ? Si c'est 40, il n'y aurait pas des chances pour que position2 soit hors écran (parce que 300 * 40 = 12000).


En effet ça fait 40.
Mais après compilation le sprite s'affiche bien à (300;300).
En fait position2 n'est pas hors écran mais tout simplement ne varie pas.  :??:  

Reply

Marsh Posté le 08-01-2010 à 20:22:27    

mahery a écrit :


En effet ça fait 40.
Mais après compilation le sprite s'affiche bien à (300;300).
En fait position2 n'est pas hors écran mais tout simplement ne varie pas.  :??:  


 
Bah ouais, parce qu'avant la boucle de gestion des événements tu positionnes ton image perso2 à 300x300.

Reply

Marsh Posté le 08-01-2010 à 20:31:06    

Oui mais quand j'utilise les flèches pour bouger le sprite il reste immobile; dans ce cas là il devrait disparaitre.

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed