Partage
  • Partager sur Facebook
  • Partager sur Twitter

erreur incompréhensible

    25 juillet 2006 à 23:17:28

    Bonjours tout le monde:

    Comme auujourd'hui je suis d'humeur flemmarde et que je comprend pas ce qui m'arrive je n'expliquerais pas mon problème :D
    Peut etre parce que je le comprend pas :(

    Image utilisateur

    Si vous connaissez ce type d'erreur pouvez vous me dire a quoi elle peuvent etre dû
    Si vous avez besoin d'infos demandez ^^

    Sinon pour infos evenementSuperPacman est une fonction de evenements.c (dailleur c'est la seul de evenements.c)
    L'accolade ligne 17 correcpond a 'louverture de ma fonction
    ligne 19 et 20 c'est des variables de la fonction

    avant je n'avais jamais eut ce type d'erreur c'est au moment ou j'ai crée une nouvelle fonction dans jeu.c que toutes ces erreurs sont apparus

    Merci d'avance de votre aide :)
    • Partager sur Facebook
    • Partager sur Twitter
      25 juillet 2006 à 23:19:26

      Si tu nous montrais ton code .... :p
      • Partager sur Facebook
      • Partager sur Twitter
        25 juillet 2006 à 23:23:14

        Je sais qu'il n'y a pas d'erreur dans evenementsSuperPacman car j'ai rien changé
        Je pense que cela vient d'une interaction de donnée entre cette fonction et ma nouvelle fonction

        evenementSuperPacman
        #include <stdlib.h>
        #include <stdio.h>
        #include <SDL/SDL.h>
        #include <SDL/SDL_image.h>
        #include <time.h>

        #include "constante.h"
        #include "jeu.h"
        #include "fantome.h"
        #include "fichier.h"
        #include "deplacement.h"
        #include "evenements.h"

        int evenementSuperPacman(int carte[][NB_BLOCS_HAUTEUR], SDL_Rect *positionJoueur,
            SDL_Rect positionFantome[], int *superPacman, Uint32 *tempsSuperPacman,
             int *positionBM, SDL_Rect positionBoule_magique[], int *nbBoule_Magique)
        {
            int k=0, i=0, j=0;
            Uint32 tempsActuel = 0;
            FILE *fichier = NULL;

            /*recherche de la position des boules magique*/
            if(*positionBM == 0)
            {
                for(i=0; i < NB_BLOCS_LARGEUR; i++)
                {
                    for(j=0; j < NB_BLOCS_HAUTEUR; j++)
                    {
                        switch(carte[i][j])
                        {
                            case BOULE_MAGIQUE:
                                positionBoule_magique[k].x = i;
                                positionBoule_magique[k].y = j;
                                k++;
                                *nbBoule_Magique = k;
                                break;
                        }
                    }
                }
                *positionBM = 1;
            }

            fichier = fopen("test.txt", "w");
            if(fichier != NULL)
            {
                fprintf(fichier, "position 1 %ld %ld, position 2 %ld %ld, position 3 %ld %ld", positionBoule_magique[0].x, positionBoule_magique[0].y, positionBoule_magique[1].x, positionBoule_magique[1].y, positionBoule_magique[2].x, positionBoule_magique[2].y);

                fclose(fichier);
            }


            //si pacman prend une des boulles magique
            for(k=0; k< *nbBoule_Magique; k++)//on teste toute les position des boules et on regarde si pacman est dessus
            {
                if(((positionJoueur->x) == positionBoule_magique[k].x) &&
                    ((positionJoueur->y) == positionBoule_magique[k].y))
                {
                    *tempsSuperPacman = SDL_GetTicks();//on initialise au temps actuel
                    *superPacman = 1;
                }
            }

            tempsActuel = SDL_GetTicks();//le temps actuel est actualisé
            if((tempsActuel - *tempsSuperPacman) > SUPER)
                *superPacman = 0;

            //si le fantome et pacman se touchent
            if((positionJoueur->x == positionFantome[VERT].x) && (positionJoueur->y == positionFantome[VERT].y))
            {
                if(((tempsActuel - *tempsSuperPacman) < SUPER) && (*superPacman == 1))//si il y a moins de 20 seconde entre le contact ac le fantome et la boule
                {
                    positionFantome[VERT].x = 12;//le fantome se retrouve téléporter au milieu du jeu
                    positionFantome[VERT].y = 9;
                }
                else//si il y a plus de 20secondes le fantome mange pacman donc on arrete le jeu
                    return 0;
            }
            if((positionJoueur->x == positionFantome[JAUNE].x) && (positionJoueur->y == positionFantome[JAUNE].y))
            {
                if(((tempsActuel - *tempsSuperPacman) < SUPER) && (*superPacman == 1))//si il y a moins de 20 seconde entre le contact ac le fantome et la boule
                {
                    positionFantome[JAUNE].x = 13;//le fantome se retrouve téléporter au milieu du jeu
                    positionFantome[JAUNE].y = 9;
                }
                else//si il y a plus de 20secondes le fantome mange pacman donc on arrete le jeu
                    return 0;
            }
            return 1;
        }




        IA_Fantome
        void IA_fantomes(long mouvementFantome[],SDL_Rect *positionJoueur, SDL_Rect positionFantome[])
        {
            long min = HAUT, max = DROITE;
            int haut = 0, bas=0, gauche=0, droite=0;
            int choixMouvement=0;
            SDL_Rect vision;

            /*gere le champs de vision du fantome jaune*/
            vision.x = positionJoueur->x-(positionFantome[JAUNE].x-3);
            vision.y = positionJoueur->y-(positionFantome[JAUNE].y-2);

            //gere le mouvement du fantome vert
            srand(time(NULL)%SDL_GetTicks());
            mouvementFantome[VERT] = (rand() % (max - min + 1)) + min;//on défini aléatoirement le mouvement


            //gere le mouvement du fantome jaune
            if((vision.x >=0 && vision.x < 7)&&(vision.y >=0 && vision.y < 5))//si le pacman est dans le champs de vision
            {
                if(positionJoueur->x < positionFantome[JAUNE].x)//si pacman est derriere fantome
                {
                    gauche  += 5;//la probabilité du mouvement haut est augmenté au max
                    haut    += 3;
                    bas     += 3;
                    droite  += 1;
                }
                else if(positionJoueur->x > positionFantome[JAUNE].x)//si pacman est devant fantome
                {
                    droite   += 5;
                    haut     += 3;
                    bas      += 3;
                    gauche   += 1;
                }
                if(positionJoueur->y < positionFantome[JAUNE].y)//si pacman est dessus fantome
                {
                    haut    += 5;
                    gauche  += 3;
                    droite  += 3;
                    bas     += 1;
                }
                else if(positionJoueur->y > positionFantome[JAUNE].y)//si pacman est dessous fantome
                {
                    bas     += 5;
                    gauche  += 3;
                    droite  += 3;
                    haut    += 1;
                }

                max = haut + bas + gauche + droite;

                srand(time(NULL)%SDL_GetTicks()*2%SDL_GetTicks());
                choixMouvement = (rand() % (max - min + 1)) + min;

                if(choixMouvement < haut)
                    mouvementFantome[JAUNE] = HAUT;
                if(coixMouvement <( haut + bas))
                    mouvementFantome[JAUNE] = BAS;
                if(choixMouvement < (haut + bas + gauche))
                    mouvementFantome[JAUNE] = GAUCHE;
                if(coixMouvement <( haut + bas + gauche + droite))
                    mouvementFantome[JAUNE] = DROITE;

            }
            else
            {
                min = HAUT;
                max = DROITE;
                srand(time(NULL)%SDL_GetTicks()*2%SDL_GetTicks());//on definit améatoirement le mouvement si pacman
                mouvementFantome[JAUNE] = (rand() % (max - min + 1)) + min;//n'est pas dans le champ de vision
            }
        }
        • Partager sur Facebook
        • Partager sur Twitter
          25 juillet 2006 à 23:55:16

          Citation : théoden



          int evenementSuperPacman(int carte[][NB_BLOCS_HAUTEUR], SDL_Rect *positionJoueur,
              SDL_Rect positionFantome[], int *superPacman, Uint32 *tempsSuperPacman,
               int *positionBM, SDL_Rect positionBoule_magique[], int *nbBoule_Magique)
          {

          Sans dec, tu trouves ça lisible ?

          int evenementSuperPacman (int carte[][NB_BLOCS_HAUTEUR]
                                    , SDL_Rect *positionJoueur
                                    , SDL_Rect positionFantome[]
                                    , int *superPacman
                                    , Uint32 *tempsSuperPacman
                                    , int *positionBM
                                    , SDL_Rect positionBoule_magique[]
                                    , int *nbBoule_Magique)
          {
             ...
          }

          Non ?
          • Partager sur Facebook
          • Partager sur Twitter
          Music only !
            26 juillet 2006 à 0:02:38

            Dans mon code sa tient sur 3lignes et c'est très propre (pour moi) et ces trois lignes ne dépasse pas la barre des 80colonnes
            Mais c'est vrai que c'est plus lisisble
            • Partager sur Facebook
            • Partager sur Twitter
              26 juillet 2006 à 1:20:19

              Il faudrait voir s'il n'y a pas de multiples inclusions des fichiers .h (Je pense fortement que oui).
              • Partager sur Facebook
              • Partager sur Twitter
                26 juillet 2006 à 6:37:24

                verifie que tu a exactement la meme definition de ta fonction dans le .h que dans le .c
                • Partager sur Facebook
                • Partager sur Twitter

                erreur incompréhensible

                × 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