Bonjour à tous !
Je suis sur un gros problème et je ne trouve pas la solution. j'ai cherché partout, rien.
J'utilise une classe:
Dans cette classe j'ai une fonction.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29 class carte { public: carte(); ~carte(); void chargement(char* mapp, SDL_Surface *screen); int **tableau_donnee_carte; int **tableau_donnee_collision; void afficher(); void bouge(int x, int y); int collision(int x, int y, int bouge_x, int bouge_y); private: int i; int j; int k; int deplacement_x; int deplacement_y; FILE *fp; int taille_carte_x; int taille_carte_y; string tileset; string path; SDL_Rect clip_map[480]; SDL_Surface *map; SDL_Rect position; SDL_Surface *screen; void chargement_png(); };
J'apelle cette fonction via :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21 void carte::chargement(const char* map, SDL_Surface *screen) { this->screen = screen; fp = fopen(map,"r"); fscanf(fp, "%d,%d,%s", &this->taille_carte_y, &this->taille_carte_x, this->tileset.c_str()); tableau_donnee_carte = (int**)calloc(this->taille_carte_x, sizeof(unsigned int)); tableau_donnee_collision = (int**)calloc(this->taille_carte_x, sizeof(unsigned int)); for (i = 0; i < taille_carte_x; i++) { tableau_donnee_carte[i] = (int*)calloc(this->taille_carte_y, sizeof(unsigned int)); tableau_donnee_collision[i] = (int*)calloc(this->taille_carte_y, sizeof(unsigned int)); for (j = 0; j < taille_carte_y; j++) { fscanf(fp, "%d|", &(tableau_donnee_carte[i][j])); fscanf(fp, "%d,", &(tableau_donnee_collision[i][j])); } } fclose(fp); chargement_png(); }
Après plusieurs tests. Il semble que ça plante sur la ligne
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 o_carte->chargement("carte.hkm", ecran);
J'ai essayé de mettre les paramètres de la fonction en const char*. j'ai essayé de passer en string etc... rien à faire. ça compile mais ça plante (je suis sur dev-c++). Par contre, si je declare un
Code : Sélectionner tout - Visualiser dans une fenêtre à part fp = fopen(map,"r");dans ma class et que je met test au lieu de map dans la ligne du fopen. Magie, ça marche.
Code : Sélectionner tout - Visualiser dans une fenêtre à part char* test = "carte.hkm"
Malheureusement, le programme etant un moteur de jeu. je peut pas me permettre de faire comme ça.
Partager