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 :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
 
(&SDL_Surafce, &SDL_Rect, &SDL_Surface, &SDL_Rect)
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 Notez que le fichier "link.gif" existe bien et que le problème ne vient donc pas de là...

main.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
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.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
#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;*/
};
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
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;
}
Je ne vois vraiment pas où est le problème... pourquoi j'ai toujours des ennuis avec les classes ...

Merci d'avance.