Bonsoir à tous,
Je viens de faire un code qui fait les actions suivantes :
- ouvrir le fichier niveau1.txt qui comporte 25 caractères sur une ligne et 19 caractères sur une colonne
- chaque "x" dans le fichier correspond à une image à afficher
- on parcourt le tableau des caractères du fichier (x = 1 et tout autre caractère = 0) pour savoir où afficher les images, sachant que ces images ont une dimension de 25*25 pixels
Le code que je vais donner affiche bien les images, mais au mauvais endroit. Il y a également une image qu'il devrait afficher qu'il n'affiche pas. Je vais également vous fournir le fichier où j'extrais les caractères. Vous verrez que quelques problèmes surviennent (comme par exemple le haut et le bas sont inversés).
Code C :
Fichier source :
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
77
78 #include <stdlib.h> #include <stdio.h> #include <SDL/SDL.h> #include <SDL/SDL_image.h> #define LARGEUR 625 #define HAUTEUR 475 int main(int argc, char *argv[]){ SDL_Surface *ecran = NULL, *image = NULL; FILE *fichier = NULL; int j = 0, i = 0,l = 0, continuer = 1; char chaine[500] = ""; int tabDecor[25][19] = {0}; fichier = fopen ("niveaux/niveau1.txt", "r"); SDL_Init(SDL_INIT_VIDEO); ecran = SDL_SetVideoMode(LARGEUR, HAUTEUR, 32, SDL_HWSURFACE); image = IMG_Load("images/brique.png"); if (image == NULL) printf("ERREUR OUVERTURE IMAGE"); if ( fichier == NULL ) exit (EXIT_FAILURE); while ( fgets(chaine, 500, fichier) != NULL ){ l++; for ( i = 0; i < 25 ; i++ ) { if ( chaine[i] == 'x' ) { tabDecor[i][l] = 1; } else { tabDecor[i][l] = 0; } } } fclose(fichier); SDL_Rect positionBrique; i = 0; j = 0; SDL_WM_SetCaption("PolyBros", NULL); for ( i = 0; i < 25 ; i++ ) { for ( j = 0 ; j < 19 ; j++ ) { if ( tabDecor[i][j] == 1 ) { positionBrique.x = 25 * i; positionBrique.y = 25 * j; SDL_BlitSurface(image, NULL, ecran, &positionBrique); } } SDL_Flip(ecran); } while (continuer) { SDL_Event event; SDL_WaitEvent(&event); switch(event.type) { case SDL_QUIT : continuer = 0; break; } } SDL_FreeSurface(image); SDL_Quit(); return EXIT_SUCCESS; }
Résultat :
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 xxxxxxxxxxxxxxxxxxxxxxxxx xxxxxxxxxxxxxxxxxxxxxxxxx xxxxxxxxxxxxxxxxxxxxxxxxx xxxxxxxxxxxxxxxxxxxxxxxxx xxxxxxxxxxxxxxxxxxxxxxxxx xxxxxxxxxxxxxxxxxxxxxxxxx xxxxxxxxxxxxxxxxxxxxxxxxx xxxxxxxxxxxxxxxxxxxxxxxxx xxxxxxxxxxxxxxxxxxxxxxxxx xxxxxxxxxxxxxxxxxxxxxxxxx xxxxxxxxxxxxxxxxxxxxxxxxx xxxxxxxxxxxxxxxxxxxxxxxxx xxxxxxxxxxxxxxxxxxxxxxxxx xxxxxxxxxxxxxxxxxxxxxxxxx xxxxxxxxxxxxxxxxxxxxxxxxx xxxxxxxxxxxxxxxxxxxxxxxxx xxxxxxxxxxxxxxxxxxxxxxxxx xxxxxxxxxxxxxxxxxxxxxxxxx _xxxxxxxxxxxxxxxxxxxxx_xx
Comme vous le remarquez sûrement, il y a une incohérence entre le fichier source et le résultat final.
Seulement, je n'arrive pas à corriger cette erreur. Donc si l'un d'entre vous la voit, votre aide serait la bienvenue.
Bonne soirée et merci d'avance !
Partager