Bonjour,

Je suis nouveau et j'ai un problème avec mon code : j'ai un projet à faire pour mon école avec la SDL 2D et la SDL image et le problème est que je ne peux plus du tout déclarer de variable sinon mon programme met les images n'importe comment et le blitting ne se fait pas correctement.

Voici mon code :

Code : 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
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
#include <SDL/SDL.h>
#include <C:/Program Files (x86)/CodeBlocks/SDL/include/SDL_image.h>
#include "Ecran.h"
#include "SDL_audio.h"
#define _VV_ 15
 
int main ( int argc, char** argv )
{
    int tempsPrecedent = 0, Vitesse, continuer = 1;
    SDL_Event event;
    SDL_Rect coordonnees, Acoordonnees, fond;
    SDL_Surface  *ecran, *background, *avionA, *avion, *avionG, *avionD = NULL;
 
    coordonnees.x = 0;
    coordonnees.y = 0;
 
    fond.x = 140;
    fond.y = 13490;
 
    INIT();
    //chargement de la page, du nom de la page et de l'icone
    SDL_WM_SetIcon(IMG_Load("pack_images_sdz/iconejeu.bmp"), NULL);
    ecran = SDL_SetVideoMode(800, 600, 32, SDL_HWSURFACE | SDL_DOUBLEBUF);
 
    SDL_WM_SetCaption("Flying Shark",NULL);
    //chargement des images
    background = IMG_Load("pack_images_sdz/background.bmp");
    avion = IMG_Load("pack_images_sdz/plane.bmp");
    avionG = IMG_Load("pack_images_sdz/planeL.gif");
    avionD = IMG_Load("pack_images_sdz/planeR.gif");
 
 
    //Acoordonnees.x = (200) - (avion->w/2); //premier test pour la position mais changer,ne s'adaptai pas a l'écran
    // Acoordonnees.y = (450) - (avion->h/2);
 
    Acoordonnees.x = ecran->w/2 - avion->w/2;
    Acoordonnees.y = ecran->h/1.3 - avion->w/1.3;
 
    SDL_SetColorKey(avion, SDL_SRCCOLORKEY, SDL_MapRGB(avion->format, 0, 0, 0)); //gere la transparence
 
    SDL_EnableKeyRepeat(10, 10); // sert a gerer la fluidité des déplacements
 
    SDL_BlitSurface(avionA, NULL, ecran, &Acoordonnees);
    Vitesse = SDL_GetTicks();
        avionA = avion;
 
   while (continuer) // affichage
    {
    SDL_BlitSurface(background, &fond, ecran , &coordonnees);
    SDL_BlitSurface(avionA, NULL, ecran, &Acoordonnees);
    SDL_Flip(ecran);
 
    SDL_PollEvent(&event); //evenementiel
        switch(event.type)
        {
            case SDL_QUIT:
                continuer = 0;
            break;
            case SDL_KEYDOWN: // Si appui d'une touche
    if (SDL_GetTicks() - Vitesse > 30 )
    {
              switch (event.key.keysym.sym)
                {
                    case SDLK_ESCAPE: //Appui sur la touche Echap, on arrête le programme
                    continuer = 0;
                    break;
                    case SDLK_UP: //déplacement
                    avionA = avion;
                    Acoordonnees.y -=_VV_ ;
                    break;
                     case SDLK_DOWN:
                     avionA = avion;
                    Acoordonnees.y +=_VV_;
                    break;
                     case SDLK_RIGHT:
                     avionA = avionD;
                    Acoordonnees.x  +=_VV_ ;
                    break;
                     case SDLK_LEFT:
                     avionA = avionG;
                    Acoordonnees.x -=_VV_ ;
                    break;
                     case SDLK_SPACE:
                          ;
                    break; // evenementiel fin
                }
                Vitesse = SDL_GetTicks();
        }
                break;
                case SDL_KEYUP:
                    {
                        switch (event.key.keysym.sym)
                {
                    case SDLK_ESCAPE: //Appui sur la touche Echap, on arrête le programme
                    continuer = 0;
                    break;
                    case SDLK_UP: //déplacement
                    avionA = avion;
                    break;
                     case SDLK_DOWN:
                     avionA = avion;
                    break;
                     case SDLK_RIGHT:
                     avionA = avion;
                    break;
                     case SDLK_LEFT:
                     avionA = avion;
                    break;
                     case SDLK_SPACE:
                          ;
                    break; // evenementiel fin
                }
                Vitesse = SDL_GetTicks();
            }
      }
 
      if(Acoordonnees.x>ecran->w-avion->w) //calcul (pour que l'image ne sorte pas de l'écran)
          {
            Acoordonnees.x = ecran->w - avion->w;
          }
     else if(Acoordonnees.x<0)
        {
             Acoordonnees.x = 0;
        }
 
      if(Acoordonnees.y>ecran->h-avion->h)
          {
            Acoordonnees.y = ecran->h- avion->h;
          }
        else if(Acoordonnees.y<0)
      {
        Acoordonnees.y = 0;
      }
     if (SDL_GetTicks() - tempsPrecedent > 30 ) //la caméra monte dans le niveau
        {
            fond.y-=3;
            tempsPrecedent = SDL_GetTicks (); // le temps précédent devient le temps actuel pour la suite
        }
    }
 
    SDL_FreeSurface(avion);
    SDL_Quit();
 
    return EXIT_SUCCESS;
}

ps: INIT sert a charger SDL_INIT_VIDEO