Soucis de SDL

brounchix Messages postés 5 Statut Membre -  
brounchix Messages postés 5 Statut Membre -
Bonjour,

Je suis un débutant en programmation en SDL, et il se trouve que j'ai un soucis quand à la création d'une fenêtre de base, sos Dev C++.

La compilation fonctionne correctement, mais le programme ne se met pas en pause, il s'éxécute et quitte instantanément.

Je voulais afficher un titre ainsi qu'une image de fond, mais du coup je ne sais pas si cela fonctione correctement, en théorie mon code est bon puisqu'il se compile sans érreur. Cela dit, j'ai du manquer quelque chose pour la fonction pause. Je vous laisse le code:

#include <stdlib.h>
#include <stdio.h>
#include <SDL/SDL.h>

void pause();

int main(int argc, char *argv[])
{
SDL_Surface *ecran = NULL, *imageDeFond = NULL;
SDL_Rect positionFond;

positionFond.x = 0;
positionFond.y = 0;

SDL_Init(SDL_INIT_VIDEO);

SDL_SetVideoMode(640, 480, 32, SDL_HWSURFACE);
SDL_WM_SetCaption("Test", NULL);

imageDeFond = SDL_LoadBMP("Fresh.bmp");
SDL_BlitSurface(imageDeFond, NULL, ecran, &positionFond);

SDL_Flip(ecran);
pause();

SDL_FreeSurface(imageDeFond);
SDL_Quit();

return EXIT_SUCCESS;
}
void pause()
{
int continuer = 1;
SDL_Event event;

while (continuer)
{
SDL_WaitEvent(&event);
switch(event.type)
{
case SDL_QUIT:
continuer = 0;
}
}
}
Configuration: Windows XP
Internet Explorer 7.0

6 réponses

  1. Kelly
     
    Ce serait pas system("PAUSE"); qu'il faudrait utiliser?
    0
  2. brounchix Messages postés 5 Statut Membre
     
    Systeme("PAUSE"); de la même manière que sur la console?
    0
  3. Kelly
     
    oui je crois, met un system("PAUSE"); la ou tu veux que ton programme fasse une pause, il faudra taper sur une touche pour qu'il se réenclenche
    0
  4. brounchix Messages postés 5 Statut Membre
     
    Je te remercie pour tes réponses, mais apparement la fonction system("PAUSE"); ne résoud rien, j'ai modifié mon code pour mettre:

    SDL_Flip(ecran);
    sytem("PAUSE");

    SDL_FreeSurface(imageDeFond);
    SDL_Quit();

    return EXIT_SUCCESS;
    }

    Sans aucun succès, apres peut-être faut-il que je supprime mon dernier morceau de code, à partir du second Void pause () ou que je place ma fonction system("PAUSE"); autre part...
    0
  5. Vous n’avez pas trouvé la réponse que vous recherchez ?

    Posez votre question
  6. legulysse Messages postés 123 Statut Membre 15
     
    plop,

    Ta variable écran n'est pas initialisée. Essaye en ajoutant ceci à la place de ton setVideoMode :
    ecran =  SDL_SetVideoMode(640, 480, 32, SDL_HWSURFACE);
    0
  7. brounchix Messages postés 5 Statut Membre
     
    Merci beaucoup pour ta réponse, car là était mon probleme et ca fonctionne correctement maintenant, merci.

    Je peux prendre ton adresse msn au cas ou j'ai d'autre soucis?
    0