Bonjour,
Je suis en train d'éssayer de réaliser un sokoban
Ma fonction assignPosition, dans niveau.c, fonctionne, et j'obtiens toutes les bonnes coordonnées de chaques blocs
J'ouvre le fichier test.lvl qui ressemble a
Chaque mot correspond au type de surface qu'est la case
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7 mur mur mur mur mur herbe herbe ...
Je stocke chaque mot dans une case d'un tableau "typeSurface"
je remet i à 0
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6 rewind(niveau); while(i != 20) { fgets(typeSurface[i], 10, niveau); i++; }
Et cette partie bloque:
Il ne fait jamais le if, il passe directement au else!
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 while(i != 20) { if(strcmp(typeSurface[i], "mur") == 0) { blocs[i] = IMG_Load("images/mur.jpg"); SDL_BlitSurface(blocs[i], NULL, ecran, &positionBlocs[i]); SDL_Flip(ecran); } else { blocs[i] = IMG_Load("images/herbe.jpg"); SDL_BlitSurface(blocs[i], NULL, ecran, &positionBlocs[i]); SDL_Flip(ecran); } i++; }
Voici le code complet:
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
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76 #include<SDL/SDL.h> #include<SDL/SDL_image.h> #include<stdio.h> #include<stdlib.h> #include"niveau.h" int pause(); int main() { SDL_Surface *ecran = NULL, *menu = NULL, *blocs[20]; SDL_Rect positionMenu, positionBlocs[20]; positionMenu.x = 0; positionMenu.y = 0; FILE *niveau = NULL; int continuer = 1; char typeSurface[10][20]; long i = 0; SDL_Init(SDL_INIT_VIDEO); ecran = SDL_SetVideoMode(408, 408, 32, SDL_HWSURFACE|SDL_DOUBLEBUF); menu = IMG_Load("images/menu.jpg"); SDL_BlitSurface(menu, NULL, ecran, &positionMenu); SDL_Flip(ecran); while(continuer) { continuer = pause(); if(continuer == 2) { assignPosition(positionBlocs, 20); niveau = fopen("niveaux/test.lvl", "r"); if (niveau != NULL) { rewind(niveau); while(i != 20) { fgets(typeSurface[i], 10, niveau); i++; } i = 0; while(i != 20) { if(strcmp(typeSurface[i], "mur") == 0) { blocs[i] = IMG_Load("images/mur.jpg"); SDL_BlitSurface(blocs[i], NULL, ecran, &positionBlocs[i]); SDL_Flip(ecran); } else { blocs[i] = IMG_Load("images/herbe.jpg"); SDL_BlitSurface(blocs[i], NULL, ecran, &positionBlocs[i]); SDL_Flip(ecran); } i++; } } } } //fclose(niveau); SDL_Quit(); return EXIT_SUCCESS; }
Partager