Bonjour, je débute dans le C, est je voudrais savoir comment faire déplacer un sprites (4 images) dans chacune des directions (gauche, droite, haut et bas).

J'ai essayer de faire quelque chose, mais comme vous le devinez, sa ne marche pas. Sinon, je ne serait pas ici. ^^'

Voila, mon code : main.c

Code C : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
 
#include <stdio.h>
#include <stdlib.h>
#include <SDL/SDL.h>
#include <SDL/SDL_image.h>
 
enum {HAUT, BAS, GAUCHE, DROITE};
 
int main(int argc, char *argv[])
{
void jeux(SDL_Surface* ecran)
{
    SDL_Surface *mario[4] = {NULL}; // 4 surfaces pour chacune des directions de Mario
    SDL_Surface *marioActuel = NULL, *largeur_positionMario, *hauteur_positionMario;
   SDL_Rect position, positionMario;
positionMario.x = 30;
positionMario.y = 30;
    SDL_Event event;
    int continuer = 1;
 
    SDL_Init(SDL_INIT_VIDEO);
 
    ecran = SDL_SetVideoMode(640, 480, 32, SDL_HWSURFACE);
    SDL_WM_SetCaption("Deplacer Mario sur un ecran blanc !", NULL);
 
    /* Chargement des images */
    mario[BAS] = IMG_Load("mario_bas.gif");
    mario[GAUCHE] = IMG_Load("mario_gauche.gif");
    mario[HAUT] = IMG_Load("mario_haut.gif");
    mario[DROITE] = IMG_Load("mario_droite.gif");
    marioActuel = mario[BAS]; // Mario sera dirigé vers le bas au départ
 
   /* On centre Mario à l'écran */
 
position.x = positionMario.x * 12;
position.y = positionMario.y * 12;
 
 
 
SDL_EnableKeyRepeat(10, 10);
 
    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: // Flèche haut
                        positionMario.y--;
                        break;
                    case SDLK_DOWN: // Flèche bas
                        positionMario.y++;
                        break;
                    case SDLK_RIGHT: // Flèche droite
                        positionMario.x++;
                        break;
                    case SDLK_LEFT: // Flèche gauche
                        positionMario.x--;
                        break;
                }
                break;
        }
 
        SDL_FillRect(ecran, NULL, SDL_MapRGB(ecran->format, 255, 255, 255)); /* On efface l'écran */
        SDL_BlitSurface(marioActuel, NULL, ecran, &positionMario); /* On place Mario à sa nouvelle position */
        SDL_Flip(ecran); /* On met à jour l'affichage */
    }
 
    SDL_FreeSurface(marioActuel);
    SDL_Quit();
}
}

Merci d'avance à ceux qui vont me permettre de corriger mes erreurs.