Commit 3ab4f73aad534dd0d0bc6237750935c29ecc7313

Authored by Martin CHAUVELIERE
1 parent 0cc8564c

Amelioration Collisions et Deplacements

Interactif/Interactif.c
@@ -8,23 +8,24 @@ @@ -8,23 +8,24 @@
8 8
9 #define TailleX 500 9 #define TailleX 500
10 #define TailleY 500 10 #define TailleY 500
  11 +#define Sol 475
11 #define ErreurHitbox 2 12 #define ErreurHitbox 2
12 13
13 14
14 int CheckCollisionEntiteEntite(struct entite enti1, int L1, int H1, struct entite enti2, int L2, int H2) 15 int CheckCollisionEntiteEntite(struct entite enti1, int L1, int H1, struct entite enti2, int L2, int H2)
15 { 16 {
16 //CheckX 17 //CheckX
17 - int gauche1 = enti1.posx + ErreurHitbox;  
18 - int droite1 = enti1.posx + L1 - ErreurHitbox;  
19 - int gauche2 = enti2.posx + ErreurHitbox;  
20 - int droite2 = enti2.posx + L2 - ErreurHitbox; 18 + int gauche1 = enti1.posx - L1/2 + ErreurHitbox;
  19 + int droite1 = enti1.posx + L1/2 - ErreurHitbox;
  20 + int gauche2 = enti2.posx - L2/2 + ErreurHitbox;
  21 + int droite2 = enti2.posx + L2/2 - ErreurHitbox;
21 int CheckX = (gauche1 >= gauche2 && gauche1 <= droite2) || (droite1 >= gauche2 && droite1 <= droite2); 22 int CheckX = (gauche1 >= gauche2 && gauche1 <= droite2) || (droite1 >= gauche2 && droite1 <= droite2);
22 23
23 //CheckY 24 //CheckY
24 - int haut1 = enti1.posy + ErreurHitbox;  
25 - int bas1 = enti1.posy + H1 - ErreurHitbox;  
26 - int haut2 = enti2.posy + ErreurHitbox;  
27 - int bas2 = enti2.posy + H2 - ErreurHitbox; 25 + int haut1 = enti1.posy - H1/2 + ErreurHitbox;
  26 + int bas1 = enti1.posy + H1/2 - ErreurHitbox;
  27 + int haut2 = enti2.posy - H2/2 + ErreurHitbox;
  28 + int bas2 = enti2.posy + H2/2 - ErreurHitbox;
28 int CheckY = (haut1 <= bas2 && haut1 >= haut2) || (bas1 <= bas2 && bas1 >= haut2); 29 int CheckY = (haut1 <= bas2 && haut1 >= haut2) || (bas1 <= bas2 && bas1 >= haut2);
29 30
30 return CheckX && CheckY; 31 return CheckX && CheckY;
@@ -85,61 +86,16 @@ void SupprimerEntitesEnCollision(struct liste_entite** Liste1, int L1, int H1, s @@ -85,61 +86,16 @@ void SupprimerEntitesEnCollision(struct liste_entite** Liste1, int L1, int H1, s
85 86
86 if (collision != NULL) { 87 if (collision != NULL) {
87 // Récupération des entités impliquées 88 // Récupération des entités impliquées
88 - struct entite enti1 = collision->enti;  
89 - struct entite enti2 = collision->suivant->enti; 89 + struct entite* enti1 = &collision->enti;
  90 + struct entite* enti2 = &collision->suivant->enti;
90 91
91 - //Suppression de l'entité 1 de la liste 1  
92 -  
93 - //precedant1 garde en memoire l'element precedant de la liste  
94 - struct liste_entite* precedant1 = NULL;  
95 - //courant1 garde en memoire l'element courant de la liste  
96 - struct liste_entite* courant1 = *Liste1;  
97 -  
98 - while (courant1 != NULL)  
99 - {  
100 - //Comparaison des entites avec memcmp  
101 - if (memcmp(&courant1->enti, &enti1, sizeof(struct entite)) == 0)  
102 - {  
103 - //Si l'element à supprimer est le 1er de la liste  
104 - if (precedant1 == NULL)  
105 - {  
106 - *Liste1 = courant1->suivant;  
107 - }  
108 - else  
109 - {  
110 - precedant1->suivant = courant1->suivant;  
111 - }  
112 - free(courant1);  
113 - break;  
114 - }  
115 -  
116 - precedant1 = courant1;  
117 - courant1 = courant1->suivant;  
118 - } 92 + // Suppression de l'entité 1 de la liste 1
  93 + SupprimerEntite(Liste1, enti1);
119 94
120 // Suppression de l'entité 2 de la liste 2 95 // Suppression de l'entité 2 de la liste 2
121 - struct liste_entite* precedant2 = NULL;  
122 - struct liste_entite* courant2 = *Liste2; 96 + SupprimerEntite(Liste2, enti2);
123 97
124 - while (courant2 != NULL)  
125 - {  
126 - if (memcmp(&courant2->enti, &enti2, sizeof(struct entite)) == 0)  
127 - {  
128 - if (precedant2 == NULL)  
129 - {  
130 - *Liste2 = courant2->suivant;  
131 - } else  
132 - {  
133 - precedant2->suivant = courant2->suivant;  
134 - }  
135 - free(courant2);  
136 - break;  
137 - }  
138 -  
139 - precedant2 = courant2;  
140 - courant2 = courant2->suivant;  
141 - }  
142 - afficherLutin(bouillie, enti2.posx - L1/2 - ErreurHitbox, enti2.posy); 98 + afficherLutin(bouillie, enti2->posx - hitboxbouillieL/2 + ErreurHitbox, enti2->posy - hitboxbouillieH/2 + ErreurHitbox);
143 } 99 }
144 } 100 }
145 101
@@ -151,34 +107,32 @@ void Tirer(struct entite joueur, struct liste_entite **pl) @@ -151,34 +107,32 @@ void Tirer(struct entite joueur, struct liste_entite **pl)
151 { 107 {
152 if (*pl==NULL) 108 if (*pl==NULL)
153 { 109 {
154 - ajout_tete(pl,creer_entite(joueur.posx+hitboxcanonL/2-2*ErreurHitbox,joueur.posy,0)); 110 + ajout_tete(pl,creer_entite(joueur.posx,joueur.posy,-1));
155 } 111 }
156 } 112 }
157 113
158 114
159 -  
160 -  
161 -  
162 -void DeplacementTire(int tire, struct liste_entite **l) {  
163 - struct liste_entite *ml = *l;  
164 - while (ml != NULL) 115 +void DeplacementTire(int tire, struct liste_entite** l)
  116 +{
  117 + struct entite* ml = &(*l)->enti;
  118 + if (ml != NULL)
165 { 119 {
166 - if (ml->enti.posy <= 0) 120 + if (ml->posy <= 0)
167 { 121 {
168 - *l = ml->suivant;  
169 - afficherLutin(bouillie, ml->enti.posx - hitboxbouillieL / 2, ml->enti.posy);  
170 - free(ml);  
171 - ml = *l; 122 + afficherLutin(bouillie, ml->posx - hitboxbouillieL/2 + ErreurHitbox, ml->posy);
  123 + SupprimerEntite(l, ml);
172 } 124 }
173 else 125 else
174 { 126 {
175 - ml->enti.posy -= 5;  
176 - afficherLutin(tire, ml->enti.posx, ml->enti.posy);  
177 - ml = ml->suivant; 127 + ml->posy -= 5;
  128 + //Je divise ErreurHitbox par 2 car l'erreur du missile est plus petite que pour les autres images
  129 + afficherLutin(tire, ml->posx - hitboxmissileL/2 + ErreurHitbox/2, ml->posy - hitboxmissileH/2 + ErreurHitbox/2);
178 } 130 }
179 } 131 }
180 } 132 }
181 133
  134 +
  135 +
182 136
183 char touche() 137 char touche()
184 { 138 {
@@ -214,3 +168,59 @@ void action(struct entite *joueur, char c, struct liste_entite **tires) @@ -214,3 +168,59 @@ void action(struct entite *joueur, char c, struct liste_entite **tires)
214 } 168 }
215 } 169 }
216 170
  171 +
  172 +
  173 +void MakeBombeDroppable(struct liste_entite* enemies, struct liste_entite** bombes)
  174 +{
  175 + struct liste_entite* pL = enemies;
  176 + struct liste_entite* Dropable = NULL;
  177 + int taille = 0;
  178 + while (pL != NULL)
  179 + {
  180 + if (pL->enti.dropbombe == 1)
  181 + {
  182 + ajout_tete(&Dropable,pL->enti);
  183 + taille += 1;
  184 + }
  185 + pL=pL->suivant;
  186 + }
  187 +
  188 + if(Dropable == NULL)
  189 + {
  190 + return;
  191 + }
  192 +
  193 + int randomIndex = rand() % taille-1;
  194 + struct liste_entite* pLDropable = Dropable;
  195 +
  196 + for (int i = 0; i <= randomIndex; i++)
  197 + {
  198 + pLDropable = pLDropable->suivant;
  199 + }
  200 + ajout_tete(bombes,creer_entite(pLDropable->enti.posx,pLDropable->enti.posy,-1));
  201 +}
  202 +
  203 +
  204 +void DeplacementBombe(int bombe, struct liste_entite** l)
  205 +{
  206 + struct liste_entite* ml = *l;
  207 + struct liste_entite* precedent = NULL;
  208 +
  209 + while (ml != NULL)
  210 + {
  211 + if (ml->enti.posy + hitboxbombeH - ErreurHitbox >= Sol)
  212 + {
  213 + struct entite* a_supprimer = &ml->enti;
  214 + ml = ml->suivant;
  215 + SupprimerEntite(l, a_supprimer);
  216 + }
  217 + else
  218 + {
  219 + ml->enti.posy += 2;
  220 + afficherLutin(bombe, ml->enti.posx - hitboxbombeL/2 + ErreurHitbox, ml->enti.posy);
  221 + precedent = ml;
  222 + ml = ml->suivant;
  223 + }
  224 + }
  225 +}
  226 +
Interactif/Interactif.h
@@ -17,3 +17,7 @@ void SupprimerEntitesEnCollision(struct liste_entite**,int,int,struct liste_enti @@ -17,3 +17,7 @@ void SupprimerEntitesEnCollision(struct liste_entite**,int,int,struct liste_enti
17 char touche(); 17 char touche();
18 18
19 void action(struct entite*,char,struct liste_entite**); 19 void action(struct entite*,char,struct liste_entite**);
  20 +
  21 +void MakeBombeDroppable(struct liste_entite*,struct liste_entite**);
  22 +
  23 +void DeplacementBombe(int,struct liste_entite**);
1 #include <stdio.h> 1 #include <stdio.h>
2 #include <stdlib.h> 2 #include <stdlib.h>
  3 +#include <string.h>
3 #include "Liste.h" 4 #include "Liste.h"
4 5
5 6
6 -struct entite creer_entite(int x, int y, int etage) 7 +struct entite creer_entite(int x, int y, int bombe)
7 { 8 {
8 struct entite e; 9 struct entite e;
9 - e.posx=x;  
10 - e.posy=y;  
11 - e.etage=etage; 10 + e.posx = x;
  11 + e.posy = y;
  12 + e.dropbombe = bombe;
12 return e; 13 return e;
13 } 14 }
14 15
@@ -35,40 +36,29 @@ void imprimer_liste(struct liste_entite *l) @@ -35,40 +36,29 @@ void imprimer_liste(struct liste_entite *l)
35 } 36 }
36 37
37 38
38 -void Supprimerentite(struct liste_entite** l, struct liste_entite* suppr) 39 +
  40 +void SupprimerEntite(struct liste_entite** Liste, struct entite* enti)
39 { 41 {
40 - //Liste ou Element NULL  
41 - if(*l == NULL || suppr == NULL)  
42 - {  
43 - return;  
44 - }  
45 -  
46 - //Dernier et Seul élément  
47 - if (*l == suppr && suppr->suivant == NULL)  
48 - {  
49 - *l = NULL;  
50 - return;  
51 - } 42 + struct liste_entite* courant = *Liste;
  43 + struct liste_entite* precedent = NULL;
52 44
53 - //1er element  
54 - if(*l == suppr) 45 + while (courant != NULL)
55 { 46 {
56 - *l=suppr->suivant;  
57 - }  
58 -  
59 - else  
60 - {  
61 - struct liste_entite* precedent = *l;  
62 - while(precedent->suivant != NULL && precedent->suivant != suppr) 47 + if (memcmp(&courant->enti, enti, sizeof(struct entite)) == 0)
63 { 48 {
64 - precedent=precedent->suivant; 49 + if (precedent == NULL)
  50 + {
  51 + *Liste = courant->suivant;
  52 + }
  53 + else
  54 + {
  55 + precedent->suivant = courant->suivant;
  56 + }
  57 + free(courant);
  58 + break;
65 } 59 }
66 -  
67 - if(precedent->suivant == NULL)  
68 - {  
69 - return ;  
70 - }  
71 - precedent->suivant = suppr->suivant; 60 + precedent = courant;
  61 + courant = courant->suivant;
72 } 62 }
73 - free(suppr);  
74 } 63 }
  64 +
1 #include <stdio.h> 1 #include <stdio.h>
2 #include <stdlib.h> 2 #include <stdlib.h>
3 3
  4 +//dropbombe concerne les entités enemies
  5 +//1 les enemies peuvent drop des bombes, 0 ils ne peuvent pas
  6 +//Celles non concernées vallent -1
4 struct entite 7 struct entite
5 { 8 {
6 int posx; 9 int posx;
7 int posy; 10 int posy;
8 - int etage; 11 + int dropbombe;
9 }; 12 };
10 13
11 14
@@ -22,4 +25,5 @@ struct entite creer_entite(int,int,int); @@ -22,4 +25,5 @@ struct entite creer_entite(int,int,int);
22 25
23 void imprimer_liste(struct liste_entite*); 26 void imprimer_liste(struct liste_entite*);
24 27
25 -void Supprimerentite(struct liste_entite**, struct liste_entite*); 28 +void SupprimerEntite(struct liste_entite**,struct entite*);
  29 +
@@ -7,25 +7,33 @@ @@ -7,25 +7,33 @@
7 7
8 #define TailleX 500 8 #define TailleX 500
9 #define TailleY 500 9 #define TailleY 500
  10 +#define ErreurHitbox 2
  11 +#define JoueurX TailleX/2
  12 +#define JoueurY 9*TailleY/10
  13 +
  14 +struct entite joueur = {JoueurX,JoueurY,-1};
  15 +
  16 +int canon=0;
  17 +int missile=0;
  18 +int sbire=0;
  19 +int bouillie=0;
  20 +int bombe=0;
10 21
11 -int canon;  
12 -int missile;  
13 -int sbire;  
14 -int bouillie;  
15 22
16 -struct entite joueur;  
17 23
18 char Nom[15]="Space Invader"; 24 char Nom[15]="Space Invader";
19 char input='\0'; 25 char input='\0';
20 26
21 -int hitboxcanonL;  
22 -int hitboxcanonH;  
23 -int hitboxmissileL;  
24 -int hitboxmissileH;  
25 -int hitboxsbireL;  
26 -int hitboxsbireH;  
27 -int hitboxbouillieL;  
28 -int hitboxbouillieH; 27 +int hitboxcanonL=0;
  28 +int hitboxcanonH=0;
  29 +int hitboxmissileL=0;
  30 +int hitboxmissileH=0;
  31 +int hitboxsbireL=0;
  32 +int hitboxsbireH=0;
  33 +int hitboxbouillieL=0;
  34 +int hitboxbouillieH=0;
  35 +int hitboxbombeL=0;
  36 +int hitboxbombeH=0;
29 37
30 38
31 39
@@ -35,17 +43,14 @@ void initialiser() @@ -35,17 +43,14 @@ void initialiser()
35 missile = chargerLutin("../../Lutins/invader_missile.bmp",COULEUR_NOIR); 43 missile = chargerLutin("../../Lutins/invader_missile.bmp",COULEUR_NOIR);
36 sbire = chargerLutin("../../Lutins/invader_monstre1_1.bmp",COULEUR_NOIR); 44 sbire = chargerLutin("../../Lutins/invader_monstre1_1.bmp",COULEUR_NOIR);
37 bouillie = chargerLutin("../../Lutins/invader_monstre_bouillie.bmp",COULEUR_NOIR); 45 bouillie = chargerLutin("../../Lutins/invader_monstre_bouillie.bmp",COULEUR_NOIR);
  46 + bombe = chargerLutin("../../Lutins/invader_bombe.bmp",COULEUR_NOIR);
38 47
39 tailleLutin(canon,&hitboxcanonL,&hitboxcanonH); 48 tailleLutin(canon,&hitboxcanonL,&hitboxcanonH);
40 tailleLutin(missile,&hitboxmissileL,&hitboxmissileH); 49 tailleLutin(missile,&hitboxmissileL,&hitboxmissileH);
41 tailleLutin(sbire,&hitboxsbireL,&hitboxsbireH); 50 tailleLutin(sbire,&hitboxsbireL,&hitboxsbireH);
42 tailleLutin(bouillie,&hitboxbouillieL,&hitboxbouillieH); 51 tailleLutin(bouillie,&hitboxbouillieL,&hitboxbouillieH);
  52 + tailleLutin(bombe,&hitboxbombeL,&hitboxbombeH);
43 53
44 -#define JoueurX TailleX/2-hitboxcanonL/2  
45 -#define JoueurY 9*TailleY/10  
46 -  
47 - joueur.posx = JoueurX;  
48 - joueur.posy = JoueurY ;  
49 } 54 }
50 55
51 56
@@ -5,6 +5,7 @@ extern int canon; @@ -5,6 +5,7 @@ extern int canon;
5 extern int missile; 5 extern int missile;
6 extern int sbire; 6 extern int sbire;
7 extern int bouillie; 7 extern int bouillie;
  8 +extern int bombe;
8 9
9 extern struct entite joueur; 10 extern struct entite joueur;
10 extern char Nom[15]; 11 extern char Nom[15];
@@ -18,6 +19,8 @@ extern int hitboxsbireL; @@ -18,6 +19,8 @@ extern int hitboxsbireL;
18 extern int hitboxsbireH; 19 extern int hitboxsbireH;
19 extern int hitboxbouillieL; 20 extern int hitboxbouillieL;
20 extern int hitboxbouillieH; 21 extern int hitboxbouillieH;
  22 +extern int hitboxbombeL;
  23 +extern int hitboxbombeH;
21 24
22 void initialiser(); 25 void initialiser();
23 char pagedemarrage(); 26 char pagedemarrage();
@@ -22,15 +22,18 @@ int main() @@ -22,15 +22,18 @@ int main()
22 22
23 struct liste_entite *enemies = NULL; 23 struct liste_entite *enemies = NULL;
24 struct liste_entite *tires = NULL; 24 struct liste_entite *tires = NULL;
  25 + struct liste_entite *bombes = NULL;
25 26
26 char texte[15]="SCORE : "; 27 char texte[15]="SCORE : ";
27 int Score = lutinTexte(texte,COULEUR_BLANC); 28 int Score = lutinTexte(texte,COULEUR_BLANC);
28 29
29 30
30 - LigneSbire(&enemies,3,1); 31 + LigneSbire(&enemies,8,3);
31 int SensVague=1; 32 int SensVague=1;
32 33
33 - int compt=0; 34 + int compteur=0;
  35 + int DropAlea=0;
  36 + int CheckAlea=0;
34 37
35 if (pagedemarrage() != 'j') 38 if (pagedemarrage() != 'j')
36 { 39 {
@@ -45,27 +48,42 @@ int main() @@ -45,27 +48,42 @@ int main()
45 rectanglePlein(0,Sol,TailleX,2,COULEUR_VERT); 48 rectanglePlein(0,Sol,TailleX,2,COULEUR_VERT);
46 afficherLutin(Score,0,Sol+ErreurHitbox); 49 afficherLutin(Score,0,Sol+ErreurHitbox);
47 50
48 - afficherLutin(canon,joueur.posx,joueur.posy);  
49 -  
50 - if(compt==10) 51 + afficherLutin(canon,joueur.posx - hitboxcanonL/2 + ErreurHitbox,joueur.posy);
  52 +
  53 + if (DropAlea == 0)
51 { 54 {
52 - DeplacementSbire(enemies,&SensVague,1);  
53 - compt=0; 55 + DropAlea = rand() % 31 + 100;
54 } 56 }
55 - AfficherSbire(sbire,enemies);  
56 - 57 + if (CheckAlea == DropAlea)
  58 + {
  59 + MakeBombeDroppable(enemies,&bombes);
  60 + DropAlea=0;
  61 + CheckAlea=0;
  62 + }
  63 +
  64 + AfficherSbire(sbire,hitboxsbireL,hitboxsbireH,enemies);
  65 +
57 input = touche(); 66 input = touche();
58 action(&joueur,input,&tires); 67 action(&joueur,input,&tires);
59 68
  69 + if (compteur==10)
  70 + {
  71 + DeplacementSbire(enemies,&SensVague,1);
  72 + compteur=0;
  73 + }
  74 +
60 DeplacementTire(missile,&tires); 75 DeplacementTire(missile,&tires);
61 76
  77 + DeplacementBombe(bombe,&bombes);
  78 +
62 SupprimerEntitesEnCollision(&tires,hitboxmissileL,hitboxmissileH,&enemies,hitboxsbireL,hitboxsbireH); 79 SupprimerEntitesEnCollision(&tires,hitboxmissileL,hitboxmissileH,&enemies,hitboxsbireL,hitboxsbireH);
63 80
64 majSurface(); 81 majSurface();
65 82
66 SDL_Delay(20); 83 SDL_Delay(20);
67 84
68 - compt+=1; 85 + compteur+=1;
  86 + CheckAlea+=1;
69 } 87 }
70 return 0; 88 return 0;
71 } 89 }
@@ -6,8 +6,9 @@ @@ -6,8 +6,9 @@
6 6
7 #define TailleX 500 7 #define TailleX 500
8 #define TailleY 500 8 #define TailleY 500
  9 +#define ErreurHitbox 2
9 10
10 -//sens 1 = Va vers la droite 11 +//Sens = 1 -> Va vers la droite
11 void DeplacementSbire(struct liste_entite *l, int *psens, int speed) 12 void DeplacementSbire(struct liste_entite *l, int *psens, int speed)
12 { 13 {
13 int ind=0; 14 int ind=0;
@@ -50,28 +51,40 @@ void DeplacementSbire(struct liste_entite *l, int *psens, int speed) @@ -50,28 +51,40 @@ void DeplacementSbire(struct liste_entite *l, int *psens, int speed)
50 51
51 52
52 53
53 -void AfficherSbire(int lutin,struct liste_entite *l)  
54 -{  
55 - struct liste_entite *ml=l;  
56 - while(ml != NULL)  
57 - {  
58 - afficherLutin(lutin,ml->enti.posx,ml->enti.posy);  
59 - ml=ml->suivant;  
60 - }  
61 -}  
62 -  
63 -  
64 -  
65 void LigneSbire(struct liste_entite **enemies,int nbr_enemies, int nbr_rangee) 54 void LigneSbire(struct liste_entite **enemies,int nbr_enemies, int nbr_rangee)
66 { 55 {
67 - for (int j=1; j<=nbr_rangee; j++) 56 + for (int j=1; j<= nbr_rangee; j++)
68 { 57 {
69 int compteurY=j*TailleY/10; 58 int compteurY=j*TailleY/10;
70 int compteurX=TailleX/nbr_enemies; 59 int compteurX=TailleX/nbr_enemies;
  60 +
71 for (int i=0; i<nbr_enemies; i++) 61 for (int i=0; i<nbr_enemies; i++)
72 { 62 {
73 - ajout_tete(enemies,creer_entite(compteurX,compteurY,j));  
74 - compteurX +=2*TailleX/(3*nbr_enemies); 63 + if (j == nbr_rangee)
  64 + {
  65 + ajout_tete(enemies,creer_entite(compteurX,compteurY,1));
  66 + compteurX +=2*TailleX/(3*nbr_enemies);
  67 + }
  68 + else
  69 + {
  70 + ajout_tete(enemies,creer_entite(compteurX,compteurY,0));
  71 + compteurX +=2*TailleX/(3*nbr_enemies);
  72 + }
75 } 73 }
76 } 74 }
77 } 75 }
  76 +
  77 +
  78 +
  79 +
  80 +void AfficherSbire(int lutin, int L, int H, struct liste_entite *l)
  81 +{
  82 + struct liste_entite *ml=l;
  83 + while(ml != NULL)
  84 + {
  85 + afficherLutin(lutin,ml->enti.posx - L/2 + ErreurHitbox,ml->enti.posy - H/2 + ErreurHitbox);
  86 + ml=ml->suivant;
  87 + }
  88 +}
  89 +
  90 +
@@ -3,6 +3,6 @@ @@ -3,6 +3,6 @@
3 3
4 void DeplacementSbire(struct liste_entite*,int*,int); 4 void DeplacementSbire(struct liste_entite*,int*,int);
5 5
6 -void AfficherSbire(int,struct liste_entite*);  
7 -  
8 void LigneSbire(struct liste_entite**,int,int); 6 void LigneSbire(struct liste_entite**,int,int);
  7 +
  8 +void AfficherSbire(int,int,int,struct liste_entite*);