IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

SDL Discussion :

Probleme d'afficage fenetre SDL


Sujet :

SDL

  1. #1
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Juin 2004
    Messages
    54
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2004
    Messages : 54
    Points : 32
    Points
    32
    Par défaut Probleme d'afficage fenetre SDL
    Bonjour a tous

    voila j'ai recopie un programme de langage c avec SDL du net juste pour essayer de comprendre le deplacement des images

    le probleme c'est que l'orsque j'execute ce programme la fenetre s'ouvre et se ferme directement

    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
     
    #include <stdlib.h>
    #include <SDL.h>
    #include<SDL_image.h>
    int main(int argc, char *argv[])
    {
        SDL_Surface *screen, *image;
    	SDL_Rect dst, dstblue;
        SDL_Event event;
    	Uint8 *keys;
    	int tuxX = 50, tuxY = 50;
        bool done = false;
        if(SDL_Init(SDL_INIT_VIDEO) <0)
        {
            printf("Can't init SDL:  %s\n", SDL_GetError());
            exit(1);
        }
        atexit(SDL_Quit); 
        screen = SDL_SetVideoMode(640, 480, 16, SDL_HWSURFACE | SDL_DOUBLEBUF);
        SDL_FillRect(screen, NULL, SDL_MapRGB(screen->format, 0, 0, 255));
        if(screen == NULL)
        {
            printf("Can't set video mode: %s\n", SDL_GetError());
            exit(1);
        }
        image = SDL_LoadBMP("fab1.bmp");
        if(image == NULL)
        {
            printf("Can't load image of tux: %s\n", SDL_GetError());
            exit(1);
        }	
    	dst.w = image->w;
    	dst.h = image->h;
    	dstblue.w = image->w + 1;
    	dstblue.h = image->h + 1;
        SDL_SetColorKey(image, SDL_SRCCOLORKEY, SDL_MapRGB(image->format, 255, 0, 255));    
        while(!done)
     
        {
            while(SDL_PollEvent(&event))
            { 
     
                switch(event.type)
                {
                    case SDL_QUIT:
                    done = true;
                    break;
                }
            }
    		keys = SDL_GetKeyState(NULL);
    		if(keys[SDLK_UP])
    		{
    			if(tuxY > 10)
    				tuxY--;
    		}
    		if(keys[SDLK_DOWN])
    		{
    			if(tuxY < 470 - image->h)
    				tuxY++;
    		}
    		if(keys[SDLK_RIGHT])
    		{
    			if(tuxX < 630 - image->w)
    				tuxX++;
    		}
    		if(keys[SDLK_LEFT])
    		{
    			if(tuxX > 10)
    				tuxX--;
    		}
    		dst.x = tuxX;
    		dst.y = tuxY;
    		dstblue.x = tuxX - 1;
    		dstblue.y = tuxY - 1;
     
    		SDL_FillRect(screen, &dstblue, SDL_MapRGB(screen->format, 0, 0, 255));
    		SDL_BlitSurface(image, NULL, screen, &dst);
    		SDL_Flip(screen);
     
        }
     
     
        SDL_FreeSurface(image);
        return 0;
    }

    je pense que l'erreur vient de la boucle finale mais je n'arrive a trouver ou

    Merci pour vos réponses

  2. #2
    Membre éprouvé

    Homme Profil pro
    Étudiant
    Inscrit en
    Mars 2005
    Messages
    634
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : Suisse

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mars 2005
    Messages : 634
    Points : 1 205
    Points
    1 205
    Par défaut
    Chez moi ton programme compile. Es-tu sûr d'avoir mis ton image "fab1.bmp" dans le même répertoire que l'exécutable ? Sinon regarde les retours de fonctions, où est-ce que ça cloche.

  3. #3
    Expert éminent sénior

    Avatar de fearyourself
    Homme Profil pro
    Ingénieur Informaticien Senior
    Inscrit en
    Décembre 2005
    Messages
    5 121
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : Etats-Unis

    Informations professionnelles :
    Activité : Ingénieur Informaticien Senior
    Secteur : Industrie

    Informations forums :
    Inscription : Décembre 2005
    Messages : 5 121
    Points : 11 877
    Points
    11 877
    Par défaut
    Déjà, ce bout de code est dangereux... Le SDL_FillRect devrait être placé après le if...

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
        screen = SDL_SetVideoMode(640, 480, 16, SDL_HWSURFACE | SDL_DOUBLEBUF); 
        SDL_FillRect(screen, NULL, SDL_MapRGB(screen->format, 0, 0, 255)); 
        if(screen == NULL)
    Ensuite, si tu programmes sous windows, un fichier stdout.txt est créer, regarde s'il n'y pas eu de problème avec la création de la fenêtre ou avec le chargement de l'image fab1.bmp.

    Jc

  4. #4
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Juin 2004
    Messages
    54
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2004
    Messages : 54
    Points : 32
    Points
    32
    Par défaut
    salut


    merci pour la reponse et j'ai regarde dans le fichier stdout qui m'a marque une erreur sur le bmp qui n'arrivait pas a charger

    en effet le nom du bmp etait le mauvais nom

    j'ai change le nom et c 'est bon ca marche

    j'ai aussi change le SDL_FILLRECT apres le if

    voila
    merci beacoups

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Probleme d'ouverture fenetre
    Par Yjo dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 17/02/2006, 21h26
  2. Probleme de rafraichissement fenetre
    Par had182 dans le forum MFC
    Réponses: 6
    Dernier message: 10/01/2006, 11h34
  3. [XP Pro SP2] Probleme changement de fenetres
    Par romdelf dans le forum Autres Logiciels
    Réponses: 8
    Dernier message: 23/11/2005, 21h19
  4. Probleme de rafraichissement Fenetre Win32 ...
    Par miaw dans le forum OpenGL
    Réponses: 1
    Dernier message: 09/05/2005, 08h59
  5. [SDL] Integration fenetre SDL dans fenetre C# ?
    Par salammbo dans le forum OpenGL
    Réponses: 3
    Dernier message: 07/02/2005, 09h47

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo