Partage
  • Partager sur Facebook
  • Partager sur Twitter

Mon s'execute bien mais lorsque je l'arrete un message d'erreur apparait.

    17 avril 2006 à 9:25:32

    J'execute mon programe normalement mais lorsque je l'arrete(avec la croix) 5 secondes plus tard un message d'erreur apparait : "mariokart.exe a rencontré un probleme et doit fermer ..." et il me demande si je veux envoyer le rapport d'erreur ou non (j'ai mis non)

    voici mon code source :
    main.c
    #include <stdlib.h>
    #include <stdio.h>
    #include <SDL/SDL.h>
    #include <SDL/SDL_image.h>
    #include "constante.h"





    int main(int argc, char *argv[])
    {
        SDL_Surface *ecran = NULL, *menu = NULL;
        SDL_Rect positionMenu;
        SDL_Event event;

        int continuer = 1;

        SDL_Init(SDL_INIT_VIDEO);

        ecran = SDL_SetVideoMode(672, 436, 32, SDL_HWSURFACE | SDL_DOUBLEBUF);
        SDL_WM_SetCaption("Mario Kart", NULL);

        menu = SDL_LoadBMP("menu.bmp");
        positionMenu.x = 0;
        positionMenu.y = 0;

        while (continuer)
        {
            SDL_WaitEvent(&event);
            switch(event.type)
            {
                case SDL_QUIT:
                    continuer = 0;
                    break;
                case SDL_KEYDOWN:
                    switch(event.key.keysym.sym)
                    {
                        case SDLK_ESCAPE: // Veut arrêter le jeu
                            continuer = 0;
                            break;
                        case SDLK_KP1: // Demande à jouer
                            jouer(ecran);
                            break;
                    }
                    break;
            }

            // Effacement de l'écran
            SDL_FillRect(ecran, NULL, SDL_MapRGB(ecran->format, 0, 0, 0));
            SDL_BlitSurface(menu, NULL, ecran, &positionMenu);
            SDL_Flip(ecran);
        }

        SDL_FreeSurface(menu);
        SDL_Quit();

        return EXIT_SUCCESS;
    }

    constante.h
        #define BAS  1
        #define HAUT  2
        #define GAUCHE  3
        #define DROITE  4

    jeu.c
    #include <stdlib.h>
    #include <stdio.h>
    #include <SDL/SDL.h>
    #include <SDL/SDL_image.h>
    #include "constante.h"

    void jouer(SDL_Surface* ecran)
    {
        SDL_Surface *voiture = NULL, *circuit = NULL;
        long vitesse = 1;
        long positionactuel = DROITE;
        long turbo = 0;
        SDL_Rect positionVoiture;
        SDL_Rect positionFond;
        SDL_Event event;
        int continuer = 1;






        voiture = SDL_LoadBMP("yoshi.bmp");
        circuit = SDL_LoadBMP("circuit.bmp");
        SDL_SetColorKey(voiture, SDL_SRCCOLORKEY, SDL_MapRGB(voiture->format, 255, 255, 255));
        positionFond.x = 0;
        positionFond.y = 0;
        positionVoiture.x = 70;
        positionVoiture.y = 75;
        SDL_EnableKeyRepeat(10, 10); /* Activation de la répétition des touches */


                while (continuer)
        {
            SDL_WaitEvent(&event);
            switch(event.type)
            {
                case SDL_QUIT:
                    continuer = 0;
                    break;
                case SDL_KEYUP:
                    switch(event.key.keysym.sym)
                    {

                        case SDLK_UP:


                            positionVoiture.y  -= 2;
                            vitesse = 1;
                            break;
                        case SDLK_DOWN:


                            positionVoiture.y += 2;
                            vitesse = 1;
                            break;
                        case SDLK_RIGHT:


                            positionVoiture.x += 2;
                            vitesse = 1;
                            break;
                        case SDLK_LEFT:


                            positionVoiture.x -= 2;
                            vitesse = 1;
                            break;
                    }
                     break;
                case SDL_KEYDOWN:
                    switch(event.key.keysym.sym)
                    {
                            case SDLK_ESCAPE: // Veut arrêter le jeu
                            continuer = 0;
                            break;
                        case SDLK_UP:
                        voiture = SDL_LoadBMP("yoshidos.bmp");
                        vitesse += 1;
                        positionactuel = HAUT;


                            positionVoiture.y  -= vitesse;
                            break;
                        case SDLK_DOWN:
                        voiture = SDL_LoadBMP("yoshiface.bmp");
                        vitesse += 1;
                        positionactuel = BAS;

                            positionVoiture.y += vitesse;
                            break;
                        case SDLK_RIGHT:
                        voiture = SDL_LoadBMP("yoshi.bmp");
                        vitesse += 1;
                        positionactuel = DROITE;

                            positionVoiture.x += vitesse;
                            break;
                        case SDLK_LEFT:
                            voiture = SDL_LoadBMP("yoshigauche.bmp");
                            vitesse += 1;
                            positionactuel = GAUCHE;

                            positionVoiture.x -= vitesse;
                            break;
                        case SDLK_f:
                            vitesse -= 1;
                            break;
                        case SDLK_t:
                            if(turbo == 0 )
                            {
                            if(positionactuel == GAUCHE)
                            {
                            positionVoiture.x -= 150;
                            turbo = 1;
                            }
                            if(positionactuel == DROITE)
                            {
                            positionVoiture.x += 150;
                            turbo = 1;
                            }
                            if(positionactuel == BAS)
                            {
                            positionVoiture.y += 150;
                            turbo = 1;
                            }
                            if(positionactuel == HAUT)
                            {
                            positionVoiture.y -= 150;
                            turbo == 1;
                            }
                            }
                            if(turbo == 1)
                            {
                            }
                            break;
                        case SDLK_q:
                            vitesse += 1;
                            break;

                    }
                    break;
            }






            SDL_SetColorKey(voiture, SDL_SRCCOLORKEY, SDL_MapRGB(voiture->format, 255, 0, 0));
            SDL_BlitSurface(circuit, NULL, ecran, &positionFond);
            SDL_BlitSurface(voiture, NULL, ecran, &positionVoiture);

            SDL_Flip(ecran);

        }
        SDL_FreeSurface(voiture);
        SDL_FreeSurface(circuit);
        SDL_Quit();


    }
    • Partager sur Facebook
    • Partager sur Twitter
      17 avril 2006 à 9:29:42

      Enlève le SDL_Quit() de la fonction "jouer"/
      • Partager sur Facebook
      • Partager sur Twitter
        17 avril 2006 à 10:39:45

        Merci beaucoup c'etait sa.
        J'aurai du mieux regarder mon code avant de poster.
        • Partager sur Facebook
        • Partager sur Twitter

        Mon s'execute bien mais lorsque je l'arrete un message d'erreur apparait.

        × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
        × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
        • Editeur
        • Markdown