Commit cfd8c64452615525c7336ec26c794e26e20460be
1 parent
9b666644
fin centipede
Showing
112 changed files
with
2359 additions
and
268 deletions
Show diff stats
Too many changes.
To preserve performance only 100 of 112 files are displayed.
projets/Centipede/centipede deleted
No preview for this file type
projets/Centipede/progprinc.c~ deleted
@@ -1,224 +0,0 @@ | @@ -1,224 +0,0 @@ | ||
1 | -#include <stdio.h> | ||
2 | -#include <stdlib.h> | ||
3 | -#include <libFile.h> | ||
4 | -#include <libgraph.h> | ||
5 | -#include <unistd.h> | ||
6 | -#include <time.h> | ||
7 | -#include <SDL/SDL.h> | ||
8 | -#define MAX_ELEMENTS 50 | ||
9 | - | ||
10 | -typedef struct { | ||
11 | - int x; | ||
12 | - int y; | ||
13 | -}position; | ||
14 | - | ||
15 | -typedef struct { | ||
16 | - position contenu[MAX_ELEMENTS]; | ||
17 | - int nombre; | ||
18 | - } liste_champi; | ||
19 | - | ||
20 | -void affichage(element_t e) | ||
21 | -{ | ||
22 | - position *p = e; | ||
23 | - printf("%d %d \n", p->x, p->y); | ||
24 | -} | ||
25 | - | ||
26 | - | ||
27 | -int main() { | ||
28 | - SDL_keysym* detail; | ||
29 | - srand(time(NULL)); | ||
30 | - char touche; | ||
31 | - unsigned char bas; | ||
32 | - int largeur = 1000; | ||
33 | - int hauteur = 1000; | ||
34 | - liste_champi muschrooms={.nombre=0}; | ||
35 | - liste_t listecenti={NULL,0,0}; | ||
36 | - int h,w,l,i,t; | ||
37 | - int s=10; | ||
38 | - char *titre = "Le Centipède"; | ||
39 | - | ||
40 | - | ||
41 | - int champi = chargerLutin("Lutins/millepatte_champi.bmp",0); | ||
42 | - int Teted = chargerLutin("Lutins/millepatte_tete_droite.bmp",0); | ||
43 | - int Teteg = chargerLutin("Lutins/millepatte_tete_gauche.bmp",0); | ||
44 | - int Teteh = chargerLutin("Lutins/millepatte_tete_haut.bmp",0); | ||
45 | - int Teteb = chargerLutin("Lutins/millepatte_tete_bas.bmp",0); | ||
46 | - int Corpsg = chargerLutin("Lutins/millepatte_corps_gauche.bmp",0); | ||
47 | - int Corpsd = chargerLutin("Lutins/millepatte_corps_droite.bmp",0); | ||
48 | - int Corpsh = chargerLutin("Lutins/millepatte_corps_haut.bmp",0); | ||
49 | - int Corpsb = chargerLutin("Lutins/millepatte_corps_bas.bmp",0); | ||
50 | - int gameover = chargerLutin("Lutins/game_over.bmp",0); | ||
51 | - | ||
52 | - if(champi<0){ printf("Champi pas là\n"); exit(-1); } | ||
53 | - tailleLutin(champi,&l,&h); | ||
54 | - | ||
55 | - | ||
56 | - position *pos; | ||
57 | - position poschampi; | ||
58 | - position posmillepatte; | ||
59 | - | ||
60 | - creerSurface(largeur,hauteur,titre); | ||
61 | - | ||
62 | - int x = 300; | ||
63 | - int y = 500; | ||
64 | - | ||
65 | - for(i=0; i<4; i++) | ||
66 | - { | ||
67 | - posmillepatte.x = (x + 50*i); | ||
68 | - posmillepatte.y = y; | ||
69 | - enfiler(&listecenti,&posmillepatte,sizeof(position)); | ||
70 | - } | ||
71 | - //affichage des corpsd du centipede | ||
72 | - for(i=0; i<4; i++) | ||
73 | - { | ||
74 | - pos = enieme(i,&listecenti); | ||
75 | - afficherLutin(Corpsd,pos->x,pos->y); | ||
76 | - } | ||
77 | - | ||
78 | - posmillepatte.x = (x+200); | ||
79 | - posmillepatte.y = y; | ||
80 | - enfiler(&listecenti,&posmillepatte,sizeof(position)); //affichage de la tete du Centipède | ||
81 | - pos = enieme(4, &listecenti); | ||
82 | - afficherLutin(Teted,pos->x,pos->y); | ||
83 | - | ||
84 | - for(i = 0 ; i < 20; i++) | ||
85 | - { | ||
86 | - rectanglePlein(i*50,0,1,1000,5); //pose de la grille | ||
87 | - rectanglePlein(0,i*50,1000,1,5); | ||
88 | - } | ||
89 | - | ||
90 | - for(w=0;w<10;w++) { | ||
91 | - poschampi.x = (rand()%20)*50; //fixe coordonnées des champignons | ||
92 | - poschampi.y = (rand()%20)*50; | ||
93 | - if(poschampi.y > 570 || poschampi.y < 430) { | ||
94 | - muschrooms.contenu[muschrooms.nombre++]=poschampi; } | ||
95 | - else w--; | ||
96 | - } | ||
97 | - | ||
98 | - printf("%d %d \n",l,h); | ||
99 | - | ||
100 | - for(w=0;w<10;w++){ | ||
101 | - afficherLutin(champi,(muschrooms.contenu[w].x)+1,(muschrooms.contenu[w].y)+6); | ||
102 | - }//affiche les champis | ||
103 | - majSurface(); | ||
104 | - | ||
105 | - int gomme = creerLutin(0,0,50,50,0); | ||
106 | - majSurface(); | ||
107 | - | ||
108 | - | ||
109 | - | ||
110 | - while(1){ | ||
111 | - if(lireTouche(&bas,&touche,(void **)&detail) && bas==1) { | ||
112 | - | ||
113 | - if(detail->sym==SDLK_RIGHT) t=0; | ||
114 | - if(detail->sym==SDLK_UP) t=1; | ||
115 | - if(detail->sym==SDLK_LEFT) t=2; | ||
116 | - if(detail->sym==SDLK_DOWN) t=3; } | ||
117 | - | ||
118 | - usleep(500000); | ||
119 | - | ||
120 | - if((t==0 && s!=2) || s==0) { | ||
121 | - printf("dans le droite\n"); | ||
122 | - pos = premier(&listecenti); | ||
123 | - afficherLutin(gomme,pos->x,pos->y); | ||
124 | - defiler(&listecenti); | ||
125 | - | ||
126 | - pos = dernier(&listecenti); | ||
127 | - afficherLutin(gomme,pos->x,pos->y); | ||
128 | - afficherLutin(Corpsd,(pos->x),pos->y); | ||
129 | - posmillepatte.x = pos->x+50; | ||
130 | - posmillepatte.y = pos->y; | ||
131 | - if(posmillepatte.x > 1000 || posmillepatte.y > 1000 || posmillepatte.x < 0 || posmillepatte.y < 0){ | ||
132 | - afficherLutin(gameover,400,400); | ||
133 | - majSurface(); | ||
134 | - sleep(5); | ||
135 | - fermerSurface(); | ||
136 | - } | ||
137 | - enfiler(&listecenti,&posmillepatte,sizeof(posmillepatte)); | ||
138 | - afficherLutin(Teted,posmillepatte.x,posmillepatte.y); | ||
139 | - majSurface(); | ||
140 | - s=0; | ||
141 | - } | ||
142 | - | ||
143 | - if((t==1 && s!=3) || s==1) { | ||
144 | - printf("dans le haut\n"); | ||
145 | - pos = premier(&listecenti); | ||
146 | - afficherLutin(gomme,pos->x,pos->y); | ||
147 | - defiler(&listecenti); | ||
148 | - | ||
149 | - pos = dernier(&listecenti); | ||
150 | - afficherLutin(gomme,pos->x,pos->y); | ||
151 | - afficherLutin(Corpsh,(pos->x),pos->y); | ||
152 | - posmillepatte.x = pos->x; | ||
153 | - posmillepatte.y = pos->y-50; | ||
154 | - if(posmillepatte.x > 1000 || posmillepatte.y > 1000 || posmillepatte.x < 0 || posmillepatte.y < 0){ | ||
155 | - afficherLutin(gameover,400,400); | ||
156 | - majSurface(); | ||
157 | - sleep(5); | ||
158 | - fermerSurface(); | ||
159 | - } | ||
160 | - enfiler(&listecenti,&posmillepatte,sizeof(posmillepatte)); | ||
161 | - afficherLutin(Teteh,posmillepatte.x,posmillepatte.y); | ||
162 | - majSurface(); | ||
163 | - s=1; | ||
164 | - } | ||
165 | - | ||
166 | - if((t==2 && s!=0) || s==2) { | ||
167 | - printf("dans le gauche\n"); | ||
168 | - pos = premier(&listecenti); | ||
169 | - afficherLutin(gomme,pos->x,pos->y); | ||
170 | - defiler(&listecenti); | ||
171 | - | ||
172 | - pos = dernier(&listecenti); | ||
173 | - afficherLutin(gomme,pos->x,pos->y); | ||
174 | - afficherLutin(Corpsg,(pos->x),pos->y); | ||
175 | - posmillepatte.x = pos->x-50; | ||
176 | - posmillepatte.y = pos->y; | ||
177 | - if(posmillepatte.x > 1000 || posmillepatte.y > 1000 || posmillepatte.x < 0 || posmillepatte.y < 0){ | ||
178 | - afficherLutin(gameover,400,400); | ||
179 | - majSurface(); | ||
180 | - sleep(5); | ||
181 | - fermerSurface(); | ||
182 | - } | ||
183 | - enfiler(&listecenti,&posmillepatte,sizeof(posmillepatte)); | ||
184 | - afficherLutin(Teteg,posmillepatte.x,posmillepatte.y); | ||
185 | - majSurface(); | ||
186 | - s=2; | ||
187 | - } | ||
188 | - | ||
189 | - if((t==3 && s!=1) || s==3) { | ||
190 | - printf("dans le bas\n"); | ||
191 | - pos = premier(&listecenti); | ||
192 | - afficherLutin(gomme,pos->x,pos->y); | ||
193 | - defiler(&listecenti); | ||
194 | - | ||
195 | - pos = dernier(&listecenti); | ||
196 | - afficherLutin(gomme,pos->x,pos->y); | ||
197 | - afficherLutin(Corpsb,(pos->x),pos->y); | ||
198 | - posmillepatte.x = pos->x; | ||
199 | - posmillepatte.y = pos->y+50; | ||
200 | - if(posmillepatte.x > 1000 || posmillepatte.y > 1000 || posmillepatte.x < 0 || posmillepatte.y < 0){ | ||
201 | - afficherLutin(gameover,400,400); | ||
202 | - majSurface(); | ||
203 | - sleep(5); | ||
204 | - fermerSurface(); | ||
205 | - } | ||
206 | - enfiler(&listecenti,&posmillepatte,sizeof(posmillepatte)); | ||
207 | - afficherLutin(Teteb,posmillepatte.x,posmillepatte.y); | ||
208 | - majSurface(); | ||
209 | - s=3; | ||
210 | - } | ||
211 | - | ||
212 | - if(touche=='a') | ||
213 | - { | ||
214 | - fermerSurface(); //condition d'arret | ||
215 | - return 0; | ||
216 | - | ||
217 | - } | ||
218 | -} | ||
219 | - | ||
220 | - | ||
221 | - return 0; | ||
222 | -} | ||
223 | - | ||
224 | - |
projets/Centipede/progprinc.o deleted
No preview for this file type
projets/Centipede/Makefile renamed to projets/projetsfile/Centipede/Makefile
No preview for this file type
projets/Centipede/progprinc.c renamed to projets/projetsfile/Centipede/progprinc.c
@@ -7,11 +7,14 @@ | @@ -7,11 +7,14 @@ | ||
7 | #include <SDL/SDL.h> | 7 | #include <SDL/SDL.h> |
8 | #define MAX_ELEMENTS 50 | 8 | #define MAX_ELEMENTS 50 |
9 | 9 | ||
10 | -typedef struct{ | 10 | +typedef struct { |
11 | char pseudo[MAX_ELEMENTS]; | 11 | char pseudo[MAX_ELEMENTS]; |
12 | - int scorefait; | 12 | + char score; |
13 | }scorejoueur; | 13 | }scorejoueur; |
14 | 14 | ||
15 | +typedef struct { | ||
16 | + scorejoueur classement[10]; | ||
17 | +}classement; | ||
15 | 18 | ||
16 | typedef struct { | 19 | typedef struct { |
17 | int x; | 20 | int x; |
@@ -32,16 +35,6 @@ for(i = 0 ; i < 20; i++) | @@ -32,16 +35,6 @@ for(i = 0 ; i < 20; i++) | ||
32 | rectanglePlein(i*50,0,1,1000,5); //pose de la grille | 35 | rectanglePlein(i*50,0,1,1000,5); //pose de la grille |
33 | rectanglePlein(0,i*50,1000,1,5); | 36 | rectanglePlein(0,i*50,1000,1,5); |
34 | } } | 37 | } } |
35 | - | ||
36 | - | ||
37 | -void affichage(element_t e) | ||
38 | -{ | ||
39 | - position *p = e; | ||
40 | - printf("%d %d \n", p->x, p->y); | ||
41 | -} | ||
42 | - | ||
43 | - | ||
44 | - | ||
45 | 38 | ||
46 | void creerchampignons(int n,liste_poly *muschrooms,int champi){ | 39 | void creerchampignons(int n,liste_poly *muschrooms,int champi){ |
47 | position poschampi; | 40 | position poschampi; |
@@ -96,10 +89,11 @@ int main() { | @@ -96,10 +89,11 @@ int main() { | ||
96 | unsigned char bas; | 89 | unsigned char bas; |
97 | int largeur = 1000; | 90 | int largeur = 1000; |
98 | int hauteur = 1000; | 91 | int hauteur = 1000; |
99 | - char *name; | ||
100 | char *titre = "Le Centipede"; | 92 | char *titre = "Le Centipede"; |
101 | - scorejoueur resultat; | ||
102 | - liste_poly testscore; | 93 | + scorejoueur scorefait={.pseudo={'\0'}}; |
94 | + scorejoueur autres; | ||
95 | + scorejoueur lecture; | ||
96 | + classement ranking; | ||
103 | position *pos; | 97 | position *pos; |
104 | position posmillepatte; | 98 | position posmillepatte; |
105 | 99 | ||
@@ -121,21 +115,16 @@ int main() { | @@ -121,21 +115,16 @@ int main() { | ||
121 | int youwin = chargerLutin("Lutins/youwin.bmp",0); | 115 | int youwin = chargerLutin("Lutins/youwin.bmp",0); |
122 | int Tete; | 116 | int Tete; |
123 | int Corps; | 117 | int Corps; |
124 | - int i; | ||
125 | - int abs, ord, obstacle, couleur,level=1,speed=5000,total=0,nombrechampis=6, s; | 118 | + int abs, ord, obstacle, couleur,level=1,speed=5000,total=0,nombrechampis=6, s,ecriture=1,j,w,i; |
126 | 119 | ||
127 | if(champi<0 || Teted<0 || Teteg<0 || Teteh <0 || Teteb<0 || Corpsg<0 || Corpsd<0 || Corpsh<0 || Corpsb<0 || gameover<0 || level1<0 || level2<0 || level3<0 || levelclr<0 || youwin<0){ printf("Image pas là\n"); exit(-1); } | 120 | if(champi<0 || Teted<0 || Teteg<0 || Teteh <0 || Teteb<0 || Corpsg<0 || Corpsd<0 || Corpsh<0 || Corpsb<0 || gameover<0 || level1<0 || level2<0 || level3<0 || levelclr<0 || youwin<0){ printf("Image pas là\n"); exit(-1); } |
128 | - | ||
129 | - printf("joueur !! quel est votre pseudo ? :"); | ||
130 | - scanf("%s",&name); | ||
131 | - resultat.nom = name; | 121 | + |
132 | creerSurface(largeur,hauteur,titre); | 122 | creerSurface(largeur,hauteur,titre); |
133 | majSurface(); | 123 | majSurface(); |
134 | int gomme = creerLutin(0,0,50,50,-1); | 124 | int gomme = creerLutin(0,0,50,50,-1); |
135 | 125 | ||
136 | while(level<=3) { | 126 | while(level<=3) { |
137 | 127 | ||
138 | - queue = 0; | ||
139 | liste_poly muschrooms={.nombre=0}; | 128 | liste_poly muschrooms={.nombre=0}; |
140 | liste_t listecenti={NULL,0,0}; | 129 | liste_t listecenti={NULL,0,0}; |
141 | int w,t,compteur=0,allonge; | 130 | int w,t,compteur=0,allonge; |
@@ -245,29 +234,68 @@ while(level<=3) { | @@ -245,29 +234,68 @@ while(level<=3) { | ||
245 | speed = speed/2.2; | 234 | speed = speed/2.2; |
246 | level++; | 235 | level++; |
247 | 236 | ||
248 | -} | 237 | +} |
238 | + | ||
249 | printf("votre score est de %d\n",total); | 239 | printf("votre score est de %d\n",total); |
250 | - resultat.scorefait = total; | ||
251 | - | ||
252 | - FILE *fichier = NULL; | ||
253 | - fichier = fopen("scores.txt",r+); | ||
254 | - | ||
255 | - if(fichier==NULL) { printf("\n le fichier n'a pas plus etre ouvert"); fermerSurface(); } | ||
256 | - | ||
257 | - else{ | ||
258 | - | ||
259 | - testscore->contenu[testscore->nombre++]=fread; | ||
260 | - | ||
261 | - | ||
262 | - | ||
263 | - | ||
264 | - | ||
265 | - } | ||
266 | - | ||
267 | - | ||
268 | - fermerSurface(); | ||
269 | - fclose(fichier); | 240 | + |
241 | + for(i=0;i<10;i++) // initialisation de la liste classement | ||
242 | + { | ||
243 | + strcpy(ranking.classement[i].pseudo,"vide"); | ||
244 | + ranking.classement[i].score=0; | ||
245 | + } | ||
246 | + | ||
247 | + fermerSurface(); | ||
248 | + printf("Saisissez votre pseudo\n"); | ||
249 | + scanf("%s",scorefait.pseudo); | ||
250 | + scorefait.score=total; | ||
251 | + | ||
252 | + | ||
253 | + FILE *fichier=fopen("scores.txt","a+"); // Gestion fichier | ||
254 | + fclose(fichier); | ||
255 | + fichier=fopen("scores.txt","r+"); | ||
256 | + if(fichier!=NULL){ | ||
257 | + | ||
258 | + while((fread(&autres,sizeof(autres),1,fichier)!=0)) | ||
259 | + { | ||
260 | + if(strcmp(autres.pseudo,scorefait.pseudo)==0) | ||
261 | + { | ||
262 | + if(total>autres.score) | ||
263 | + { | ||
264 | + fseek(fichier,-sizeof(scorefait),SEEK_CUR); | ||
265 | + fwrite(&scorefait,sizeof(scorefait),1,fichier); | ||
266 | + } | ||
267 | + ecriture=0; | ||
268 | + break; | ||
269 | + } | ||
270 | + ecriture=1; | ||
271 | + } | ||
272 | + if(ecriture==1) {fwrite(&scorefait,sizeof(scorefait),1,fichier);} | ||
273 | + } | ||
274 | + rewind(fichier); | ||
275 | + while((fread(&lecture,sizeof(lecture),1,fichier)!=0)) | ||
276 | + { | ||
277 | + for(w=0;w<10;w++) | ||
278 | + { | ||
279 | + if(lecture.score>ranking.classement[w].score) | ||
280 | + { | ||
281 | + for(j=10;j>w;j--) | ||
282 | + { | ||
283 | + strcpy(ranking.classement[j].pseudo,ranking.classement[j-1].pseudo); // gestion et affichage classement | ||
284 | + ranking.classement[j].score=ranking.classement[j-1].score; | ||
285 | + } | ||
286 | + strcpy(ranking.classement[w].pseudo,lecture.pseudo); | ||
287 | + ranking.classement[w].score=lecture.score; | ||
288 | + break; | ||
289 | + } | ||
290 | + } | ||
291 | + } | ||
292 | + printf("RANKING :\n"); | ||
293 | + for(w=0;w<10;w++) | ||
294 | + { | ||
295 | + printf("%i : %s , score : %d\n",w+1,ranking.classement[w].pseudo,ranking.classement[w].score); | ||
296 | + } | ||
297 | + fclose(fichier); | ||
298 | + | ||
270 | return 0; | 299 | return 0; |
271 | } | 300 | } |
272 | 301 | ||
273 | - | ||
274 | \ No newline at end of file | 302 | \ No newline at end of file |
@@ -0,0 +1,301 @@ | @@ -0,0 +1,301 @@ | ||
1 | +#include <stdio.h> | ||
2 | +#include <stdlib.h> | ||
3 | +#include <libFile.h> | ||
4 | +#include <libgraph.h> | ||
5 | +#include <unistd.h> | ||
6 | +#include <time.h> | ||
7 | +#include <SDL/SDL.h> | ||
8 | +#define MAX_ELEMENTS 50 | ||
9 | + | ||
10 | +typedef struct { | ||
11 | + char pseudo[MAX_ELEMENTS]; | ||
12 | + char score; | ||
13 | +}scorejoueur; | ||
14 | + | ||
15 | +typedef struct { | ||
16 | + scorejoueur classement[10]; | ||
17 | +}classement; | ||
18 | + | ||
19 | +typedef struct { | ||
20 | + int x; | ||
21 | + int y; | ||
22 | +}position; | ||
23 | + | ||
24 | + | ||
25 | +typedef struct { | ||
26 | + position contenu[MAX_ELEMENTS]; | ||
27 | + int nombre; | ||
28 | + } liste_poly; | ||
29 | + | ||
30 | + | ||
31 | +void creationgrille(){ | ||
32 | +int i; | ||
33 | +for(i = 0 ; i < 20; i++) | ||
34 | + { | ||
35 | + rectanglePlein(i*50,0,1,1000,5); //pose de la grille | ||
36 | + rectanglePlein(0,i*50,1000,1,5); | ||
37 | + } } | ||
38 | + | ||
39 | +void creerchampignons(int n,liste_poly *muschrooms,int champi){ | ||
40 | + position poschampi; | ||
41 | + int i,w; | ||
42 | + int test=0; | ||
43 | + for(w=0;w<n;w++) | ||
44 | + { | ||
45 | + poschampi.x = (rand()%20)*50; //fixe coordonnées des champignons | ||
46 | + poschampi.y = (rand()%20)*50; | ||
47 | + for(i=0; i<w; i++){ | ||
48 | + if(muschrooms->contenu[i].x == poschampi.x && muschrooms->contenu[i].y == poschampi.y ) test=1; | ||
49 | + } | ||
50 | + if((poschampi.y > 570 || poschampi.y < 430) && test==0) | ||
51 | + { | ||
52 | + muschrooms->contenu[muschrooms->nombre++]=poschampi; | ||
53 | + afficherLutin(champi,(muschrooms->contenu[w].x)+1,(muschrooms->contenu[w].y)+6); | ||
54 | + } | ||
55 | + else w--; | ||
56 | + test = 0; | ||
57 | + } | ||
58 | +} | ||
59 | + | ||
60 | + | ||
61 | +void creationcenti(liste_t *l, int Teted, int Corpsd){ | ||
62 | + int i; | ||
63 | + position *pos; | ||
64 | + position posmillepatte; | ||
65 | + for(i=0; i<4; i++) | ||
66 | + { | ||
67 | + posmillepatte.x = (300 + 50*i); | ||
68 | + posmillepatte.y = 500; | ||
69 | + enfiler(l,&posmillepatte,sizeof(position)); | ||
70 | + } | ||
71 | + //affichage des corpsd du centipede | ||
72 | + for(i=0; i<4; i++) | ||
73 | + { | ||
74 | + pos = enieme(i,l); | ||
75 | + afficherLutin(Corpsd,pos->x,pos->y); | ||
76 | + } | ||
77 | + | ||
78 | + posmillepatte.x = 500; | ||
79 | + posmillepatte.y = 500; | ||
80 | + enfiler(l,&posmillepatte,sizeof(position)); //affichage de la tete du Centipède | ||
81 | + pos = enieme(4,l); | ||
82 | + afficherLutin(Teted,pos->x,pos->y); | ||
83 | +} | ||
84 | + | ||
85 | +int main() { | ||
86 | + SDL_keysym* detail; | ||
87 | + srand(time(NULL)); | ||
88 | + char touche; | ||
89 | + unsigned char bas; | ||
90 | + int largeur = 1000; | ||
91 | + int hauteur = 1000; | ||
92 | + char *titre = "Le Centipede"; | ||
93 | + scorejoueur scorefait={.pseudo={'\0'}}; | ||
94 | + scorejoueur autres; | ||
95 | + scorejoueur lecture; | ||
96 | + classement ranking; | ||
97 | + position *pos; | ||
98 | + position posmillepatte; | ||
99 | + | ||
100 | + | ||
101 | + int champi = chargerLutin("Lutins/millepatte_champi.bmp",0); | ||
102 | + int Teted = chargerLutin("Lutins/millepatte_tete_droite.bmp",0); | ||
103 | + int Teteg = chargerLutin("Lutins/millepatte_tete_gauche.bmp",0); | ||
104 | + int Teteh = chargerLutin("Lutins/millepatte_tete_haut.bmp",0); | ||
105 | + int Teteb = chargerLutin("Lutins/millepatte_tete_bas.bmp",0); | ||
106 | + int Corpsg = chargerLutin("Lutins/millepatte_corps_gauche.bmp",0); | ||
107 | + int Corpsd = chargerLutin("Lutins/millepatte_corps_droite.bmp",0); | ||
108 | + int Corpsh = chargerLutin("Lutins/millepatte_corps_haut.bmp",0); | ||
109 | + int Corpsb = chargerLutin("Lutins/millepatte_corps_bas.bmp",0); | ||
110 | + int gameover = chargerLutin("Lutins/game_over.bmp",0); | ||
111 | + int level1 = chargerLutin("Lutins/level1.bmp",0); | ||
112 | + int level2 = chargerLutin("Lutins/level2.bmp",0); | ||
113 | + int level3 = chargerLutin("Lutins/level3.bmp",0); | ||
114 | + int levelclr = chargerLutin("Lutins/level_cleared.bmp",0); | ||
115 | + int youwin = chargerLutin("Lutins/youwin.bmp",0); | ||
116 | + int Tete; | ||
117 | + int Corps; | ||
118 | + int abs, ord, obstacle, couleur,level=1,speed=5000,total=0,nombrechampis=6, s,ecriture=1,j,w,i; | ||
119 | + | ||
120 | + if(champi<0 || Teted<0 || Teteg<0 || Teteh <0 || Teteb<0 || Corpsg<0 || Corpsd<0 || Corpsh<0 || Corpsb<0 || gameover<0 || level1<0 || level2<0 || level3<0 || levelclr<0 || youwin<0){ printf("Image pas là\n"); exit(-1); } | ||
121 | + | ||
122 | + creerSurface(largeur,hauteur,titre); | ||
123 | + majSurface(); | ||
124 | + int gomme = creerLutin(0,0,50,50,-1); | ||
125 | + | ||
126 | +while(level<=3) { | ||
127 | + | ||
128 | + liste_poly muschrooms={.nombre=0}; | ||
129 | + liste_t listecenti={NULL,0,0}; | ||
130 | + int w,t,compteur=0,allonge; | ||
131 | + | ||
132 | + rectanglePlein(0,0,1000,1000,1); | ||
133 | + | ||
134 | + if(level==1) { afficherLutin(level1,250,250); majSurface(); sleep(1); } | ||
135 | + if(level==2) { afficherLutin(level2,250,250); majSurface(); sleep(1); } | ||
136 | + if(level==3) { afficherLutin(level3,250,250); majSurface(); sleep(1); } | ||
137 | + | ||
138 | + rectanglePlein(0,0,1000,1000,-1); | ||
139 | + | ||
140 | + creationcenti(&listecenti,Teted,Corpsd); | ||
141 | + | ||
142 | + creerchampignons(nombrechampis,&muschrooms,champi); | ||
143 | + | ||
144 | + majSurface(); | ||
145 | + | ||
146 | + attendreEvenement(); | ||
147 | + | ||
148 | + s = 0; | ||
149 | + t = 0; | ||
150 | + | ||
151 | + while(1){ | ||
152 | + for(i=0;i<speed;i++) | ||
153 | + { | ||
154 | + if(lireTouche(&bas,&touche,(void **)&detail) && bas==1) | ||
155 | + { | ||
156 | + if(detail->sym==SDLK_RIGHT) t=0; | ||
157 | + if(detail->sym==SDLK_UP) t=1; | ||
158 | + if(detail->sym==SDLK_LEFT) t=2; | ||
159 | + if(detail->sym==SDLK_DOWN) t=3; | ||
160 | + } | ||
161 | + | ||
162 | + usleep(1); | ||
163 | + } | ||
164 | + if((t==0 && s!=2) || s==0) { abs=50; ord=0; Tete = Teted; Corps = Corpsd; s=0; } | ||
165 | + if((t==1 && s!=3) || s==1) { abs=0; ord=(-50); Tete = Teteh; Corps = Corpsh; s=1; } | ||
166 | + if((t==2 && s!=0) || s==2) { abs=-50; ord=0; Tete = Teteg; Corps = Corpsg; s=2; } | ||
167 | + if((t==3 && s!=1) || s==3) { abs=0; ord=50; Tete = Teteb; Corps = Corpsb; s=3; } | ||
168 | + | ||
169 | + pos = dernier(&listecenti); | ||
170 | + posmillepatte.x = pos->x+abs; | ||
171 | + posmillepatte.y = pos->y+ord; | ||
172 | + if(posmillepatte.x==1000 || posmillepatte.y==1000 || posmillepatte.x==-50 || posmillepatte.y==-50) | ||
173 | + { | ||
174 | + afficherLutin(gameover,250,433); | ||
175 | + majSurface(); | ||
176 | + sleep(5); | ||
177 | + break; | ||
178 | + } | ||
179 | + | ||
180 | + majSurface(); | ||
181 | + couleur = couleurPixel(posmillepatte.x+25,posmillepatte.y+25); | ||
182 | + if(couleur!=1) obstacle = 1; | ||
183 | + else obstacle = 0; | ||
184 | + allonge = 0; | ||
185 | + | ||
186 | + if(obstacle==1){ | ||
187 | + for(w=0;w<nombrechampis;w++) | ||
188 | + { | ||
189 | + if((muschrooms.contenu[w].x) == posmillepatte.x && (muschrooms.contenu[w].y) == posmillepatte.y) { allonge = 1; } } | ||
190 | + if(allonge==1){ | ||
191 | + afficherLutin(gomme,posmillepatte.x,posmillepatte.y); | ||
192 | + afficherLutin(gomme,pos->x,pos->y); | ||
193 | + afficherLutin(Corps,(pos->x),pos->y); | ||
194 | + enfiler(&listecenti,&posmillepatte,sizeof(posmillepatte)); | ||
195 | + afficherLutin(Tete,posmillepatte.x,posmillepatte.y); | ||
196 | + compteur++; | ||
197 | + } | ||
198 | + else { | ||
199 | + afficherLutin(gameover,250,433); | ||
200 | + majSurface(); | ||
201 | + sleep(5); | ||
202 | + break; | ||
203 | + } | ||
204 | + | ||
205 | + } | ||
206 | + | ||
207 | + if(obstacle==0){ | ||
208 | + afficherLutin(gomme,pos->x,pos->y); | ||
209 | + afficherLutin(Corps,(pos->x),pos->y); | ||
210 | + enfiler(&listecenti,&posmillepatte,sizeof(posmillepatte)); | ||
211 | + afficherLutin(Tete,posmillepatte.x,posmillepatte.y); | ||
212 | + pos = premier(&listecenti); | ||
213 | + afficherLutin(gomme,pos->x,pos->y); | ||
214 | + defiler(&listecenti); | ||
215 | + } | ||
216 | + majSurface(); | ||
217 | + | ||
218 | + if(compteur==nombrechampis) break; | ||
219 | + | ||
220 | + if(touche=='a') | ||
221 | + { | ||
222 | + fermerSurface(); //condition d'arret | ||
223 | + return 0; | ||
224 | + } | ||
225 | + } | ||
226 | + | ||
227 | + | ||
228 | + total = total+compteur; | ||
229 | + if(compteur != nombrechampis) break; | ||
230 | + if(level==3) { afficherLutin(youwin,204,400); majSurface(); sleep(3); } | ||
231 | + else { afficherLutin(levelclr,304,454); majSurface(); sleep(3); } | ||
232 | + compteur = 0; | ||
233 | + nombrechampis = nombrechampis+3; | ||
234 | + speed = speed/2.2; | ||
235 | + level++; | ||
236 | + | ||
237 | +} | ||
238 | + | ||
239 | + printf("votre score est de %d\n",total); | ||
240 | + | ||
241 | + for(i=0;i<10;i++) // initialisation de la liste classement | ||
242 | + { | ||
243 | + strcpy(ranking.classement[i].pseudo,"vide"); | ||
244 | + ranking.classement[i].score=0; | ||
245 | + } | ||
246 | + | ||
247 | + fermerSurface(); | ||
248 | + printf("Saisissez votre pseudo\n"); | ||
249 | + scanf("%s",scorefait.pseudo); | ||
250 | + scorefait.score=total; | ||
251 | + | ||
252 | + | ||
253 | + FILE *fichier=fopen("scores.txt","a+"); // Gestion fichier | ||
254 | + fclose(fichier); | ||
255 | + fichier=fopen("scores.txt","r+"); | ||
256 | + if(fichier!=NULL){ | ||
257 | + | ||
258 | + while((fread(&autres,sizeof(autres),1,fichier)!=0)) | ||
259 | + { | ||
260 | + if(strcmp(autres.pseudo,scorefait.pseudo)==0) | ||
261 | + { | ||
262 | + if(total>autres.score) | ||
263 | + { | ||
264 | + fseek(fichier,-sizeof(scorefait),SEEK_CUR); | ||
265 | + fwrite(&scorefait,sizeof(scorefait),1,fichier); | ||
266 | + } | ||
267 | + ecriture=0; | ||
268 | + break; | ||
269 | + } | ||
270 | + ecriture=1; | ||
271 | + } | ||
272 | + if(ecriture==1) {fwrite(&scorefait,sizeof(scorefait),1,fichier);} | ||
273 | + } | ||
274 | + rewind(fichier); | ||
275 | + while((fread(&lecture,sizeof(lecture),1,fichier)!=0)) | ||
276 | + { | ||
277 | + for(w=0;w<10;w++) | ||
278 | + { | ||
279 | + if(lecture.score>ranking.classement[w].score) | ||
280 | + { | ||
281 | + for(j=10;j>w;j--) | ||
282 | + { | ||
283 | + strcpy(ranking.classement[j].pseudo,ranking.classement[j-1].pseudo); // gestion et affichage classement | ||
284 | + ranking.classement[j].score=ranking.classement[j-1].score; | ||
285 | + } | ||
286 | + strcpy(ranking.classement[w].pseudo,lecture.pseudo); | ||
287 | + ranking.classement[w].score=lecture.score; | ||
288 | + break; | ||
289 | + } | ||
290 | + } | ||
291 | + } | ||
292 | + printf("RANKING :\n"); | ||
293 | + for(w=0;w<10;w++) | ||
294 | + { | ||
295 | + printf("%i : %s , score : %d\n",w+1,ranking.classement[w].pseudo,ranking.classement[w].score); | ||
296 | + } | ||
297 | + fclose(fichier); | ||
298 | + | ||
299 | + return 0; | ||
300 | +} | ||
301 | + |
No preview for this file type
projets/Centipede/scores.txt renamed to projets/projetsfile/Centipede/scores.txt
projets/Graphique/Makefile renamed to projets/projetsfile/Graphique/Makefile
projets/Graphique/libgraph.a renamed to projets/projetsfile/Graphique/libgraph.a
No preview for this file type
projets/Graphique/libgraph.c renamed to projets/projetsfile/Graphique/libgraph.c
projets/Graphique/libgraph.h renamed to projets/projetsfile/Graphique/libgraph.h
projets/Graphique/libgraph.o renamed to projets/projetsfile/Graphique/libgraph.o
No preview for this file type
projets/Liste/.directory renamed to projets/projetsfile/Liste/.directory
projets/Liste/Makefile renamed to projets/projetsfile/Liste/Makefile
projets/Liste/libFile.c renamed to projets/projetsfile/Liste/libFile.c
projets/Liste/libFile.h renamed to projets/projetsfile/Liste/libFile.h
projets/Liste/libFile.o renamed to projets/projetsfile/Liste/libFile.o
No preview for this file type
projets/Liste/libListe.a renamed to projets/projetsfile/Liste/libListe.a
No preview for this file type
projets/Lutins/game_over.bmp renamed to projets/projetsfile/Lutins/game_over.bmp
No preview for this file type
projets/Lutins/invader_bombe.bmp renamed to projets/projetsfile/Lutins/invader_bombe.bmp
No preview for this file type
projets/Lutins/invader_bouclier.bmp renamed to projets/projetsfile/Lutins/invader_bouclier.bmp
No preview for this file type
projets/Lutins/invader_canon.bmp renamed to projets/projetsfile/Lutins/invader_canon.bmp
No preview for this file type
projets/Lutins/invader_canon_ferraille.bmp renamed to projets/projetsfile/Lutins/invader_canon_ferraille.bmp
No preview for this file type
projets/Lutins/invader_missile.bmp renamed to projets/projetsfile/Lutins/invader_missile.bmp
No preview for this file type
projets/Lutins/invader_monstre1_1.bmp renamed to projets/projetsfile/Lutins/invader_monstre1_1.bmp
No preview for this file type
projets/Lutins/invader_monstre1_2.bmp renamed to projets/projetsfile/Lutins/invader_monstre1_2.bmp
No preview for this file type
projets/Lutins/invader_monstre2_1.bmp renamed to projets/projetsfile/Lutins/invader_monstre2_1.bmp
No preview for this file type
projets/Lutins/invader_monstre2_2.bmp renamed to projets/projetsfile/Lutins/invader_monstre2_2.bmp
No preview for this file type
projets/Lutins/invader_monstre3_1.bmp renamed to projets/projetsfile/Lutins/invader_monstre3_1.bmp
No preview for this file type
projets/Lutins/invader_monstre3_2.bmp renamed to projets/projetsfile/Lutins/invader_monstre3_2.bmp
No preview for this file type
projets/Lutins/invader_monstre_bouillie.bmp renamed to projets/projetsfile/Lutins/invader_monstre_bouillie.bmp
No preview for this file type
projets/Lutins/invader_ovni.bmp renamed to projets/projetsfile/Lutins/invader_ovni.bmp
No preview for this file type
projets/Lutins/level1.bmp renamed to projets/projetsfile/Lutins/level1.bmp
No preview for this file type
projets/Lutins/level2.bmp renamed to projets/projetsfile/Lutins/level2.bmp
No preview for this file type
projets/Lutins/level3.bmp renamed to projets/projetsfile/Lutins/level3.bmp
No preview for this file type
projets/Lutins/level_cleared.PNG renamed to projets/projetsfile/Lutins/level_cleared.PNG
15.3 KB
projets/Lutins/level_cleared.bmp renamed to projets/projetsfile/Lutins/level_cleared.bmp
No preview for this file type
projets/Lutins/millepatte_champi.bmp renamed to projets/projetsfile/Lutins/millepatte_champi.bmp
No preview for this file type
projets/Lutins/millepatte_corps_bas.bmp renamed to projets/projetsfile/Lutins/millepatte_corps_bas.bmp
No preview for this file type
projets/Lutins/millepatte_corps_droite.bmp renamed to projets/projetsfile/Lutins/millepatte_corps_droite.bmp
No preview for this file type
projets/Lutins/millepatte_corps_gauche.bmp renamed to projets/projetsfile/Lutins/millepatte_corps_gauche.bmp
No preview for this file type
projets/Lutins/millepatte_corps_haut.bmp renamed to projets/projetsfile/Lutins/millepatte_corps_haut.bmp
No preview for this file type
projets/Lutins/millepatte_tete_bas.bmp renamed to projets/projetsfile/Lutins/millepatte_tete_bas.bmp
No preview for this file type
projets/Lutins/millepatte_tete_droite.bmp renamed to projets/projetsfile/Lutins/millepatte_tete_droite.bmp
No preview for this file type
projets/Lutins/millepatte_tete_gauche.bmp renamed to projets/projetsfile/Lutins/millepatte_tete_gauche.bmp
No preview for this file type
projets/Lutins/millepatte_tete_haut.bmp renamed to projets/projetsfile/Lutins/millepatte_tete_haut.bmp
No preview for this file type
projets/Lutins/youwin.bmp renamed to projets/projetsfile/Lutins/youwin.bmp
No preview for this file type
projets/Makefile renamed to projets/projetsfile/Makefile
projets/Testliste/Makefile renamed to projets/projetsfile/Testliste/Makefile
projets/Testliste/projet renamed to projets/projetsfile/Testliste/projet
No preview for this file type
projets/Testliste/test.c renamed to projets/projetsfile/Testliste/test.c
projets/Testliste/test.o renamed to projets/projetsfile/Testliste/test.o
No preview for this file type
No preview for this file type
@@ -0,0 +1,13 @@ | @@ -0,0 +1,13 @@ | ||
1 | +SOURCES = $(wildcard *.c) | ||
2 | +OBJETS = $(SOURCES:.c=.o) | ||
3 | +BIBLIOTHEQUES = -L ../Liste -lListe -L ../Graphique -lgraph | ||
4 | +EXECUTABLE = centipede | ||
5 | +CFLAGS += -Wall -I ../Liste -I ../Graphique | ||
6 | + | ||
7 | +all: $(EXECUTABLE) | ||
8 | + | ||
9 | +$(EXECUTABLE): $(OBJETS) | ||
10 | + $(CC) -o $@ $^ $(BIBLIOTHEQUES) -lSDL | ||
11 | + | ||
12 | +clean: | ||
13 | + rm -rf $(EXECUTABLE) *.o |
No preview for this file type
@@ -0,0 +1,302 @@ | @@ -0,0 +1,302 @@ | ||
1 | +#include <stdio.h> | ||
2 | +#include <stdlib.h> | ||
3 | +#include <libFile.h> | ||
4 | +#include <libgraph.h> | ||
5 | +#include <unistd.h> | ||
6 | +#include <time.h> | ||
7 | +#include <SDL/SDL.h> | ||
8 | +#define MAX_ELEMENTS 50 | ||
9 | + | ||
10 | +typedef struct { | ||
11 | + char pseudo[MAX_ELEMENTS]; | ||
12 | + char score; | ||
13 | +}scorejoueur; | ||
14 | + | ||
15 | +typedef struct { | ||
16 | + scorejoueur classement[10]; | ||
17 | +}classement; | ||
18 | + | ||
19 | +typedef struct { | ||
20 | + int x; | ||
21 | + int y; | ||
22 | +}position; | ||
23 | + | ||
24 | +typedef struct { | ||
25 | + position contenu[MAX_ELEMENTS]; | ||
26 | + int nombre; | ||
27 | + } liste_poly; | ||
28 | + | ||
29 | + | ||
30 | +void creationgrille(){ | ||
31 | +int i; | ||
32 | +for(i = 0 ; i < 20; i++) | ||
33 | + { | ||
34 | + rectanglePlein(i*50,0,1,1000,5); //pose de la grille | ||
35 | + rectanglePlein(0,i*50,1000,1,5); | ||
36 | + } } | ||
37 | + | ||
38 | + | ||
39 | +void affichage(element_t e) | ||
40 | +{ | ||
41 | + position *p = e; | ||
42 | + printf("%d %d \n", p->x, p->y); | ||
43 | +} | ||
44 | + | ||
45 | + | ||
46 | +void creerchampignons(int n,liste_poly *muschrooms,int champi){ | ||
47 | + position poschampi; | ||
48 | + int i,w; | ||
49 | + int test=0; | ||
50 | + for(w=0;w<n;w++) | ||
51 | + { | ||
52 | + poschampi.x = (rand()%20)*50; //fonction de pose des champignons | ||
53 | + poschampi.y = (rand()%20)*50; | ||
54 | + for(i=0; i<w; i++){ | ||
55 | + if(muschrooms->contenu[i].x == poschampi.x && muschrooms->contenu[i].y == poschampi.y ) test=1; | ||
56 | + } | ||
57 | + if((poschampi.y > 570 || poschampi.y < 430) && test==0) | ||
58 | + { | ||
59 | + muschrooms->contenu[muschrooms->nombre++]=poschampi; | ||
60 | + afficherLutin(champi,(muschrooms->contenu[w].x)+1,(muschrooms->contenu[w].y)+6); | ||
61 | + } | ||
62 | + else w--; | ||
63 | + test = 0; | ||
64 | + } | ||
65 | +} | ||
66 | + | ||
67 | + | ||
68 | +void creationcenti(Liste *liste,int Teted, int Corpsd) { | ||
69 | + int x,y=500; | ||
70 | + for(x = 300 ; x <= 450 ; x=x+50) { // fonction pour la creation centipede liste chainée | ||
71 | + insertion(liste, x, y); | ||
72 | + afficherLutin(Corpsd,x,y); } | ||
73 | + x = 500; | ||
74 | + afficherLutin(Teted,x,y); | ||
75 | + insertion(liste, x, y); | ||
76 | +} | ||
77 | + | ||
78 | + | ||
79 | +int main() { | ||
80 | + SDL_keysym* detail; | ||
81 | + srand(time(NULL)); | ||
82 | + char touche; | ||
83 | + unsigned char bas; | ||
84 | + int largeur = 1000; | ||
85 | + int hauteur = 1000; | ||
86 | + char *titre = "Le Centipede"; | ||
87 | + scorejoueur scorefait={.pseudo={'\0'}}; | ||
88 | + scorejoueur autres; | ||
89 | + scorejoueur lecture; | ||
90 | + classement ranking; | ||
91 | + | ||
92 | + int champi = chargerLutin("Lutins/millepatte_champi.bmp",0); | ||
93 | + int Teted = chargerLutin("Lutins/millepatte_tete_droite.bmp",0); | ||
94 | + int Teteg = chargerLutin("Lutins/millepatte_tete_gauche.bmp",0); | ||
95 | + int Teteh = chargerLutin("Lutins/millepatte_tete_haut.bmp",0); | ||
96 | + int Teteb = chargerLutin("Lutins/millepatte_tete_bas.bmp",0); | ||
97 | + int Corpsg = chargerLutin("Lutins/millepatte_corps_gauche.bmp",0); | ||
98 | + int Corpsd = chargerLutin("Lutins/millepatte_corps_droite.bmp",0); | ||
99 | + int Corpsh = chargerLutin("Lutins/millepatte_corps_haut.bmp",0); | ||
100 | + int Corpsb = chargerLutin("Lutins/millepatte_corps_bas.bmp",0); | ||
101 | + int gameover = chargerLutin("Lutins/game_over.bmp",0); | ||
102 | + int level1 = chargerLutin("Lutins/level1.bmp",0); | ||
103 | + int level2 = chargerLutin("Lutins/level2.bmp",0); | ||
104 | + int level3 = chargerLutin("Lutins/level3.bmp",0); | ||
105 | + int levelclr = chargerLutin("Lutins/level_cleared.bmp",0); | ||
106 | + int youwin = chargerLutin("Lutins/youwin.bmp",0); | ||
107 | + int Tete; | ||
108 | + int Corps; | ||
109 | + int i; | ||
110 | + int abs, ord, obstacle=0, couleur,level=1,speed=5000,total=0,nombrechampis=6, s,nvx,nvy,abscenti,ordcenti,absqueue,ordqueue,ecriture=1,j,w; | ||
111 | + | ||
112 | + if(champi<0 || Teted<0 || Teteg<0 || Teteh <0 || Teteb<0 || Corpsg<0 || Corpsd<0 || Corpsh<0 || Corpsb<0 || gameover<0 || level1<0 || level2<0 || level3<0 || levelclr<0 || youwin<0){ printf("Image pas là\n"); exit(-1); } | ||
113 | + | ||
114 | + creerSurface(largeur,hauteur,titre); | ||
115 | + majSurface(); | ||
116 | + int gomme = creerLutin(0,0,50,50,-1); | ||
117 | + | ||
118 | +while(level<=3) { | ||
119 | + | ||
120 | + liste_poly muschrooms={.nombre=0}; | ||
121 | + Liste *maListe = initialisation(); | ||
122 | + int w,t,compteur=0,allonge; | ||
123 | + | ||
124 | + rectanglePlein(0,0,1000,1000,1); | ||
125 | + rectanglePlein(0,0,1000,1000,1); | ||
126 | + | ||
127 | + | ||
128 | + if(level==1) { afficherLutin(level1,250,250); majSurface(); sleep(1); } | ||
129 | + if(level==2) { afficherLutin(level2,250,250); majSurface(); sleep(1); } | ||
130 | + if(level==3) { afficherLutin(level3,250,250); majSurface(); sleep(1); } | ||
131 | + | ||
132 | + rectanglePlein(0,0,1000,1000,1); | ||
133 | + rectanglePlein(0,0,1000,1000,1); | ||
134 | + | ||
135 | + creationcenti(maListe,Teted,Corpsd); | ||
136 | + | ||
137 | + creerchampignons(nombrechampis,&muschrooms,champi); | ||
138 | + | ||
139 | + majSurface(); | ||
140 | + | ||
141 | + attendreEvenement(); | ||
142 | + | ||
143 | + s = 0; | ||
144 | + t = 0; | ||
145 | + | ||
146 | + while(1){ | ||
147 | + | ||
148 | + for(i=0;i<speed;i++) | ||
149 | + { | ||
150 | + if(lireTouche(&bas,&touche,(void **)&detail) && bas==1) | ||
151 | + { | ||
152 | + if(detail->sym==SDLK_RIGHT) t=0; | ||
153 | + if(detail->sym==SDLK_UP) t=1; | ||
154 | + if(detail->sym==SDLK_LEFT) t=2; | ||
155 | + if(detail->sym==SDLK_DOWN) t=3; | ||
156 | + } | ||
157 | + | ||
158 | + usleep(1); | ||
159 | + } | ||
160 | + if((t==0 && s!=2) || s==0) { abs=50; ord=0; Tete = Teted; Corps = Corpsd; s=0; } | ||
161 | + if((t==1 && s!=3) || s==1) { abs=0; ord=(-50); Tete = Teteh; Corps = Corpsh; s=1; } | ||
162 | + if((t==2 && s!=0) || s==2) { abs=-50; ord=0; Tete = Teteg; Corps = Corpsg; s=2; } | ||
163 | + if((t==3 && s!=1) || s==3) { abs=0; ord=50; Tete = Teteb; Corps = Corpsb; s=3; } | ||
164 | + | ||
165 | + abscenti = abstete(maListe); | ||
166 | + ordcenti = ordtete(maListe); | ||
167 | + nvx = abscenti+abs; | ||
168 | + nvy = ordcenti+ord; | ||
169 | + if(nvx==1000 || nvy==1000 || nvx==-50 || nvy==-50) | ||
170 | + { | ||
171 | + afficherLutin(gameover,250,433); | ||
172 | + majSurface(); | ||
173 | + sleep(5); | ||
174 | + break; | ||
175 | + } | ||
176 | + | ||
177 | + majSurface(); | ||
178 | + couleur = couleurPixel(nvx+25,nvy+25); | ||
179 | + if(couleur!=1) obstacle = 1; | ||
180 | + else obstacle = 0; | ||
181 | + allonge = 0; | ||
182 | + | ||
183 | + | ||
184 | + if(obstacle==1){ | ||
185 | + for(w=0;w<nombrechampis;w++) | ||
186 | + { | ||
187 | + if((muschrooms.contenu[w].x) == nvx && (muschrooms.contenu[w].y) == nvy) { allonge = 1; } } | ||
188 | + if(allonge==1){ | ||
189 | + afficherLutin(gomme,nvx,nvy); | ||
190 | + afficherLutin(gomme,abscenti,ordcenti); | ||
191 | + afficherLutin(Corps,abscenti,ordcenti); | ||
192 | + insertion(maListe,nvx,nvy); | ||
193 | + afficherLutin(Tete,nvx,nvy); | ||
194 | + compteur++; | ||
195 | + } | ||
196 | + else { | ||
197 | + afficherLutin(gameover,250,433); | ||
198 | + majSurface(); | ||
199 | + sleep(5); | ||
200 | + break; | ||
201 | + } | ||
202 | + | ||
203 | + | ||
204 | + } | ||
205 | + | ||
206 | + if(obstacle==0){ | ||
207 | + afficherLutin(gomme,abscenti,ordcenti); | ||
208 | + afficherLutin(Corps,abscenti,ordcenti); | ||
209 | + absqueue = abscul(maListe); | ||
210 | + ordqueue = ordcul(maListe); | ||
211 | + freelastbloc(maListe); | ||
212 | + insertion(maListe,nvx,nvy); | ||
213 | + afficherLutin(Tete,nvx,nvy); | ||
214 | + afficherLutin(gomme,absqueue,ordqueue); | ||
215 | + } | ||
216 | + | ||
217 | + majSurface(); | ||
218 | + | ||
219 | + if(compteur==nombrechampis) break; | ||
220 | + | ||
221 | + if(touche=='a') | ||
222 | + { | ||
223 | + fermerSurface(); | ||
224 | + return 0; | ||
225 | + } | ||
226 | + } | ||
227 | + | ||
228 | + | ||
229 | + total = total+compteur; | ||
230 | + if(compteur != nombrechampis) break; | ||
231 | + if(level==3) { afficherLutin(youwin,204,400); majSurface(); sleep(3); } | ||
232 | + else { afficherLutin(levelclr,304,454); majSurface(); sleep(3); } | ||
233 | + compteur = 0; | ||
234 | + nombrechampis = nombrechampis+3; | ||
235 | + speed = speed/2; | ||
236 | + level++; | ||
237 | + freeListe(maListe); | ||
238 | +} | ||
239 | + printf("votre score est de %d\n",total); | ||
240 | + | ||
241 | + for(i=0;i<10;i++) // initialisation de la liste classement | ||
242 | + { | ||
243 | + strcpy(ranking.classement[i].pseudo,"vide"); | ||
244 | + ranking.classement[i].score=0; | ||
245 | + } | ||
246 | + | ||
247 | + fermerSurface(); | ||
248 | + printf("Saisissez votre pseudo\n"); | ||
249 | + scanf("%s",scorefait.pseudo); | ||
250 | + scorefait.score=total; | ||
251 | + | ||
252 | + | ||
253 | + FILE *fichier=fopen("scores.txt","a+"); // Gestion fichier | ||
254 | + fclose(fichier); | ||
255 | + fichier=fopen("scores.txt","r+"); | ||
256 | + if(fichier!=NULL){ | ||
257 | + | ||
258 | + while((fread(&autres,sizeof(autres),1,fichier)!=0)) | ||
259 | + { | ||
260 | + if(strcmp(autres.pseudo,scorefait.pseudo)==0) | ||
261 | + { | ||
262 | + if(total>autres.score) | ||
263 | + { | ||
264 | + fseek(fichier,-sizeof(scorefait),SEEK_CUR); | ||
265 | + fwrite(&scorefait,sizeof(scorefait),1,fichier); | ||
266 | + } | ||
267 | + ecriture=0; | ||
268 | + break; | ||
269 | + } | ||
270 | + ecriture=1; | ||
271 | + } | ||
272 | + if(ecriture==1) {fwrite(&scorefait,sizeof(scorefait),1,fichier);} | ||
273 | + } | ||
274 | + rewind(fichier); | ||
275 | + while((fread(&lecture,sizeof(lecture),1,fichier)!=0)) | ||
276 | + { | ||
277 | + for(w=0;w<10;w++) | ||
278 | + { | ||
279 | + if(lecture.score>ranking.classement[w].score) | ||
280 | + { | ||
281 | + for(j=10;j>w;j--) | ||
282 | + { | ||
283 | + strcpy(ranking.classement[j].pseudo,ranking.classement[j-1].pseudo); // gestion et affichage classement | ||
284 | + ranking.classement[j].score=ranking.classement[j-1].score; | ||
285 | + } | ||
286 | + strcpy(ranking.classement[w].pseudo,lecture.pseudo); | ||
287 | + ranking.classement[w].score=lecture.score; | ||
288 | + break; | ||
289 | + } | ||
290 | + } | ||
291 | + } | ||
292 | + printf("RANKING :\n"); | ||
293 | + for(w=0;w<10;w++) | ||
294 | + { | ||
295 | + printf("%i : %s , score : %d\n",w+1,ranking.classement[w].pseudo,ranking.classement[w].score); | ||
296 | + } | ||
297 | + fclose(fichier); | ||
298 | + | ||
299 | + return 0; | ||
300 | +} | ||
301 | + | ||
302 | + |
@@ -0,0 +1,304 @@ | @@ -0,0 +1,304 @@ | ||
1 | +#include <stdio.h> | ||
2 | +#include <stdlib.h> | ||
3 | +#include <libFile.h> | ||
4 | +#include <libgraph.h> | ||
5 | +#include <unistd.h> | ||
6 | +#include <time.h> | ||
7 | +#include <SDL/SDL.h> | ||
8 | +#define MAX_ELEMENTS 50 | ||
9 | + | ||
10 | +typedef struct { | ||
11 | + char pseudo[MAX_ELEMENTS]; | ||
12 | + char score; | ||
13 | +}scorejoueur; | ||
14 | + | ||
15 | +typedef struct { | ||
16 | + scorejoueur classement[10]; | ||
17 | +}classement; | ||
18 | + | ||
19 | +typedef struct { | ||
20 | + int x; | ||
21 | + int y; | ||
22 | +}position; | ||
23 | + | ||
24 | +typedef struct { | ||
25 | + position contenu[MAX_ELEMENTS]; | ||
26 | + int nombre; | ||
27 | + } liste_poly; | ||
28 | + | ||
29 | + | ||
30 | +void creationgrille(){ | ||
31 | +int i; | ||
32 | +for(i = 0 ; i < 20; i++) | ||
33 | + { | ||
34 | + rectanglePlein(i*50,0,1,1000,5); //pose de la grille | ||
35 | + rectanglePlein(0,i*50,1000,1,5); | ||
36 | + } } | ||
37 | + | ||
38 | + | ||
39 | +void affichage(element_t e) | ||
40 | +{ | ||
41 | + position *p = e; | ||
42 | + printf("%d %d \n", p->x, p->y); | ||
43 | +} | ||
44 | + | ||
45 | + | ||
46 | +void creerchampignons(int n,liste_poly *muschrooms,int champi){ | ||
47 | + position poschampi; | ||
48 | + int i,w; | ||
49 | + int test=0; | ||
50 | + for(w=0;w<n;w++) | ||
51 | + { | ||
52 | + poschampi.x = (rand()%20)*50; //fonction de pose des champignons | ||
53 | + poschampi.y = (rand()%20)*50; | ||
54 | + for(i=0; i<w; i++){ | ||
55 | + if(muschrooms->contenu[i].x == poschampi.x && muschrooms->contenu[i].y == poschampi.y ) test=1; | ||
56 | + } | ||
57 | + if((poschampi.y > 570 || poschampi.y < 430) && test==0) | ||
58 | + { | ||
59 | + muschrooms->contenu[muschrooms->nombre++]=poschampi; | ||
60 | + afficherLutin(champi,(muschrooms->contenu[w].x)+1,(muschrooms->contenu[w].y)+6); | ||
61 | + } | ||
62 | + else w--; | ||
63 | + test = 0; | ||
64 | + } | ||
65 | +} | ||
66 | + | ||
67 | + | ||
68 | +void creationcenti(Liste *liste,int Teted, int Corpsd) { | ||
69 | + int x,y=500; | ||
70 | + for(x = 300 ; x <= 450 ; x=x+50) { // fonction pour la creation centipede liste chainée | ||
71 | + insertion(liste, x, y); | ||
72 | + afficherLutin(Corpsd,x,y); } | ||
73 | + x = 500; | ||
74 | + afficherLutin(Teted,x,y); | ||
75 | + insertion(liste, x, y); | ||
76 | +} | ||
77 | + | ||
78 | + | ||
79 | +int main() { | ||
80 | + SDL_keysym* detail; | ||
81 | + srand(time(NULL)); | ||
82 | + char touche; | ||
83 | + unsigned char bas; | ||
84 | + int largeur = 1000; | ||
85 | + int hauteur = 1000; | ||
86 | + char *titre = "Le Centipede"; | ||
87 | + position *pos; | ||
88 | + position posmillepatte; | ||
89 | + scorejoueur scorefait={.pseudo={'\0'}}; | ||
90 | + scorejoueur autres; | ||
91 | + scorejoueur lecture; | ||
92 | + classement ranking; | ||
93 | + | ||
94 | + int champi = chargerLutin("Lutins/millepatte_champi.bmp",0); | ||
95 | + int Teted = chargerLutin("Lutins/millepatte_tete_droite.bmp",0); | ||
96 | + int Teteg = chargerLutin("Lutins/millepatte_tete_gauche.bmp",0); | ||
97 | + int Teteh = chargerLutin("Lutins/millepatte_tete_haut.bmp",0); | ||
98 | + int Teteb = chargerLutin("Lutins/millepatte_tete_bas.bmp",0); | ||
99 | + int Corpsg = chargerLutin("Lutins/millepatte_corps_gauche.bmp",0); | ||
100 | + int Corpsd = chargerLutin("Lutins/millepatte_corps_droite.bmp",0); | ||
101 | + int Corpsh = chargerLutin("Lutins/millepatte_corps_haut.bmp",0); | ||
102 | + int Corpsb = chargerLutin("Lutins/millepatte_corps_bas.bmp",0); | ||
103 | + int gameover = chargerLutin("Lutins/game_over.bmp",0); | ||
104 | + int level1 = chargerLutin("Lutins/level1.bmp",0); | ||
105 | + int level2 = chargerLutin("Lutins/level2.bmp",0); | ||
106 | + int level3 = chargerLutin("Lutins/level3.bmp",0); | ||
107 | + int levelclr = chargerLutin("Lutins/level_cleared.bmp",0); | ||
108 | + int youwin = chargerLutin("Lutins/youwin.bmp",0); | ||
109 | + int Tete; | ||
110 | + int Corps; | ||
111 | + int i; | ||
112 | + int abs, ord, obstacle=0, couleur,level=1,speed=5000,total=0,nombrechampis=6, s,nvx,nvy,abscenti,ordcenti,absqueue,ordqueue,ecriture=1,j,w; | ||
113 | + | ||
114 | + if(champi<0 || Teted<0 || Teteg<0 || Teteh <0 || Teteb<0 || Corpsg<0 || Corpsd<0 || Corpsh<0 || Corpsb<0 || gameover<0 || level1<0 || level2<0 || level3<0 || levelclr<0 || youwin<0){ printf("Image pas là\n"); exit(-1); } | ||
115 | + | ||
116 | + creerSurface(largeur,hauteur,titre); | ||
117 | + majSurface(); | ||
118 | + int gomme = creerLutin(0,0,50,50,-1); | ||
119 | + | ||
120 | +while(level<=3) { | ||
121 | + | ||
122 | + liste_poly muschrooms={.nombre=0}; | ||
123 | + Liste *maListe = initialisation(); | ||
124 | + int w,t,compteur=0,allonge; | ||
125 | + | ||
126 | + rectanglePlein(0,0,1000,1000,1); | ||
127 | + rectanglePlein(0,0,1000,1000,1); | ||
128 | + | ||
129 | + | ||
130 | + if(level==1) { afficherLutin(level1,250,250); majSurface(); sleep(1); } | ||
131 | + if(level==2) { afficherLutin(level2,250,250); majSurface(); sleep(1); } | ||
132 | + if(level==3) { afficherLutin(level3,250,250); majSurface(); sleep(1); } | ||
133 | + | ||
134 | + rectanglePlein(0,0,1000,1000,1); | ||
135 | + rectanglePlein(0,0,1000,1000,1); | ||
136 | + | ||
137 | + creationcenti(maListe,Teted,Corpsd); | ||
138 | + | ||
139 | + creerchampignons(nombrechampis,&muschrooms,champi); | ||
140 | + | ||
141 | + majSurface(); | ||
142 | + | ||
143 | + attendreEvenement(); | ||
144 | + | ||
145 | + s = 0; | ||
146 | + t = 0; | ||
147 | + | ||
148 | + while(1){ | ||
149 | + | ||
150 | + for(i=0;i<speed;i++) | ||
151 | + { | ||
152 | + if(lireTouche(&bas,&touche,(void **)&detail) && bas==1) | ||
153 | + { | ||
154 | + if(detail->sym==SDLK_RIGHT) t=0; | ||
155 | + if(detail->sym==SDLK_UP) t=1; | ||
156 | + if(detail->sym==SDLK_LEFT) t=2; | ||
157 | + if(detail->sym==SDLK_DOWN) t=3; | ||
158 | + } | ||
159 | + | ||
160 | + usleep(1); | ||
161 | + } | ||
162 | + if((t==0 && s!=2) || s==0) { abs=50; ord=0; Tete = Teted; Corps = Corpsd; s=0; } | ||
163 | + if((t==1 && s!=3) || s==1) { abs=0; ord=(-50); Tete = Teteh; Corps = Corpsh; s=1; } | ||
164 | + if((t==2 && s!=0) || s==2) { abs=-50; ord=0; Tete = Teteg; Corps = Corpsg; s=2; } | ||
165 | + if((t==3 && s!=1) || s==3) { abs=0; ord=50; Tete = Teteb; Corps = Corpsb; s=3; } | ||
166 | + | ||
167 | + abscenti = abstete(maListe); | ||
168 | + ordcenti = ordtete(maListe); | ||
169 | + nvx = abscenti+abs; | ||
170 | + nvy = ordcenti+ord; | ||
171 | + if(nvx==1000 || nvy==1000 || nvx==-50 || nvy==-50) | ||
172 | + { | ||
173 | + afficherLutin(gameover,250,433); | ||
174 | + majSurface(); | ||
175 | + sleep(5); | ||
176 | + break; | ||
177 | + } | ||
178 | + | ||
179 | + majSurface(); | ||
180 | + couleur = couleurPixel(nvx+25,nvy+25); | ||
181 | + if(couleur!=1) obstacle = 1; | ||
182 | + else obstacle = 0; | ||
183 | + allonge = 0; | ||
184 | + | ||
185 | + | ||
186 | + if(obstacle==1){ | ||
187 | + for(w=0;w<nombrechampis;w++) | ||
188 | + { | ||
189 | + if((muschrooms.contenu[w].x) == nvx && (muschrooms.contenu[w].y) == nvy) { allonge = 1; } } | ||
190 | + if(allonge==1){ | ||
191 | + afficherLutin(gomme,nvx,nvy); | ||
192 | + afficherLutin(gomme,abscenti,ordcenti); | ||
193 | + afficherLutin(Corps,abscenti,ordcenti); | ||
194 | + insertion(maListe,nvx,nvy); | ||
195 | + afficherLutin(Tete,nvx,nvy); | ||
196 | + compteur++; | ||
197 | + } | ||
198 | + else { | ||
199 | + afficherLutin(gameover,250,433); | ||
200 | + majSurface(); | ||
201 | + sleep(5); | ||
202 | + break; | ||
203 | + } | ||
204 | + | ||
205 | + | ||
206 | + } | ||
207 | + | ||
208 | + if(obstacle==0){ | ||
209 | + afficherLutin(gomme,abscenti,ordcenti); | ||
210 | + afficherLutin(Corps,abscenti,ordcenti); | ||
211 | + absqueue = abscul(maListe); | ||
212 | + ordqueue = ordcul(maListe); | ||
213 | + freelastbloc(maListe); | ||
214 | + insertion(maListe,nvx,nvy); | ||
215 | + afficherLutin(Tete,nvx,nvy); | ||
216 | + afficherLutin(gomme,absqueue,ordqueue); | ||
217 | + } | ||
218 | + | ||
219 | + majSurface(); | ||
220 | + | ||
221 | + if(compteur==nombrechampis) break; | ||
222 | + | ||
223 | + if(touche=='a') | ||
224 | + { | ||
225 | + fermerSurface(); | ||
226 | + return 0; | ||
227 | + } | ||
228 | + } | ||
229 | + | ||
230 | + | ||
231 | + total = total+compteur; | ||
232 | + if(compteur != nombrechampis) break; | ||
233 | + if(level==3) { afficherLutin(youwin,204,400); majSurface(); sleep(3); } | ||
234 | + else { afficherLutin(levelclr,304,454); majSurface(); sleep(3); } | ||
235 | + compteur = 0; | ||
236 | + nombrechampis = nombrechampis+3; | ||
237 | + speed = speed/2; | ||
238 | + level++; | ||
239 | + freeListe(maListe); | ||
240 | +} | ||
241 | + printf("votre score est de %d\n",total); | ||
242 | + | ||
243 | + for(i=0;i<10;i++) // initialisation de la liste classement | ||
244 | + { | ||
245 | + strcpy(ranking.classement[i].pseudo,"vide"); | ||
246 | + ranking.classement[i].score=0; | ||
247 | + } | ||
248 | + | ||
249 | + fermerSurface(); | ||
250 | + printf("Saisissez votre pseudo\n"); | ||
251 | + scanf("%s",scorefait.pseudo); | ||
252 | + scorefait.score=total; | ||
253 | + | ||
254 | + | ||
255 | + FILE *fichier=fopen("scores.txt","a+"); // Gestion fichier | ||
256 | + fclose(fichier); | ||
257 | + fichier=fopen("scores.txt","r+"); | ||
258 | + if(fichier!=NULL){ | ||
259 | + | ||
260 | + while((fread(&autres,sizeof(autres),1,fichier)!=0)) | ||
261 | + { | ||
262 | + if(strcmp(autres.pseudo,scorefait.pseudo)==0) | ||
263 | + { | ||
264 | + if(total>autres.score) | ||
265 | + { | ||
266 | + fseek(fichier,-sizeof(scorefait),SEEK_CUR); | ||
267 | + fwrite(&scorefait,sizeof(scorefait),1,fichier); | ||
268 | + } | ||
269 | + ecriture=0; | ||
270 | + break; | ||
271 | + } | ||
272 | + ecriture=1; | ||
273 | + } | ||
274 | + if(ecriture==1) {fwrite(&scorefait,sizeof(scorefait),1,fichier);} | ||
275 | + } | ||
276 | + rewind(fichier); | ||
277 | + while((fread(&lecture,sizeof(lecture),1,fichier)!=0)) | ||
278 | + { | ||
279 | + for(w=0;w<10;w++) | ||
280 | + { | ||
281 | + if(lecture.score>ranking.classement[w].score) | ||
282 | + { | ||
283 | + for(j=10;j>w;j--) | ||
284 | + { | ||
285 | + strcpy(ranking.classement[j].pseudo,ranking.classement[j-1].pseudo); // gestion et affichage classement | ||
286 | + ranking.classement[j].score=ranking.classement[j-1].score; | ||
287 | + } | ||
288 | + strcpy(ranking.classement[w].pseudo,lecture.pseudo); | ||
289 | + ranking.classement[w].score=lecture.score; | ||
290 | + break; | ||
291 | + } | ||
292 | + } | ||
293 | + } | ||
294 | + printf("RANKING :\n"); | ||
295 | + for(w=0;w<10;w++) | ||
296 | + { | ||
297 | + printf("%i : %s , score : %d\n",w+1,ranking.classement[w].pseudo,ranking.classement[w].score); | ||
298 | + } | ||
299 | + fclose(fichier); | ||
300 | + | ||
301 | + return 0; | ||
302 | +} | ||
303 | + | ||
304 | + |
No preview for this file type
@@ -0,0 +1,29 @@ | @@ -0,0 +1,29 @@ | ||
1 | +# | ||
2 | +# Makefile pour la bibliotheque graphique | ||
3 | +# | ||
4 | + | ||
5 | +SOURCES = $(wildcard *.c) | ||
6 | +OBJETS = $(SOURCES:.c=.o) | ||
7 | +CIBLE = libgraph.a | ||
8 | + | ||
9 | +# | ||
10 | +# Nom de la cible principale | ||
11 | +# | ||
12 | + | ||
13 | +all: $(CIBLE) | ||
14 | + | ||
15 | +# | ||
16 | +# Cible de nettoyage | ||
17 | +# | ||
18 | + | ||
19 | +clean: | ||
20 | + rm -f core *.o $(CIBLE) | ||
21 | + | ||
22 | +# | ||
23 | +# Dependances pour la bibliotheque | ||
24 | +# | ||
25 | + | ||
26 | +$(CIBLE): $(OBJETS) | ||
27 | + $(AR) rs $@ $? | ||
28 | + | ||
29 | +$(CIBLE:.a=).o: $(CIBLE:.a=).c $(CIBLE:.a=).h |
No preview for this file type
@@ -0,0 +1,180 @@ | @@ -0,0 +1,180 @@ | ||
1 | +/**** Bibliotheque graphique ****/ | ||
2 | + | ||
3 | +/** Fichiers d'inclusion **/ | ||
4 | + | ||
5 | +#include <SDL/SDL.h> | ||
6 | + | ||
7 | +#include "libgraph.h" | ||
8 | + | ||
9 | +/** Types **/ | ||
10 | + | ||
11 | +typedef struct { int r,v,b; } couleur; | ||
12 | + | ||
13 | +/** Constantes **/ | ||
14 | + | ||
15 | +#define BITS_PAR_PIXEL 32 | ||
16 | + | ||
17 | +static const couleur couleurs[]={ | ||
18 | + {255,255,255}, | ||
19 | + {0,0,0}, | ||
20 | + {255,0,0}, | ||
21 | + {0,255,0}, | ||
22 | + {0,0,255}, | ||
23 | + {255,105,180}, | ||
24 | + {150,150,150}, | ||
25 | + {-1,-1,-1} | ||
26 | + }; | ||
27 | + | ||
28 | +/** Variables globales **/ | ||
29 | + | ||
30 | +static SDL_Surface *surface; | ||
31 | + | ||
32 | +/** Fonctions **/ | ||
33 | + | ||
34 | +/* Initialisation de la surface dessinable */ | ||
35 | + | ||
36 | +unsigned char creerSurface(int largeur,int hauteur,char *titre){ | ||
37 | +SDL_Init(SDL_INIT_VIDEO); | ||
38 | +SDL_WM_SetCaption(titre,titre); | ||
39 | +surface=SDL_SetVideoMode(largeur,hauteur,BITS_PAR_PIXEL,SDL_DOUBLEBUF); | ||
40 | +return (surface!=NULL); | ||
41 | +} | ||
42 | + | ||
43 | +/* Fermeture de la surface dessinable */ | ||
44 | + | ||
45 | +void fermerSurface(void){ | ||
46 | +if(surface!=NULL) SDL_FreeSurface(surface); | ||
47 | +SDL_Quit(); | ||
48 | +} | ||
49 | + | ||
50 | +/* Creation d'une couleur */ | ||
51 | + | ||
52 | +static int creerCouleur(int ncouleur){ | ||
53 | +couleur c=couleurs[ncouleur]; | ||
54 | +return SDL_MapRGB(surface->format,c.r,c.v,c.b); | ||
55 | +} | ||
56 | + | ||
57 | +/* Dessin d'un rectangle plein */ | ||
58 | + | ||
59 | +void rectanglePlein(int x,int y,int l,int h,int c){ | ||
60 | +SDL_Rect rectangle={x,y,l,h}; | ||
61 | +SDL_FillRect(surface,&rectangle,creerCouleur(c)); | ||
62 | +//SDL_Flip(surface); | ||
63 | +} | ||
64 | + | ||
65 | +/* Manipulation de lutins */ | ||
66 | + | ||
67 | +static SDL_Surface *lutins[MAX_LUTINS]; | ||
68 | +static int lutins_nb=0; | ||
69 | + | ||
70 | +static void configurerLutin(SDL_Surface *lutin,int ncouleur){ | ||
71 | +couleur c=couleurs[ncouleur]; | ||
72 | +int fond=SDL_MapRGB(lutin->format,c.r,c.v,c.b); | ||
73 | +SDL_SetColorKey(lutin,SDL_SRCCOLORKEY|SDL_RLEACCEL,fond); | ||
74 | +} | ||
75 | + | ||
76 | +int chargerLutin(char *fichier,int couleur){ | ||
77 | +if(lutins_nb>=MAX_LUTINS) return -2; | ||
78 | +SDL_Surface *lutin=SDL_LoadBMP(fichier); | ||
79 | +if(lutin!=NULL){ | ||
80 | + lutins[lutins_nb++]=lutin; | ||
81 | + if(couleur>=0) configurerLutin(lutin,couleur); | ||
82 | + return lutins_nb-1; | ||
83 | + } | ||
84 | +return -1; | ||
85 | +} | ||
86 | + | ||
87 | +void afficherLutin(int lutin,int x,int y){ | ||
88 | +SDL_Rect position; | ||
89 | +position.x=x; | ||
90 | +position.y=y; | ||
91 | +SDL_BlitSurface(lutins[lutin],NULL,surface,&position); | ||
92 | +} | ||
93 | + | ||
94 | +int creerLutin(int x,int y,int largeur,int hauteur,int couleur){ | ||
95 | +if(lutins_nb>=MAX_LUTINS) return -2; | ||
96 | +int rmask,gmask,bmask,amask; | ||
97 | +#if SDL_BYTEORDER == SDL_BIG_ENDIAN | ||
98 | +rmask=0xff000000; gmask=0x00ff0000; bmask=0x0000ff00; amask=0x000000ff; | ||
99 | +#else | ||
100 | +rmask=0x000000ff; gmask=0x0000ff00; bmask=0x00ff0000; amask=0xff000000; | ||
101 | +#endif | ||
102 | +if(couleur<0) amask=0x00000000; | ||
103 | +SDL_Surface *lutin=SDL_CreateRGBSurface(0,largeur,hauteur,BITS_PAR_PIXEL,rmask,gmask,bmask,amask); | ||
104 | +SDL_Rect fenetre; | ||
105 | +fenetre.x=x; | ||
106 | +fenetre.y=y; | ||
107 | +fenetre.h=hauteur; | ||
108 | +fenetre.w=largeur; | ||
109 | +SDL_BlitSurface(surface,&fenetre,lutin,NULL); | ||
110 | +lutins[lutins_nb++]=lutin; | ||
111 | +if(couleur>=0) configurerLutin(lutin,couleur); | ||
112 | +return lutins_nb-1; | ||
113 | +} | ||
114 | + | ||
115 | +void tailleLutin(int lutin,int *largeur,int *hauteur){ | ||
116 | +*largeur=lutins[lutin]->w; | ||
117 | +*hauteur=lutins[lutin]->h; | ||
118 | +} | ||
119 | + | ||
120 | +int sauverLutin(int lutin,char *nom){ return SDL_SaveBMP(lutins[lutin],nom); } | ||
121 | + | ||
122 | +/* Manipulation de copie de surface en BMP */ | ||
123 | + | ||
124 | +int sauverSurface(char *fichier){ return SDL_SaveBMP(surface,fichier); } | ||
125 | + | ||
126 | +unsigned char chargerSurface(char *fichier){ | ||
127 | +SDL_Surface *image=SDL_LoadBMP(fichier); | ||
128 | +if(image!=NULL){ | ||
129 | + SDL_BlitSurface(image,NULL,surface,NULL); | ||
130 | + SDL_Flip(surface); | ||
131 | + } | ||
132 | +return (image!=NULL); | ||
133 | +} | ||
134 | + | ||
135 | +void majSurface(void){ SDL_Flip(surface); } | ||
136 | + | ||
137 | +/* Trouver la couleur d'un pixel */ | ||
138 | + | ||
139 | +int couleurPixel(int x,int y){ | ||
140 | +int bpp=surface->format->BytesPerPixel; | ||
141 | +Uint32 *p=(Uint32 *)(surface->pixels+y*surface->pitch+x*bpp); | ||
142 | +Uint8 r,v,b; | ||
143 | +SDL_GetRGB(*p,surface->format,&r,&v,&b); | ||
144 | +int i=0; | ||
145 | +while(1){ | ||
146 | + if(couleurs[i].r<0) break; | ||
147 | + if(r==couleurs[i].r && v==couleurs[i].v && b==couleurs[i].b) break; | ||
148 | + i++; | ||
149 | + } | ||
150 | +if(couleurs[i].r<0) return -1; else return i; | ||
151 | +} | ||
152 | + | ||
153 | +/* Fonction de traitement des événements */ | ||
154 | + | ||
155 | +unsigned char lireTouche(unsigned char *bas,char *touche,void **detail){ | ||
156 | +static SDL_keysym _detail; | ||
157 | +SDL_Event event; | ||
158 | +while(SDL_PollEvent(&event)){ | ||
159 | + if(event.type==SDL_KEYDOWN || event.type==SDL_KEYUP){ | ||
160 | + *bas=(event.type==SDL_KEYDOWN)?1:0; | ||
161 | + char* nom=SDL_GetKeyName(event.key.keysym.sym); | ||
162 | + if(strlen(nom)==1 && nom[0]>=32 && nom[0]<128) *touche=nom[0]; else *touche=0; | ||
163 | + _detail=event.key.keysym; | ||
164 | + *detail=&_detail; | ||
165 | + return 1; | ||
166 | + } | ||
167 | + } | ||
168 | +return 0; | ||
169 | +} | ||
170 | + | ||
171 | +void attendreEvenement(void){ | ||
172 | +SDL_Event event; | ||
173 | +while(SDL_WaitEvent(&event)) | ||
174 | + switch(event.type){ | ||
175 | + case SDL_KEYDOWN: | ||
176 | + case SDL_MOUSEBUTTONDOWN: | ||
177 | + case SDL_QUIT: | ||
178 | + return; | ||
179 | + } | ||
180 | +} |
@@ -0,0 +1,33 @@ | @@ -0,0 +1,33 @@ | ||
1 | +/**** Bibliotheque graphique (definitions) ****/ | ||
2 | + | ||
3 | +/** Constantes **/ | ||
4 | + | ||
5 | +#define COULEUR_BLANC 0 | ||
6 | +#define COULEUR_NOIR 1 | ||
7 | +#define COULEUR_ROUGE 2 | ||
8 | +#define COULEUR_VERT 3 | ||
9 | +#define COULEUR_BLEU 4 | ||
10 | +#define COULEUR_ROSE 5 | ||
11 | +#define COULEUR_GRIS 6 | ||
12 | + | ||
13 | +#define MAX_LUTINS 16 | ||
14 | + | ||
15 | +/** Prototypes **/ | ||
16 | + | ||
17 | +unsigned char creerSurface(int largeur,int hauteur,char *titre); | ||
18 | +unsigned char chargerSurface(char *fichier); | ||
19 | +int sauverSurface(char *fichier); | ||
20 | +void majSurface(void); | ||
21 | +void fermerSurface(void); | ||
22 | + | ||
23 | +void rectanglePlein(int x,int y,int l,int h,int c); | ||
24 | +int couleurPixel(int x,int y); | ||
25 | + | ||
26 | +int chargerLutin(char *fichier,int couleur); | ||
27 | +void afficherLutin(int lutin,int x,int y); | ||
28 | +int creerLutin(int x,int y,int largeur,int hauteur,int couleur); | ||
29 | +int sauverLutin(int lutin,char *nom); | ||
30 | +void tailleLutin(int lutin,int *largeur,int *hauteur); | ||
31 | + | ||
32 | +unsigned char lireTouche(unsigned char *bas,char *touche,void **detail); | ||
33 | +void attendreEvenement(void); |
No preview for this file type
@@ -0,0 +1,29 @@ | @@ -0,0 +1,29 @@ | ||
1 | +# | ||
2 | +# Makefile pour la bibliotheque graphique | ||
3 | +# | ||
4 | + | ||
5 | +SOURCES = $(wildcard *.c) | ||
6 | +OBJETS = $(SOURCES:.c=.o) | ||
7 | +CIBLE = libListe.a | ||
8 | + | ||
9 | +# | ||
10 | +# Nom de la cible principale | ||
11 | +# | ||
12 | + | ||
13 | +all: $(CIBLE) | ||
14 | + | ||
15 | +# | ||
16 | +# Cible de nettoyage | ||
17 | +# | ||
18 | + | ||
19 | +clean: | ||
20 | + rm -f core *.o $(CIBLE) | ||
21 | + | ||
22 | +# | ||
23 | +# Dependances pour la bibliotheque | ||
24 | +# | ||
25 | + | ||
26 | +$(CIBLE): $(OBJETS) | ||
27 | + $(AR) rs $@ $? | ||
28 | + | ||
29 | +$(CIBLE:.a=).o: $(CIBLE:.a=).c $(CIBLE:.a=).h |
No preview for this file type
@@ -0,0 +1,192 @@ | @@ -0,0 +1,192 @@ | ||
1 | +#include <stdio.h> | ||
2 | +#include <stdlib.h> | ||
3 | +#include "libFile.h" | ||
4 | +#include <string.h> | ||
5 | + | ||
6 | +// Fonctions pour projets avec file | ||
7 | + | ||
8 | +int taille(liste_t *l) | ||
9 | +{ | ||
10 | + return l->nombre; | ||
11 | +} | ||
12 | + | ||
13 | +int enfiler (liste_t *l, element_t e, int taille){ | ||
14 | +element_t nouveau=malloc(taille); | ||
15 | +memcpy(nouveau,e,taille); | ||
16 | +if (l->nombre >= l->alloue) | ||
17 | + { | ||
18 | + l->contenu = realloc(l->contenu, (l->alloue+300)*sizeof(element_t)); | ||
19 | + l->alloue+=300; | ||
20 | + } | ||
21 | +l->contenu[l->nombre++]=nouveau; | ||
22 | +return 0; | ||
23 | +} | ||
24 | + | ||
25 | + | ||
26 | + | ||
27 | +int afficher(liste_t *l, void(*affichage)(element_t)) { | ||
28 | +int i; | ||
29 | +for(i=0; i<taille(l); i++) affichage(l->contenu[i]); | ||
30 | +return 0; | ||
31 | +} | ||
32 | + | ||
33 | +int defiler(liste_t *l) | ||
34 | +{ | ||
35 | + int i; | ||
36 | + | ||
37 | + if(taille(l)>=1) | ||
38 | + { | ||
39 | + free(l->contenu[0]); | ||
40 | + for(i=0; i < taille(l); i++) | ||
41 | + { | ||
42 | + l->contenu[i]=l->contenu[i+1]; | ||
43 | + } | ||
44 | + l->nombre--; | ||
45 | + } | ||
46 | + return 0; | ||
47 | +} | ||
48 | + | ||
49 | +element_t premier(liste_t *l) { | ||
50 | + return l->contenu[0]; } | ||
51 | + | ||
52 | +element_t dernier(liste_t *l) { | ||
53 | + return l->contenu[(l->nombre)-1];} | ||
54 | + | ||
55 | +element_t enieme(int x, liste_t *l) { | ||
56 | + return l->contenu[x]; | ||
57 | +} | ||
58 | + | ||
59 | +// Fonctions pour liste chainée | ||
60 | + | ||
61 | + | ||
62 | +Liste *initialisation() | ||
63 | +{ | ||
64 | + Liste *liste = malloc(sizeof(*liste)); | ||
65 | + Element *element = malloc(sizeof(*element)); | ||
66 | + | ||
67 | + if (liste == NULL || element == NULL) | ||
68 | + { | ||
69 | + exit(EXIT_FAILURE); | ||
70 | + } | ||
71 | + element->x =0; | ||
72 | + element->y =0; | ||
73 | + | ||
74 | + element->suivant = NULL; | ||
75 | + liste->premier = element; | ||
76 | + liste->nbelements =0; | ||
77 | + | ||
78 | + return liste; | ||
79 | +} | ||
80 | + | ||
81 | +void insertion(Liste *liste, int x, int y) | ||
82 | +{ | ||
83 | + /* Création du nouvel élément */ | ||
84 | + Element *nouveau = malloc(sizeof(*nouveau)); | ||
85 | + if (liste == NULL || nouveau == NULL) | ||
86 | + { | ||
87 | + exit(EXIT_FAILURE); | ||
88 | + } | ||
89 | + nouveau->x = x; | ||
90 | + nouveau->y = y; | ||
91 | + | ||
92 | + /* Insertion de l'élément au début de la liste */ | ||
93 | + nouveau->suivant = liste->premier; | ||
94 | + liste->premier = nouveau; | ||
95 | + liste->nbelements=liste->nbelements+1; | ||
96 | +} | ||
97 | + | ||
98 | +void afficherListe(Liste *liste) | ||
99 | +{ | ||
100 | + if (liste == NULL) | ||
101 | + { | ||
102 | + exit(EXIT_FAILURE); | ||
103 | + } | ||
104 | + | ||
105 | + Element *actuel = liste->premier; | ||
106 | + | ||
107 | + while (actuel != NULL) | ||
108 | + { | ||
109 | + printf("combinaison x,y : %d , %d \n", actuel->x,actuel->y); | ||
110 | + actuel = actuel->suivant; | ||
111 | + } | ||
112 | +} | ||
113 | + | ||
114 | +void suppression(Liste *liste) | ||
115 | +{ | ||
116 | + if (liste == NULL) | ||
117 | + { | ||
118 | + exit(EXIT_FAILURE); | ||
119 | + } | ||
120 | + | ||
121 | + if (liste->premier != NULL) | ||
122 | + { | ||
123 | + Element *aSupprimer = liste->premier; | ||
124 | + liste->premier = liste->premier->suivant; | ||
125 | + free(aSupprimer); | ||
126 | + } | ||
127 | +} | ||
128 | + | ||
129 | +int abstete(Liste *liste){ | ||
130 | + | ||
131 | + Element *actuel = liste->premier; | ||
132 | + return actuel->x; | ||
133 | + | ||
134 | +} | ||
135 | + | ||
136 | +int tailledelachaine(Liste *liste) { | ||
137 | + | ||
138 | + return liste->nbelements; | ||
139 | + | ||
140 | +} | ||
141 | + | ||
142 | + | ||
143 | +int ordtete(Liste *liste) { | ||
144 | + Element *actuel = liste->premier; | ||
145 | + return actuel->y; | ||
146 | +} | ||
147 | + | ||
148 | +int abscul(Liste *liste) { | ||
149 | + Element *actuel = liste->premier; | ||
150 | + int i; | ||
151 | + for(i=1;i<liste->nbelements;i++) | ||
152 | + { | ||
153 | + actuel = actuel->suivant; | ||
154 | + } | ||
155 | + return actuel->x; | ||
156 | +} | ||
157 | + | ||
158 | +int ordcul(Liste *liste) { | ||
159 | + Element *actuel = liste->premier; | ||
160 | + int i; | ||
161 | + for(i=1;i<liste->nbelements;i++) | ||
162 | + { | ||
163 | + actuel = actuel->suivant; | ||
164 | + } | ||
165 | + return actuel->y; | ||
166 | +} | ||
167 | + | ||
168 | + | ||
169 | +void freelastbloc(Liste *liste) { | ||
170 | + int i; | ||
171 | + Element *actuel = liste->premier; | ||
172 | + for(i=1; i<liste->nbelements-1; i++){ | ||
173 | + actuel = actuel->suivant; | ||
174 | + } | ||
175 | + Element *asupprimer = actuel->suivant; | ||
176 | + free(asupprimer); | ||
177 | + actuel->suivant = NULL; | ||
178 | + liste->nbelements = liste->nbelements-1; | ||
179 | +} | ||
180 | + | ||
181 | + | ||
182 | +void freeListe(Liste *liste){ | ||
183 | + while(liste->premier!=NULL) suppression(liste); | ||
184 | +} | ||
185 | + | ||
186 | + | ||
187 | + | ||
188 | + | ||
189 | + | ||
190 | + | ||
191 | + | ||
192 | + |
@@ -0,0 +1,192 @@ | @@ -0,0 +1,192 @@ | ||
1 | +#include <stdio.h> | ||
2 | +#include <stdlib.h> | ||
3 | +#include "libFile.h" | ||
4 | +#include <string.h> | ||
5 | + | ||
6 | +// Fonctions pour projets avec file | ||
7 | + | ||
8 | +int taille(liste_t *l) | ||
9 | +{ | ||
10 | + return l->nombre; | ||
11 | +} | ||
12 | + | ||
13 | +int enfiler (liste_t *l, element_t e, int taille){ | ||
14 | +element_t nouveau=malloc(taille); | ||
15 | +memcpy(nouveau,e,taille); | ||
16 | +if (l->nombre >= l->alloue) | ||
17 | + { | ||
18 | + l->contenu = realloc(l->contenu, (l->alloue+300)*sizeof(element_t)); | ||
19 | + l->alloue+=300; | ||
20 | + } | ||
21 | +l->contenu[l->nombre++]=nouveau; | ||
22 | +return 0; | ||
23 | +} | ||
24 | + | ||
25 | + | ||
26 | + | ||
27 | +int afficher(liste_t *l, void(*affichage)(element_t)) { | ||
28 | +int i; | ||
29 | +for(i=0; i<taille(l); i++) affichage(l->contenu[i]); | ||
30 | +return 0; | ||
31 | +} | ||
32 | + | ||
33 | +int defiler(liste_t *l) | ||
34 | +{ | ||
35 | + int i; | ||
36 | + | ||
37 | + if(taille(l)>=1) | ||
38 | + { | ||
39 | + free(l->contenu[0]); | ||
40 | + for(i=0; i < taille(l); i++) | ||
41 | + { | ||
42 | + l->contenu[i]=l->contenu[i+1]; | ||
43 | + } | ||
44 | + l->nombre--; | ||
45 | + } | ||
46 | + return 0; | ||
47 | +} | ||
48 | + | ||
49 | +element_t premier(liste_t *l) { | ||
50 | + return l->contenu[0]; } | ||
51 | + | ||
52 | +element_t dernier(liste_t *l) { | ||
53 | + return l->contenu[(l->nombre)-1];} | ||
54 | + | ||
55 | +element_t enieme(int x, liste_t *l) { | ||
56 | + return l->contenu[x]; | ||
57 | +} | ||
58 | + | ||
59 | +// Fonctions pour liste chainée | ||
60 | + | ||
61 | + | ||
62 | +Liste *initialisation() | ||
63 | +{ | ||
64 | + Liste *liste = malloc(sizeof(*liste)); | ||
65 | + Element *element = malloc(sizeof(*element)); | ||
66 | + | ||
67 | + if (liste == NULL || element == NULL) | ||
68 | + { | ||
69 | + exit(EXIT_FAILURE); | ||
70 | + } | ||
71 | + element->x =0; | ||
72 | + element->y =0; | ||
73 | + | ||
74 | + element->suivant = NULL; | ||
75 | + liste->premier = element; | ||
76 | + liste->nbelements =0; | ||
77 | + | ||
78 | + return liste; | ||
79 | +} | ||
80 | + | ||
81 | +void insertion(Liste *liste, int x, int y) | ||
82 | +{ | ||
83 | + /* Création du nouvel élément */ | ||
84 | + Element *nouveau = malloc(sizeof(*nouveau)); | ||
85 | + if (liste == NULL || nouveau == NULL) | ||
86 | + { | ||
87 | + exit(EXIT_FAILURE); | ||
88 | + } | ||
89 | + nouveau->x = x; | ||
90 | + nouveau->y = y; | ||
91 | + | ||
92 | + /* Insertion de l'élément au début de la liste */ | ||
93 | + nouveau->suivant = liste->premier; | ||
94 | + liste->premier = nouveau; | ||
95 | + liste->nbelements=liste->nbelements+1; | ||
96 | +} | ||
97 | + | ||
98 | +void afficherListe(Liste *liste) | ||
99 | +{ | ||
100 | + if (liste == NULL) | ||
101 | + { | ||
102 | + exit(EXIT_FAILURE); | ||
103 | + } | ||
104 | + | ||
105 | + Element *actuel = liste->premier; | ||
106 | + | ||
107 | + while (actuel != NULL) | ||
108 | + { | ||
109 | + printf("combinaison x,y : %d , %d \n", actuel->x,actuel->y); | ||
110 | + actuel = actuel->suivant; | ||
111 | + } | ||
112 | +} | ||
113 | + | ||
114 | +void suppression(Liste *liste) | ||
115 | +{ | ||
116 | + if (liste == NULL) | ||
117 | + { | ||
118 | + exit(EXIT_FAILURE); | ||
119 | + } | ||
120 | + | ||
121 | + if (liste->premier != NULL) | ||
122 | + { | ||
123 | + Element *aSupprimer = liste->premier; | ||
124 | + liste->premier = liste->premier->suivant; | ||
125 | + free(aSupprimer); | ||
126 | + } | ||
127 | +} | ||
128 | + | ||
129 | +int abstete(Liste *liste){ | ||
130 | + | ||
131 | + Element *actuel = liste->premier; | ||
132 | + return actuel->x; | ||
133 | + | ||
134 | +} | ||
135 | + | ||
136 | +int tailledelachaine(Liste *liste) { | ||
137 | + | ||
138 | + return liste->nbelements; | ||
139 | + | ||
140 | +} | ||
141 | + | ||
142 | + | ||
143 | +int ordtete(Liste *liste) { | ||
144 | + Element *actuel = liste->premier; | ||
145 | + return actuel->y; | ||
146 | +} | ||
147 | + | ||
148 | +int abscul(Liste *liste) { | ||
149 | + Element *actuel = liste->premier; | ||
150 | + int i; | ||
151 | + for(i=1;i<liste->nbelements;i++) | ||
152 | + { | ||
153 | + actuel = actuel->suivant; | ||
154 | + } | ||
155 | + return actuel->x; | ||
156 | +} | ||
157 | + | ||
158 | +int ordcul(Liste *liste) { | ||
159 | + Element *actuel = liste->premier; | ||
160 | + int i; | ||
161 | + for(i=1;i<liste->nbelements;i++) | ||
162 | + { | ||
163 | + actuel = actuel->suivant; | ||
164 | + } | ||
165 | + return actuel->y; | ||
166 | +} | ||
167 | + | ||
168 | + | ||
169 | +void freelastbloc(Liste *liste) { | ||
170 | + int i; | ||
171 | + Element *actuel = liste->premier; | ||
172 | + for(i=1; i<liste->nbelements-1; i++){ | ||
173 | + actuel = actuel->suivant; | ||
174 | + } | ||
175 | + Element *asupprimer = actuel->suivant; | ||
176 | + free(asupprimer); | ||
177 | + actuel->suivant = NULL; | ||
178 | + liste->nbelements = liste->nbelements-1; | ||
179 | +} | ||
180 | + | ||
181 | + | ||
182 | +void freeListe(Liste *liste){ | ||
183 | + while(liste->premier!=NULL) suppression(liste); | ||
184 | +} | ||
185 | + | ||
186 | + | ||
187 | + | ||
188 | + | ||
189 | + | ||
190 | + | ||
191 | + | ||
192 | + |
@@ -0,0 +1,45 @@ | @@ -0,0 +1,45 @@ | ||
1 | +typedef void *element_t; | ||
2 | + | ||
3 | + typedef struct { | ||
4 | + element_t *contenu; | ||
5 | + int nombre; | ||
6 | + int alloue; | ||
7 | +} liste_t; | ||
8 | + | ||
9 | +int taille(liste_t *l); | ||
10 | +int enfiler (liste_t *l,element_t e, int taille); | ||
11 | +int afficher (liste_t *l, void(*affichage)(element_t)); | ||
12 | +int defiler(liste_t *l); | ||
13 | +element_t dernier(liste_t *l); | ||
14 | +element_t premier(liste_t *l); | ||
15 | +element_t enieme(int x, liste_t *l); | ||
16 | + | ||
17 | + | ||
18 | + | ||
19 | +typedef struct Element Element; | ||
20 | +struct Element | ||
21 | +{ | ||
22 | + int x; | ||
23 | + int y; | ||
24 | + Element *suivant; | ||
25 | +}; | ||
26 | + | ||
27 | + | ||
28 | +typedef struct Liste Liste; | ||
29 | +struct Liste | ||
30 | +{ | ||
31 | + int nbelements; | ||
32 | + Element *premier; | ||
33 | +}; | ||
34 | + | ||
35 | +Liste *initialisation(); | ||
36 | +void insertion(Liste *liste, int x, int y); | ||
37 | +void afficherListe(Liste *liste); | ||
38 | +void suppression(Liste *liste); | ||
39 | +int abstete(Liste *liste); | ||
40 | +int tailledelachaine(Liste *liste); | ||
41 | +int ordtete(Liste *liste); | ||
42 | +int abscul(Liste *liste); | ||
43 | +int ordcul(Liste *liste); | ||
44 | +void freelastbloc(Liste *liste); | ||
45 | +void freeListe(Liste *liste); |
@@ -0,0 +1,45 @@ | @@ -0,0 +1,45 @@ | ||
1 | +typedef void *element_t; | ||
2 | + | ||
3 | + typedef struct { | ||
4 | + element_t *contenu; | ||
5 | + int nombre; | ||
6 | + int alloue; | ||
7 | +} liste_t; | ||
8 | + | ||
9 | +int taille(liste_t *l); | ||
10 | +int enfiler (liste_t *l,element_t e, int taille); | ||
11 | +int afficher (liste_t *l, void(*affichage)(element_t)); | ||
12 | +int defiler(liste_t *l); | ||
13 | +element_t dernier(liste_t *l); | ||
14 | +element_t premier(liste_t *l); | ||
15 | +element_t enieme(int x, liste_t *l); | ||
16 | + | ||
17 | + | ||
18 | + | ||
19 | +typedef struct Element Element; | ||
20 | +struct Element | ||
21 | +{ | ||
22 | + int x; | ||
23 | + int y; | ||
24 | + Element *suivant; | ||
25 | +}; | ||
26 | + | ||
27 | + | ||
28 | +typedef struct Liste Liste; | ||
29 | +struct Liste | ||
30 | +{ | ||
31 | + int nbelements; | ||
32 | + Element *premier; | ||
33 | +}; | ||
34 | + | ||
35 | +Liste *initialisation(); | ||
36 | +void insertion(Liste *liste, int x, int y); | ||
37 | +void afficherListe(Liste *liste); | ||
38 | +void suppression(Liste *liste); | ||
39 | +int abstete(Liste *liste); | ||
40 | +int tailledelachaine(Liste *liste); | ||
41 | +int ordtete(Liste *liste); | ||
42 | +int abscul(Liste *liste); | ||
43 | +int ordcul(Liste *liste); | ||
44 | +void freelastbloc(Liste *liste); | ||
45 | + |
No preview for this file type
No preview for this file type
@@ -0,0 +1,278 @@ | @@ -0,0 +1,278 @@ | ||
1 | +#include <stdio.h> | ||
2 | +#include <stdlib.h> | ||
3 | +#include <string.h> | ||
4 | + | ||
5 | +/* typedef struct Element Element; | ||
6 | + | ||
7 | +struct Element | ||
8 | + | ||
9 | +{ | ||
10 | + | ||
11 | + int nombre; | ||
12 | + | ||
13 | + Element *suivant; | ||
14 | + | ||
15 | +}; | ||
16 | + | ||
17 | + | ||
18 | +typedef struct Liste Liste; | ||
19 | + | ||
20 | +struct Liste | ||
21 | + | ||
22 | +{ | ||
23 | + | ||
24 | + Element *premier; | ||
25 | + | ||
26 | +}; | ||
27 | + | ||
28 | + | ||
29 | +Liste *initialisation() | ||
30 | +{ | ||
31 | + Liste *liste = malloc(sizeof(*liste)); | ||
32 | + Element *element = malloc(sizeof(*element)); | ||
33 | + | ||
34 | + if (liste == NULL || element == NULL) | ||
35 | + { | ||
36 | + exit(EXIT_FAILURE); | ||
37 | + } | ||
38 | + | ||
39 | + element->nombre = 0; | ||
40 | + element->suivant = NULL; | ||
41 | + liste->premier = element; | ||
42 | + | ||
43 | + return liste; | ||
44 | +} | ||
45 | + | ||
46 | +void insertion(Liste *liste, int nvNombre) | ||
47 | +{ | ||
48 | + | ||
49 | + Element *nouveau = malloc(sizeof(*nouveau)); | ||
50 | + if (liste == NULL || nouveau == NULL) | ||
51 | + { | ||
52 | + exit(EXIT_FAILURE); | ||
53 | + } | ||
54 | + nouveau->nombre = nvNombre; | ||
55 | + | ||
56 | + | ||
57 | + nouveau->suivant = liste->premier; | ||
58 | + liste->premier = nouveau; | ||
59 | +} | ||
60 | + | ||
61 | +void afficherListe(Liste *liste) | ||
62 | +{ | ||
63 | + if (liste == NULL) | ||
64 | + { | ||
65 | + exit(EXIT_FAILURE); | ||
66 | + } | ||
67 | + | ||
68 | + Element *actuel = liste->premier; | ||
69 | + | ||
70 | + while (actuel != NULL) | ||
71 | + { | ||
72 | + printf("%d -> ", actuel->nombre); | ||
73 | + actuel = actuel->suivant; | ||
74 | + } | ||
75 | + printf("NULL\n"); | ||
76 | +} | ||
77 | + | ||
78 | +void suppression(Liste *liste) | ||
79 | +{ | ||
80 | + if (liste == NULL) | ||
81 | + { | ||
82 | + exit(EXIT_FAILURE); | ||
83 | + } | ||
84 | + | ||
85 | + if (liste->premier != NULL) | ||
86 | + { | ||
87 | + Element *aSupprimer = liste->premier; | ||
88 | + liste->premier = liste->premier->suivant; | ||
89 | + free(aSupprimer); | ||
90 | + } | ||
91 | +} */ | ||
92 | + | ||
93 | +typedef struct Element Element; | ||
94 | + | ||
95 | +struct Element | ||
96 | + | ||
97 | +{ | ||
98 | + | ||
99 | + //int nombre; | ||
100 | + int x; | ||
101 | + int y; | ||
102 | + Element *suivant; | ||
103 | + | ||
104 | +}; | ||
105 | + | ||
106 | + | ||
107 | +typedef struct Liste Liste; | ||
108 | + | ||
109 | +struct Liste | ||
110 | + | ||
111 | +{ | ||
112 | + int nbelements; | ||
113 | + | ||
114 | + Element *premier; | ||
115 | + | ||
116 | +}; | ||
117 | + | ||
118 | + | ||
119 | +Liste *initialisation() | ||
120 | +{ | ||
121 | + Liste *liste = malloc(sizeof(*liste)); | ||
122 | + Element *element = malloc(sizeof(*element)); | ||
123 | + | ||
124 | + if (liste == NULL || element == NULL) | ||
125 | + { | ||
126 | + exit(EXIT_FAILURE); | ||
127 | + } | ||
128 | + | ||
129 | + //element->nombre = 0; | ||
130 | + element->x =0; | ||
131 | + element->y =0; | ||
132 | + | ||
133 | + element->suivant = NULL; | ||
134 | + liste->premier = element; | ||
135 | + liste->nbelements =0; | ||
136 | + | ||
137 | + return liste; | ||
138 | +} | ||
139 | + | ||
140 | +void insertion(Liste *liste, int x, int y) | ||
141 | +{ | ||
142 | + /* Création du nouvel élément */ | ||
143 | + Element *nouveau = malloc(sizeof(*nouveau)); | ||
144 | + if (liste == NULL || nouveau == NULL) | ||
145 | + { | ||
146 | + exit(EXIT_FAILURE); | ||
147 | + } | ||
148 | + nouveau->x = x; | ||
149 | + nouveau->y = y; | ||
150 | + | ||
151 | + /* Insertion de l'élément au début de la liste */ | ||
152 | + nouveau->suivant = liste->premier; | ||
153 | + liste->premier = nouveau; | ||
154 | + liste->nbelements=liste->nbelements+1; | ||
155 | +} | ||
156 | + | ||
157 | +void afficherListe(Liste *liste) | ||
158 | +{ | ||
159 | + if (liste == NULL) | ||
160 | + { | ||
161 | + exit(EXIT_FAILURE); | ||
162 | + } | ||
163 | + | ||
164 | + Element *actuel = liste->premier; | ||
165 | + | ||
166 | + while (actuel != NULL) | ||
167 | + { | ||
168 | + printf("combinaison x,y : %d , %d \n", actuel->x,actuel->y); | ||
169 | + actuel = actuel->suivant; | ||
170 | + } | ||
171 | +} | ||
172 | + | ||
173 | +void suppression(Liste *liste) | ||
174 | +{ | ||
175 | + if (liste == NULL) | ||
176 | + { | ||
177 | + exit(EXIT_FAILURE); | ||
178 | + } | ||
179 | + | ||
180 | + if (liste->premier != NULL) | ||
181 | + { | ||
182 | + Element *aSupprimer = liste->premier; | ||
183 | + liste->premier = liste->premier->suivant; | ||
184 | + free(aSupprimer); | ||
185 | + } | ||
186 | +} | ||
187 | + | ||
188 | +int abstete(Liste *liste){ | ||
189 | + | ||
190 | + Element *actuel = liste->premier; | ||
191 | + return actuel->x; | ||
192 | + | ||
193 | +} | ||
194 | + | ||
195 | +int tailledelachaine(Liste *liste) { | ||
196 | + | ||
197 | + return liste->nbelements; | ||
198 | + | ||
199 | +} | ||
200 | + | ||
201 | + | ||
202 | +int ordtete(Liste *liste) { | ||
203 | + Element *actuel = liste->premier; | ||
204 | + return actuel->y; | ||
205 | +} | ||
206 | + | ||
207 | +int abscul(Liste *liste) { | ||
208 | + Element *actuel = liste->premier; | ||
209 | + int i; | ||
210 | + for(i=1;i<liste->nbelements;i++) | ||
211 | + { | ||
212 | + actuel = actuel->suivant; | ||
213 | + } | ||
214 | + return actuel->x; | ||
215 | +} | ||
216 | + | ||
217 | +int ordcul(Liste *liste) { | ||
218 | + Element *actuel = liste->premier; | ||
219 | + int i; | ||
220 | + for(i=1;i<liste->nbelements;i++) | ||
221 | + { | ||
222 | + actuel = actuel->suivant; | ||
223 | + } | ||
224 | + return actuel->y; | ||
225 | +} | ||
226 | + | ||
227 | + | ||
228 | +void freelastbloc(Liste *liste) { | ||
229 | + int i; | ||
230 | + Element *actuel = liste->premier; | ||
231 | + for(i=1; i<liste->nbelements-1; i++){ | ||
232 | + actuel = actuel->suivant; | ||
233 | + } | ||
234 | + Element *asupprimer = actuel->suivant; | ||
235 | + free(asupprimer); | ||
236 | + actuel->suivant = NULL; | ||
237 | + liste->nbelements = liste->nbelements-1; | ||
238 | +} | ||
239 | + | ||
240 | +void freeListe(Liste *liste){ | ||
241 | + while(liste->premier!=NULL) suppression(liste); | ||
242 | +} | ||
243 | + | ||
244 | +int main() | ||
245 | + | ||
246 | +{ | ||
247 | + | ||
248 | + Liste *maListe = initialisation(); | ||
249 | + | ||
250 | + | ||
251 | + insertion(maListe, 4 , 8); | ||
252 | + | ||
253 | + insertion(maListe, 3 , 9); | ||
254 | + | ||
255 | + insertion(maListe, 7 , 12); | ||
256 | + | ||
257 | + insertion(maListe, 10 , 15); | ||
258 | + | ||
259 | + printf("\n\n\n"); | ||
260 | + | ||
261 | + int a = ordcul(maListe); | ||
262 | + | ||
263 | + printf("%d \n",a); | ||
264 | + | ||
265 | + freelastbloc(maListe); | ||
266 | + | ||
267 | + afficherListe(maListe); | ||
268 | + | ||
269 | + freeListe(maListe); | ||
270 | + | ||
271 | + printf("\n ca va free"); | ||
272 | + | ||
273 | + afficherListe(maListe); | ||
274 | + | ||
275 | +printf("\n ca a free"); | ||
276 | + return 0; | ||
277 | + | ||
278 | +} |
@@ -0,0 +1,275 @@ | @@ -0,0 +1,275 @@ | ||
1 | +#include <stdio.h> | ||
2 | +#include <stdlib.h> | ||
3 | +#include <string.h> | ||
4 | + | ||
5 | +/* typedef struct Element Element; | ||
6 | + | ||
7 | +struct Element | ||
8 | + | ||
9 | +{ | ||
10 | + | ||
11 | + int nombre; | ||
12 | + | ||
13 | + Element *suivant; | ||
14 | + | ||
15 | +}; | ||
16 | + | ||
17 | + | ||
18 | +typedef struct Liste Liste; | ||
19 | + | ||
20 | +struct Liste | ||
21 | + | ||
22 | +{ | ||
23 | + | ||
24 | + Element *premier; | ||
25 | + | ||
26 | +}; | ||
27 | + | ||
28 | + | ||
29 | +Liste *initialisation() | ||
30 | +{ | ||
31 | + Liste *liste = malloc(sizeof(*liste)); | ||
32 | + Element *element = malloc(sizeof(*element)); | ||
33 | + | ||
34 | + if (liste == NULL || element == NULL) | ||
35 | + { | ||
36 | + exit(EXIT_FAILURE); | ||
37 | + } | ||
38 | + | ||
39 | + element->nombre = 0; | ||
40 | + element->suivant = NULL; | ||
41 | + liste->premier = element; | ||
42 | + | ||
43 | + return liste; | ||
44 | +} | ||
45 | + | ||
46 | +void insertion(Liste *liste, int nvNombre) | ||
47 | +{ | ||
48 | + | ||
49 | + Element *nouveau = malloc(sizeof(*nouveau)); | ||
50 | + if (liste == NULL || nouveau == NULL) | ||
51 | + { | ||
52 | + exit(EXIT_FAILURE); | ||
53 | + } | ||
54 | + nouveau->nombre = nvNombre; | ||
55 | + | ||
56 | + | ||
57 | + nouveau->suivant = liste->premier; | ||
58 | + liste->premier = nouveau; | ||
59 | +} | ||
60 | + | ||
61 | +void afficherListe(Liste *liste) | ||
62 | +{ | ||
63 | + if (liste == NULL) | ||
64 | + { | ||
65 | + exit(EXIT_FAILURE); | ||
66 | + } | ||
67 | + | ||
68 | + Element *actuel = liste->premier; | ||
69 | + | ||
70 | + while (actuel != NULL) | ||
71 | + { | ||
72 | + printf("%d -> ", actuel->nombre); | ||
73 | + actuel = actuel->suivant; | ||
74 | + } | ||
75 | + printf("NULL\n"); | ||
76 | +} | ||
77 | + | ||
78 | +void suppression(Liste *liste) | ||
79 | +{ | ||
80 | + if (liste == NULL) | ||
81 | + { | ||
82 | + exit(EXIT_FAILURE); | ||
83 | + } | ||
84 | + | ||
85 | + if (liste->premier != NULL) | ||
86 | + { | ||
87 | + Element *aSupprimer = liste->premier; | ||
88 | + liste->premier = liste->premier->suivant; | ||
89 | + free(aSupprimer); | ||
90 | + } | ||
91 | +} */ | ||
92 | + | ||
93 | +typedef struct Element Element; | ||
94 | + | ||
95 | +struct Element | ||
96 | + | ||
97 | +{ | ||
98 | + | ||
99 | + //int nombre; | ||
100 | + int x; | ||
101 | + int y; | ||
102 | + Element *suivant; | ||
103 | + | ||
104 | +}; | ||
105 | + | ||
106 | + | ||
107 | +typedef struct Liste Liste; | ||
108 | + | ||
109 | +struct Liste | ||
110 | + | ||
111 | +{ | ||
112 | + int nbelements; | ||
113 | + | ||
114 | + Element *premier; | ||
115 | + | ||
116 | +}; | ||
117 | + | ||
118 | + | ||
119 | +Liste *initialisation() | ||
120 | +{ | ||
121 | + Liste *liste = malloc(sizeof(*liste)); | ||
122 | + Element *element = malloc(sizeof(*element)); | ||
123 | + | ||
124 | + if (liste == NULL || element == NULL) | ||
125 | + { | ||
126 | + exit(EXIT_FAILURE); | ||
127 | + } | ||
128 | + | ||
129 | + //element->nombre = 0; | ||
130 | + element->x =0; | ||
131 | + element->y =0; | ||
132 | + | ||
133 | + element->suivant = NULL; | ||
134 | + liste->premier = element; | ||
135 | + liste->nbelements =0; | ||
136 | + | ||
137 | + return liste; | ||
138 | +} | ||
139 | + | ||
140 | +void insertion(Liste *liste, int x, int y) | ||
141 | +{ | ||
142 | + /* Création du nouvel élément */ | ||
143 | + Element *nouveau = malloc(sizeof(*nouveau)); | ||
144 | + if (liste == NULL || nouveau == NULL) | ||
145 | + { | ||
146 | + exit(EXIT_FAILURE); | ||
147 | + } | ||
148 | + nouveau->x = x; | ||
149 | + nouveau->y = y; | ||
150 | + | ||
151 | + /* Insertion de l'élément au début de la liste */ | ||
152 | + nouveau->suivant = liste->premier; | ||
153 | + liste->premier = nouveau; | ||
154 | + liste->nbelements=liste->nbelements+1; | ||
155 | +} | ||
156 | + | ||
157 | +void afficherListe(Liste *liste) | ||
158 | +{ | ||
159 | + if (liste == NULL) | ||
160 | + { | ||
161 | + exit(EXIT_FAILURE); | ||
162 | + } | ||
163 | + | ||
164 | + Element *actuel = liste->premier; | ||
165 | + | ||
166 | + while (actuel != NULL) | ||
167 | + { | ||
168 | + printf("combinaison x,y : %d , %d \n", actuel->x,actuel->y); | ||
169 | + actuel = actuel->suivant; | ||
170 | + } | ||
171 | +} | ||
172 | + | ||
173 | +void suppression(Liste *liste) | ||
174 | +{ | ||
175 | + if (liste == NULL) | ||
176 | + { | ||
177 | + exit(EXIT_FAILURE); | ||
178 | + } | ||
179 | + | ||
180 | + if (liste->premier != NULL) | ||
181 | + { | ||
182 | + Element *aSupprimer = liste->premier; | ||
183 | + liste->premier = liste->premier->suivant; | ||
184 | + free(aSupprimer); | ||
185 | + } | ||
186 | +} | ||
187 | + | ||
188 | +int abstete(Liste *liste){ | ||
189 | + | ||
190 | + Element *actuel = liste->premier; | ||
191 | + return actuel->x; | ||
192 | + | ||
193 | +} | ||
194 | + | ||
195 | +int tailledelachaine(Liste *liste) { | ||
196 | + | ||
197 | + return liste->nbelements; | ||
198 | + | ||
199 | +} | ||
200 | + | ||
201 | + | ||
202 | +int ordtete(Liste *liste) { | ||
203 | + Element *actuel = liste->premier; | ||
204 | + return actuel->y; | ||
205 | +} | ||
206 | + | ||
207 | +int abscul(Liste *liste) { | ||
208 | + Element *actuel = liste->premier; | ||
209 | + int i; | ||
210 | + for(i=1;i<liste->nbelements;i++) | ||
211 | + { | ||
212 | + actuel = actuel->suivant; | ||
213 | + } | ||
214 | + return actuel->x; | ||
215 | +} | ||
216 | + | ||
217 | +int ordcul(Liste *liste) { | ||
218 | + Element *actuel = liste->premier; | ||
219 | + int i; | ||
220 | + for(i=1;i<liste->nbelements;i++) | ||
221 | + { | ||
222 | + actuel = actuel->suivant; | ||
223 | + } | ||
224 | + return actuel->y; | ||
225 | +} | ||
226 | + | ||
227 | + | ||
228 | +void freelastbloc(Liste *liste) { | ||
229 | + int i; | ||
230 | + Element *actuel = liste->premier; | ||
231 | + for(i=1; i<liste->nbelements-1; i++){ | ||
232 | + actuel = actuel->suivant; | ||
233 | + } | ||
234 | + Element *asupprimer = actuel->suivant; | ||
235 | + free(asupprimer); | ||
236 | + actuel->suivant = NULL; | ||
237 | + liste->nbelements = liste->nbelements-1; | ||
238 | +} | ||
239 | + | ||
240 | +void freeListe(Liste *liste){ | ||
241 | + while(liste->premier!=NULL) suppression(liste); | ||
242 | +} | ||
243 | + | ||
244 | + | ||
245 | +int main() | ||
246 | + | ||
247 | +{ | ||
248 | + | ||
249 | + Liste *maListe = initialisation(); | ||
250 | + | ||
251 | + | ||
252 | + insertion(maListe, 4 , 8); | ||
253 | + | ||
254 | + insertion(maListe, 3 , 9); | ||
255 | + | ||
256 | + insertion(maListe, 7 , 12); | ||
257 | + | ||
258 | + insertion(maListe, 10 , 15); | ||
259 | + | ||
260 | + printf("\n\n\n"); | ||
261 | + | ||
262 | + int a = ordcul(maListe); | ||
263 | + | ||
264 | + printf("%d \n",a); | ||
265 | + | ||
266 | + freelastbloc(maListe); | ||
267 | + | ||
268 | + afficherListe(maListe); | ||
269 | + | ||
270 | + freeListe(maListe); | ||
271 | + | ||
272 | + afficherListe(maListe); | ||
273 | + return 0; | ||
274 | + | ||
275 | +} |
No preview for this file type
No preview for this file type
No preview for this file type
No preview for this file type
No preview for this file type
No preview for this file type
No preview for this file type
No preview for this file type
No preview for this file type
No preview for this file type
No preview for this file type
No preview for this file type
No preview for this file type
No preview for this file type
No preview for this file type
No preview for this file type
No preview for this file type
No preview for this file type
15.3 KB
No preview for this file type
No preview for this file type
No preview for this file type
No preview for this file type
No preview for this file type