mahery | 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 :
- int game(ecran)
- {
- SDL_Surface *perso2 = NULL;
- SDL_Rect pos2;
- SDL_Surface *perso = NULL;
- SDL_Rect pos;
- int i, j;
- int continuer = 1;
- SDL_Event event;
- SDL_Rect position, position2;
- perso = IMG_Load("mur.jpg" );
- perso2 = IMG_Load("robot.gif" );
- err = IMG_Load("err2.jpg" );
- pos.x = 0;
- pos.y = 0;
- pos2.x = 300;
- pos2.y = 300;
- SDL_BlitSurface(perso, NULL, ecran, &pos);
- SDL_BlitSurface(perso2, NULL, ecran, &pos2);
- SDL_EnableKeyRepeat(100, 100);
- while(continuer)
- {
- SDL_WaitEvent(&event);
- switch(event.type)
- {
- case SDL_QUIT:
- continuer = 0;
- break;
- case SDL_KEYDOWN:
- switch(event.key.keysym.sym)
- {
- case SDLK_UP:
- pos2.y++;
- break;
- case SDLK_DOWN:
- pos2.y--;
- break;
- case SDLK_RIGHT:
- pos2.x++;
- break;
- case SDLK_LEFT:
- pos2.x--;
- break;
- case SDLK_KP8:
- pos.y--;
- break;
- case SDLK_KP2:
- pos.y++;
- break;
- case SDLK_KP6:
- pos.x++;
- break;
- case SDLK_KP4:
- pos.x--;
- break;
- }
- }
- position.x = pos.x * BLOC;
- position.y = pos.y * BLOC;
- position2.x = pos2.x * BLOC;
- position2.y = pos2.y * BLOC;
- SDL_BlitSurface(perso2, NULL, ecran, &position2);
- SDL_BlitSurface(perso, NULL, ecran, &position);
- SDL_Flip(ecran);
- }
- SDL_EnableKeyRepeat (0, 0);
- }
|
Mais où est le problème ? Message édité par mahery le 08-01-2010 à 19:04:23
|