Partage
  • Partager sur Facebook
  • Partager sur Twitter

erreur dans mon script

    14 août 2006 à 17:18:24

    Bonjour à tous les zéros :)

    J'ai une fonction qui a pour but de charger une carte. J'ai voulu vérifier que la carte était bien chargé avec une fonction pause mais ma fenetre s'ouvrait puis se fermait sans pause. En déplaçant la fonction pause j'ai vu que le programme s'arrêtait toujours juste apres avoir chargé le fichier contenant la carte (je suis CERTAIN que le fichier appelé existe dans le même dossier que le projet et que je ne me suis pas trompé de nom de fichier).

    Voici le code:

    Citation : code:

    void pause();
    int loadLevel(int carte[][NB_CASES_HAUTEUR], int level, SDL_Surface *ecran)
    {
    int i=0, j=0;
    char ligneFichier[NB_CASES_LARGEUR*NB_CASES_HAUTEUR+1]={0};
    SDL_Rect position;
    SDL_Surface *mur=NULL, *vide=NULL, *obstacle=NULL, *boule=NULL, *tp=NULL;
    vide=IMG_Load("vide.gif");
    mur=IMG_Load("mur.gif");
    obstacle=IMG_Load("obstacle.gif");
    boule=IMG_Load("boule.gif");
    tp=IMG_Load("TP.gif");

    FILE* fichier = NULL;

    fichier=fopen("level.lvl", "r");
    if(fichier==NULL)
    exit(EXIT_FAILURE);
    pause();

    fgets(ligneFichier, NB_CASES_LARGEUR*NB_CASES_LARGEUR+1, fichier);


    for(i=0;i<NB_CASES_LARGEUR;i++)
    {
    for(j=0;j<NB_CASES_HAUTEUR;j++)
    {
    position.x=i;
    position.y=j;
    switch(ligneFichier[i*NB_CASES_LARGEUR+j])
    {
    case '0':
    carte[i][j]=0;
    SDL_BlitSurface(vide, NULL, ecran, &position);
    break;
    case '1':
    carte[i][j]=1;
    SDL_BlitSurface(mur, NULL, ecran, &position);
    break;
    case'2':
    carte[i][j]=2;
    SDL_BlitSurface(obstacle, NULL, ecran, &position);
    break;
    case'3':
    carte[i][j]=3;
    SDL_BlitSurface(boule, NULL, ecran, &position);
    break;
    case'4':
    carte[i][j]=4;
    SDL_BlitSurface(tp, NULL, ecran, &position);
    break;
    case'5':
    carte[i][j]=5;
    }
    }
    }

    fclose(fichier);
    SDL_Flip(ecran);

    return 1;
    }



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

    while (continuer)
    {
    SDL_WaitEvent(&event);
    switch(event.type)
    {
    case SDL_QUIT:
    continuer = 0;
    }
    }

    }



    (dans ce code le programme n'atteint pas la fonction pause)
    Pourriez-vous m'aider à trouver mon erreur? :-°
    Merci d'avance ^^
    • Partager sur Facebook
    • Partager sur Twitter
      14 août 2006 à 17:20:40

      On veux bien t'aider évidemment :)
      Mais alors tu utilise les balises de code et l'indentation pour que ton code soit plus lisible. Si tu ne sais pas ce que c'est il y a un post-it expliquant les règles du forum
      • Partager sur Facebook
      • Partager sur Twitter
        14 août 2006 à 17:30:39

        Fait voir ton fichier level.lvl
        • Partager sur Facebook
        • Partager sur Twitter
          14 août 2006 à 17:35:20

          Et aussi ton code est si long que sa ?
          Parceque sinon sa serait pas mal que tu nous mette ton code en entier ;)
          • Partager sur Facebook
          • Partager sur Twitter
            14 août 2006 à 17:36:11

            Voilà ça sera surement plus présentable que le paté noir de tout à l'heure
            Désolé du manquement aux règles :-°



            #include <stdlib.h>
            #include <stdio.h>
            #include <SDL/SDL.h>
            #include <SDL/SDL_image.h>
            #include "main.h"
            #include "loadLevel.h"
            void pause();

            int loadLevel(int carte[][NB_CASES_HAUTEUR], int level, SDL_Surface *ecran)
            {
                 
                 int i=0, j=0;   
                 char ligneFichier[NB_CASES_LARGEUR*NB_CASES_HAUTEUR+1]={0};
                 SDL_Rect position;
                 SDL_Surface *mur=NULL, *vide=NULL, *obstacle=NULL, *boule=NULL, *tp=NULL;
                 vide=IMG_Load("vide.gif");
                 mur=IMG_Load("mur.gif");
                 obstacle=IMG_Load("obstacle.gif");
                 boule=IMG_Load("boule.gif");
                 tp=IMG_Load("TP.gif");
                 
                 FILE* fichier = NULL;

                 fichier=fopen("level.lvl", "r");
                 if(fichier==NULL)
                 exit(EXIT_FAILURE);
                    pause();
                 
                 
                 fgets(ligneFichier, NB_CASES_LARGEUR*NB_CASES_LARGEUR+1, fichier);
               
                 
                 for(i=0;i<NB_CASES_LARGEUR;i++)
                 {
                       for(j=0;j<NB_CASES_HAUTEUR;j++)
                       {
                       position.x=i;
                       position.y=j;
                                switch(ligneFichier[i*NB_CASES_LARGEUR+j])
                                {
                                       case '0':
                                            carte[i][j]=0;
                                            SDL_BlitSurface(vide, NULL, ecran, &position);
                                            break;
                                       case '1':
                                            carte[i][j]=1;
                                            SDL_BlitSurface(mur, NULL, ecran, &position);
                                            break;
                                       case'2':
                                            carte[i][j]=2;
                                            SDL_BlitSurface(obstacle, NULL, ecran, &position);
                                            break;
                                       case'3':
                                            carte[i][j]=3;
                                            SDL_BlitSurface(boule, NULL, ecran, &position);
                                            break;
                                       case'4':
                                            carte[i][j]=4;
                                            SDL_BlitSurface(tp, NULL, ecran, &position);
                                            break;
                                       case'5':
                                            carte[i][j]=5;
                                }
                       }
                 }
                 
                 fclose(fichier);
                 SDL_Flip(ecran);
             
                 return 1;
                 
                 
                   
                         }
                         
                         
                         
                         
                         






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

                while (continuer)
                {
                    SDL_WaitEvent(&event);
                    switch(event.type)
                    {
                        case SDL_QUIT:
                            continuer = 0;
                    }
                }

            }



            Citation : contenu de level.lvl

            1111111141111111111110000000000000000001100000000000000200011000000020000000200110000000000000000001100000000000000000010000000000001100000000000000220011000000000020000000110000000000000020001100000200000000000211000000000000000000112000000200000000001100020000000000000011000000000000002000110000002000000000001100000000000000200011000000002000000000111111111111111111111



            le tout sans retour à la ligne
            • Partager sur Facebook
            • Partager sur Twitter
              15 août 2006 à 11:06:16

              je sais, ca m'arrive aussi, tu met

              if(fichier==NULL) {
              exit(EXIT_FAILURE);
              }
              pause();

              et la si ca plante encore c'est parce que tu as oublié un break; a case 5: dans ton switch

              [edit]

              et le blit surface aussi ( mais la c'est toi qui voit s'il le faut ou pas )
              • Partager sur Facebook
              • Partager sur Twitter

              erreur dans mon script

              × 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