Partage
  • Partager sur Facebook
  • Partager sur Twitter

Probleme pour charger un niveau dans un jeu

ça retourne 0

Sujet résolu
    24 mai 2006 à 21:12:29

    Salut, pour un jeu, il faut que je souvegarde et charge des niveaux, alors j'ai fais 2 fonctions qui ressemblent à celles du Mario Sokoban, mais elles ne fonctionnent pas :( ça renvoie 0 à chaque fois.
    Voici mon code:
    #include <stdio.h>
    #include <stdlib.h>
    #include <SDL/SDL.h>
    #include <SDL/SDL_image.h>
    #include <SDL/SDL_ttf.h>

    #include "constantes.h"
    #include "fichiers.h"


    int sauver(int niveau[][NB_BLOCS_HAUTEUR], int type)
    {

        FILE *fichier = NULL;
        int i = 0, j = 0;

        if(type == AVENTURE)
        {
            fichier = fopen("LVL/vosNiveaux.lvl", "a");
        }
        else if(type == DEFIS)
        {
            fichier = fopen("LVL/vosDefis.lvl", "a");
        }

            if(fichier == NULL)
                return 0;

        for (i = 0; i < NB_BLOCS_LARGEUR; i++)
        {
            for (j = 0; j < NB_BLOCS_HAUTEUR; j++)
            {
                fprintf(fichier, "%d ", niveau[i][j]);
            }
        }

        fputc('\n', fichier);


        fclose(fichier);
        return 1;


    }

    //----------------------------------------------------------------------------
    //----------------------------------------------------------------------------


    int charger(int niveau[][NB_BLOCS_HAUTEUR], int numPartie, int type, int nbJoueur)
    {


        FILE *fichier = NULL;
        char valeur[NB_BLOCS_LARGEUR * NB_BLOCS_HAUTEUR + 1] = {0}, caractereLu = 0;
        int i = 0, j = 0, nombreLVL = 0;


    if (type == AVENTURE)
    {
        fichier = fopen("aventure.lvl", "r");
    }
    else if (type == DEFIS)
    {
        fichier = fopen("defis.lvl", "r");
    }
    else if (type == VOS_DEFIS)
    {
        fichier = fopen("vosDefis.lvl", "r");
    }
    else if (type == VOS_NIVEAUX)
    {
        fichier = fopen("vosNiveaux.lvl", "r");
    }
    else
    {
        return 0;
    }
        if(fichier == NULL)
            return 0;


        do
        {
            caractereLu = fgetc(fichier);
            if(caractereLu == '\n')
                nombreLVL++;

        } while (caractereLu != EOF);

        rewind(fichier);
        while (numPartie > 0)
        {
            caractereLu = fgetc(fichier);
            if(caractereLu == '\n')
                numPartie--;
        }




        for (i = 0; i < NB_BLOCS_LARGEUR; i++)
        {
            for (j = 0; j < NB_BLOCS_HAUTEUR; j++)
            {

                fscanf(fichier, "%d ", &valeur[(i * NB_BLOCS_LARGEUR) + j]);

                switch (valeur[(i * NB_BLOCS_LARGEUR) + j])
                {

                    case 0:
                        niveau[j][i] = 0;
                        break;
                    case 1:
                        niveau[j][i] = 1;
                        break;
                    case 2:
                        if(nbJoueur == 2)
                        {
                            niveau[j][i] = 2;
                        }
                        else
                        {
                            niveau[j][i] = 0;
                        }
                        break;
                    case 3:
                        niveau[j][i] = 3;
                        break;
                    case 4:
                        niveau[j][i] = 4;
                        break;
                    case 5:
                        niveau[j][i] = 5;
                        break;
                    case 6:
                        niveau[j][i] = 6;
                        break;
                    case 7:
                        niveau[j][i] = 7;
                        break;
                    case 8:
                        niveau[j][i] = 8;
                        break;
                    case 9:
                        niveau[j][i] = 9;
                        break;
                    case 10:
                        niveau[j][i] = 10;
                        break;
                    case 11:
                        niveau[j][i] = 11;
                        break;
                    case 12:
                        niveau[j][i] = 12;
                        break;
                    case 13:
                        niveau[j][i] = 13;
                        break;
                    case 14:
                        niveau[j][i] = 14;
                        break;

                }

            }
        }

        fclose(fichier);
        return 1;




    }


    Pouvez vous me dire ce qui ne va pas.
    J'explique quand même un peu le code: en fait c'est comme Mario Sokoban sauf que comme j'avais des nombres au dessus de 10 j'ai mis des espaces après chaque nombre pour savoir que s'en est un autre.

    Mais ça ne marche pas

    Merci d'avance de m'aider
    • Partager sur Facebook
    • Partager sur Twitter
      25 mai 2006 à 9:34:22

      Personne ne peut m'aider?
      • Partager sur Facebook
      • Partager sur Twitter
        25 mai 2006 à 9:41:20

        On ne test pas si l'ouverture du fichier à raté,
        FILE *c = NULL;
        if(c == NULL){ /* Action */
        }


        Mais bien si elle a reussi ;)
        FILE *c = NULL;
        if(c != NULL){ /* Action */
        }
        • Partager sur Facebook
        • Partager sur Twitter
          25 mai 2006 à 11:10:01

          Mersi de ton aide, mais le probleme ne viens pas de là
          D'ailleurs je viens de voir où il était et vous n'auriez pas pu le voir puisque qu'en fait j'ai mal nommé mes fichiers donc c'était normal que ça plante à chque fois^^

          En tout merci merci quand meme de ton aide
          ++
          • Partager sur Facebook
          • Partager sur Twitter

          Probleme pour charger un niveau dans un jeu

          × 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