Salut !
Je souhaite débuter un jeu avec SDL en C++, seulement lorsque je blitte une image elle n'apparaît pas sur la surface maîtresse...
Pourtant les arguments que je passe à la fonction sont corrects :
Voici donc mon code complet, c-à-d le "main.cpp" gérant les évenements, "classes.h" en tant que header, et "classes.cpp" qui définit une classe Warrior servant à créer un guerrier idiomatiquement nommé Link
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 (&SDL_Surafce, &SDL_Rect, &SDL_Surface, &SDL_Rect)Notez que le fichier "link.gif" existe bien et que le problème ne vient donc pas de là...
main.cpp
classes.h
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 #include "classes.h" int main ( int argc, char** argv ) { bool done; SDL_Init(SDL_INIT_VIDEO); SDL_EnableKeyRepeat(10, 10); atexit(SDL_Quit); SDL_Surface *ecran = SDL_SetVideoMode(640, 480, 16, SDL_HWSURFACE|SDL_DOUBLEBUF); Warrior link = Warrior(); done = false; while (!done) { SDL_Event event; while (SDL_PollEvent(&event)) { switch (event.type) { case SDL_QUIT: done = true; break; case SDL_KEYDOWN: { switch(event.key.keysym.sym) { case SDLK_ESCAPE: done = true; break; case SDLK_DOWN: link.setPos(2, 0); break; case SDLK_UP: link.setPos(-2, 0); break; } break; } } } SDL_FillRect(ecran, 0, SDL_MapRGB(ecran->format, 255, 255, 255)); SDL_BlitSurface(link.getSurface(), &(link.getSize()), ecran, &(link.getPos())); SDL_Flip(ecran); } printf("Programme terminee avec succes\n"); return 0; }
classes.cpp
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 #include <iostream> #include <SDL/SDL.h> #include <SDL/SDL_image.h> class Warrior { public: Warrior(); Warrior& setPos(int x, int y); SDL_Rect getPos(); SDL_Rect getSize(); SDL_Surface* getSurface(); private: SDL_Rect pos; SDL_Rect size; SDL_Surface* surf; int dir; /* 0 = bas; 1 = haut; 2 = droite; 3 = gauche;*/ };
Je ne vois vraiment pas où est le problème... pourquoi j'ai toujours des ennuis avec les classes
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 #include "classes.h" Warrior::Warrior() { pos.x = 640/2 - 32/2; pos.y = 480/2 - 32/2; size.x = 0; size.w = 30; surf = IMG_Load("../link.gif"); dir = 0; } Warrior& Warrior::setPos(int x, int y) { pos.x += x; pos.y += y; return *this; } SDL_Rect Warrior::getPos() { return pos; } SDL_Rect Warrior::getSize() { return size; } SDL_Surface* Warrior::getSurface() { return surf; }...
Merci d'avance.







Répondre avec citation
Partager