Commit 0cc8564cb3163fb9bd9447db41253fc0516eb3a5

Authored by Martin CHAUVELIERE
1 parent f1ab2b42

Fin des colisions améliorées

Interactif/Interactif.c
1 #include <stdio.h> 1 #include <stdio.h>
2 #include <stdlib.h> 2 #include <stdlib.h>
  3 +#include <string.h>
3 #include "../Graphique/libgraph.h" 4 #include "../Graphique/libgraph.h"
4 #include "../ListeC/Liste.h" 5 #include "../ListeC/Liste.h"
5 #include "Interactif.h" 6 #include "Interactif.h"
@@ -10,65 +11,64 @@ @@ -10,65 +11,64 @@
10 #define ErreurHitbox 2 11 #define ErreurHitbox 2
11 12
12 13
13 -int CheckCollisionEntiteEntite(struct entite enti1,int L1,int H1,struct entite enti2 ,int L2, int H2) 14 +int CheckCollisionEntiteEntite(struct entite enti1, int L1, int H1, struct entite enti2, int L2, int H2)
14 { 15 {
15 //CheckX 16 //CheckX
16 - int gauche1 = enti1.posx+ErreurHitbox;  
17 - int droite1 = enti1.posx+L1-ErreurHitbox;  
18 - int gauche2 = enti2.posx+ErreurHitbox;  
19 - int droite2 = enti2.posx+L2-ErreurHitbox;  
20 - int CheckX=0;  
21 - if(gauche1 >= gauche2 && gauche1 <= droite2)  
22 - {  
23 - CheckX=1;  
24 - }  
25 - else if(droite1 >= gauche2 && droite1 <= droite2)  
26 - {  
27 - CheckX=1;  
28 - }  
29 - 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;
  21 + int CheckX = (gauche1 >= gauche2 && gauche1 <= droite2) || (droite1 >= gauche2 && droite1 <= droite2);
  22 +
30 //CheckY 23 //CheckY
31 - int haut1 = enti1.posy+ErreurHitbox;  
32 - int bas1 = enti1.posy+H1-ErreurHitbox;  
33 - int haut2 = enti2.posy+ErreurHitbox;  
34 - int bas2 = enti2.posy+H2-ErreurHitbox;  
35 - int CheckY=0;  
36 - if(haut1 <= bas2 && haut1 >= haut2)  
37 - {  
38 - CheckY=1;  
39 - }  
40 - else if(bas1 <= bas2 && bas1 >= haut2)  
41 - {  
42 - CheckY=1;  
43 - }  
44 - if(CheckX+CheckY==2){return 1;}  
45 - else return 0; 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;
  28 + int CheckY = (haut1 <= bas2 && haut1 >= haut2) || (bas1 <= bas2 && bas1 >= haut2);
  29 +
  30 + return CheckX && CheckY;
46 } 31 }
47 32
48 33
49 -int CheckCollisionListeEntite(struct liste_entite *Liste1,int L1,int H1,struct entite enti2, int L2, int H2) 34 +struct entite* CheckCollisionListeEntite(struct liste_entite *Liste1,int L1,int H1,struct entite enti2, int L2, int H2)
50 { 35 {
51 struct liste_entite *pL1=Liste1; 36 struct liste_entite *pL1=Liste1;
52 while (pL1 != NULL) 37 while (pL1 != NULL)
53 { 38 {
54 if(CheckCollisionEntiteEntite(pL1->enti,L1,H1,enti2,L2,H2) == 1) 39 if(CheckCollisionEntiteEntite(pL1->enti,L1,H1,enti2,L2,H2) == 1)
55 { 40 {
56 - return 1; 41 + return &pL1->enti;
57 } 42 }
58 pL1=pL1->suivant; 43 pL1=pL1->suivant;
59 } 44 }
60 - return 0; 45 + return NULL;
61 } 46 }
62 47
63 48
  49 +
  50 +
64 struct liste_entite* CheckCollisionListeListe(struct liste_entite *Liste1,int L1,int H1,struct liste_entite *Liste2,int L2, int H2) 51 struct liste_entite* CheckCollisionListeListe(struct liste_entite *Liste1,int L1,int H1,struct liste_entite *Liste2,int L2, int H2)
65 { 52 {
66 struct liste_entite *pL2=Liste2; 53 struct liste_entite *pL2=Liste2;
67 while (pL2 != NULL) 54 while (pL2 != NULL)
68 { 55 {
69 - if(CheckCollisionListeEntite(Liste1,L1,H1,pL2->enti,L2,H2) == 1) 56 + struct entite* collision = CheckCollisionListeEntite(Liste1,L1,H1,pL2->enti,L2,H2);
  57 + if (collision != NULL)
70 { 58 {
71 - return pL2; 59 + // Création des nœuds pour les deux entités
  60 + struct liste_entite* Enti1 = malloc(sizeof(struct liste_entite));
  61 + struct liste_entite* Enti2 = malloc(sizeof(struct liste_entite));
  62 +
  63 + // Remplissage des nœuds avec les entités correspondantes
  64 + Enti1->enti = *collision;
  65 + Enti2->enti = pL2->enti;
  66 +
  67 + // Relier les nœuds entre eux
  68 + Enti1->suivant = Enti2;
  69 + Enti2->suivant = NULL;
  70 +
  71 + return Enti1;
72 } 72 }
73 else 73 else
74 pL2=pL2->suivant; 74 pL2=pL2->suivant;
@@ -77,26 +77,98 @@ struct liste_entite* CheckCollisionListeListe(struct liste_entite *Liste1,int L1 @@ -77,26 +77,98 @@ struct liste_entite* CheckCollisionListeListe(struct liste_entite *Liste1,int L1
77 } 77 }
78 78
79 79
  80 +
  81 +
  82 +void SupprimerEntitesEnCollision(struct liste_entite** Liste1, int L1, int H1, struct liste_entite** Liste2, int L2, int H2)
  83 +{
  84 + struct liste_entite* collision = CheckCollisionListeListe(*Liste1, L1, H1, *Liste2, L2, H2);
  85 +
  86 + if (collision != NULL) {
  87 + // Récupération des entités impliquées
  88 + struct entite enti1 = collision->enti;
  89 + struct entite enti2 = collision->suivant->enti;
  90 +
  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 + }
  119 +
  120 + // Suppression de l'entité 2 de la liste 2
  121 + struct liste_entite* precedant2 = NULL;
  122 + struct liste_entite* courant2 = *Liste2;
  123 +
  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);
  143 + }
  144 +}
  145 +
  146 +
  147 +
  148 +
  149 +
80 void Tirer(struct entite joueur, struct liste_entite **pl) 150 void Tirer(struct entite joueur, struct liste_entite **pl)
81 { 151 {
82 - struct liste_entite *ml=*pl;  
83 - if (ml==NULL) 152 + if (*pl==NULL)
84 { 153 {
85 - ajout_tete(pl,creer_entite(joueur.posx+18,joueur.posy-5,0)); 154 + ajout_tete(pl,creer_entite(joueur.posx+hitboxcanonL/2-2*ErreurHitbox,joueur.posy,0));
86 } 155 }
87 } 156 }
88 157
  158 +
  159 +
  160 +
89 161
90 -void DeplacementTire(int tire,struct liste_entite **l)  
91 -{ 162 +void DeplacementTire(int tire, struct liste_entite **l) {
92 struct liste_entite *ml = *l; 163 struct liste_entite *ml = *l;
93 - while (ml != NULL) 164 + while (ml != NULL)
94 { 165 {
95 - if (ml->enti.posy <= 0) 166 + if (ml->enti.posy <= 0)
96 { 167 {
97 - *l = NULL;  
98 - afficherLutin(bouillie, ml->enti.posx-hitboxbouillieL/2, ml->enti.posy);  
99 - break; 168 + *l = ml->suivant;
  169 + afficherLutin(bouillie, ml->enti.posx - hitboxbouillieL / 2, ml->enti.posy);
  170 + free(ml);
  171 + ml = *l;
100 } 172 }
101 else 173 else
102 { 174 {
@@ -107,22 +179,6 @@ void DeplacementTire(int tire,struct liste_entite **l) @@ -107,22 +179,6 @@ void DeplacementTire(int tire,struct liste_entite **l)
107 } 179 }
108 } 180 }
109 181
110 -  
111 -  
112 -void SupprIfTouch(struct liste_entite **Liste1,int L1,int H1,struct liste_entite **Liste2,int L2, int H2)  
113 -{  
114 - struct liste_entite *suppr = CheckCollisionListeListe(*Liste1,L1,H1,*Liste2,L2,H2);  
115 - if (suppr != NULL)  
116 - {  
117 - int x = suppr->enti.posx-ErreurHitbox;  
118 - int y = suppr->enti.posy;  
119 - Supprimerentite(Liste2,suppr);  
120 - majSurface();  
121 - afficherLutin(bouillie,x,y);  
122 - *Liste1=NULL;  
123 - }  
124 -}  
125 -  
126 182
127 char touche() 183 char touche()
128 { 184 {
@@ -132,15 +188,29 @@ char touche() @@ -132,15 +188,29 @@ char touche()
132 return touche; 188 return touche;
133 } 189 }
134 190
135 -void action(struct entite *joueur,char c,struct liste_entite **tires) 191 +
  192 +
  193 +void action(struct entite *joueur, char c, struct liste_entite **tires)
136 { 194 {
137 - if(c=='d') 195 + switch (c)
138 { 196 {
139 - if (joueur->posx<=9*TailleX/10) {joueur->posx+=3;}  
140 - }  
141 - if(c=='q')  
142 - {  
143 - if (joueur->posx>=TailleX/10) {joueur->posx-=3;} 197 + case 'd':
  198 + if (joueur->posx <= 9*TailleX/10)
  199 + {
  200 + joueur->posx += 3;
  201 + }
  202 + break;
  203 + case 'q':
  204 + if (joueur->posx >= TailleX/10)
  205 + {
  206 + joueur->posx -= 3;
  207 + }
  208 + break;
  209 + case 't':
  210 + Tirer(*joueur, tires);
  211 + break;
  212 + default:
  213 + break;
144 } 214 }
145 - if(c=='t'){Tirer(*joueur,tires);}  
146 } 215 }
  216 +
Interactif/Interactif.h
@@ -4,7 +4,7 @@ @@ -4,7 +4,7 @@
4 4
5 int CheckCollisionEntiteEntite(struct entite,int,int,struct entite,int,int); 5 int CheckCollisionEntiteEntite(struct entite,int,int,struct entite,int,int);
6 6
7 -int CheckCollisionListeEntite(struct liste_entite*,int,int,struct entite,int,int); 7 +struct entite* CheckCollisionListeEntite(struct liste_entite*,int,int,struct entite,int,int);
8 8
9 struct liste_entite* CheckCollisionListeListe(struct liste_entite*,int,int,struct liste_entite*,int,int); 9 struct liste_entite* CheckCollisionListeListe(struct liste_entite*,int,int,struct liste_entite*,int,int);
10 10
@@ -12,7 +12,7 @@ void Tirer(struct entite, struct liste_entite**); @@ -12,7 +12,7 @@ void Tirer(struct entite, struct liste_entite**);
12 12
13 void DeplacementTire(int,struct liste_entite**); 13 void DeplacementTire(int,struct liste_entite**);
14 14
15 -void SupprIfTouch(struct liste_entite**,int,int,struct liste_entite**,int,int); 15 +void SupprimerEntitesEnCollision(struct liste_entite**,int,int,struct liste_entite**,int,int);
16 16
17 char touche(); 17 char touche();
18 18
@@ -2,17 +2,13 @@ @@ -2,17 +2,13 @@
2 #include <stdlib.h> 2 #include <stdlib.h>
3 #include "Liste.h" 3 #include "Liste.h"
4 4
5 -void creer_liste(struct liste_entite *l)  
6 -{  
7 - l = malloc(sizeof(struct liste_entite));  
8 -}  
9 5
10 -struct entite creer_entite(int x, int y, int idd) 6 +struct entite creer_entite(int x, int y, int etage)
11 { 7 {
12 struct entite e; 8 struct entite e;
13 e.posx=x; 9 e.posx=x;
14 e.posy=y; 10 e.posy=y;
15 - e.id=idd; 11 + e.etage=etage;
16 return e; 12 return e;
17 } 13 }
18 14
@@ -5,7 +5,7 @@ struct entite @@ -5,7 +5,7 @@ struct entite
5 { 5 {
6 int posx; 6 int posx;
7 int posy; 7 int posy;
8 - int id; 8 + int etage;
9 }; 9 };
10 10
11 11
@@ -18,8 +18,6 @@ struct liste_entite @@ -18,8 +18,6 @@ struct liste_entite
18 18
19 void ajout_tete(struct liste_entite**, struct entite); 19 void ajout_tete(struct liste_entite**, struct entite);
20 20
21 -void creer_liste(struct liste_entite*);  
22 -  
23 struct entite creer_entite(int,int,int); 21 struct entite creer_entite(int,int,int);
24 22
25 void imprimer_liste(struct liste_entite*); 23 void imprimer_liste(struct liste_entite*);
@@ -2,6 +2,7 @@ @@ -2,6 +2,7 @@
2 #include <stdlib.h> 2 #include <stdlib.h>
3 #include "../Graphique/libgraph.h" 3 #include "../Graphique/libgraph.h"
4 #include "../ListeC/Liste.h" 4 #include "../ListeC/Liste.h"
  5 +#include "../Interactif/Interactif.h"
5 #include "init.h" 6 #include "init.h"
6 7
7 #define TailleX 500 8 #define TailleX 500
@@ -12,11 +13,9 @@ int missile; @@ -12,11 +13,9 @@ int missile;
12 int sbire; 13 int sbire;
13 int bouillie; 14 int bouillie;
14 15
15 -struct liste_entite *enemies = NULL;  
16 -struct liste_entite *tires = NULL;  
17 struct entite joueur; 16 struct entite joueur;
18 17
19 -char Nom[20]="Space_Invader"; 18 +char Nom[15]="Space Invader";
20 char input='\0'; 19 char input='\0';
21 20
22 int hitboxcanonL; 21 int hitboxcanonL;
@@ -28,6 +27,8 @@ int hitboxsbireH; @@ -28,6 +27,8 @@ int hitboxsbireH;
28 int hitboxbouillieL; 27 int hitboxbouillieL;
29 int hitboxbouillieH; 28 int hitboxbouillieH;
30 29
  30 +
  31 +
31 void initialiser() 32 void initialiser()
32 { 33 {
33 canon = chargerLutin("../../Lutins/invader_canon.bmp",COULEUR_NOIR); 34 canon = chargerLutin("../../Lutins/invader_canon.bmp",COULEUR_NOIR);
@@ -47,3 +48,36 @@ void initialiser() @@ -47,3 +48,36 @@ void initialiser()
47 joueur.posy = JoueurY ; 48 joueur.posy = JoueurY ;
48 } 49 }
49 50
  51 +
  52 +char pagedemarrage()
  53 +{
  54 + static const char policeDefaut[]="/usr/share/fonts/truetype/dejavu/DejaVuSans.ttf";
  55 + int Largeur, Hauteur;
  56 +
  57 + rectanglePlein(0,0,TailleX,TailleY,COULEUR_NOIR);
  58 + char jouer[26]="Appuyer sur j pour Jouer";
  59 + char quitter[30]="Appuyer ailleurs pour Quitter";
  60 +
  61 + choisirPolice(policeDefaut,50);
  62 + int Bienvenue = lutinTexte(Nom,COULEUR_VERT);
  63 + tailleLutin(Bienvenue,&Largeur,&Hauteur);
  64 + afficherLutin(Bienvenue,TailleX/2-Largeur/2,TailleY/4+Hauteur/2);
  65 +
  66 + choisirPolice(policeDefaut,20);
  67 +
  68 + int J = lutinTexte(jouer,COULEUR_BLANC);
  69 + tailleLutin(J,&Largeur,&Hauteur);
  70 + afficherLutin(J,TailleX/2-Largeur/2,TailleY/2-Hauteur/2);
  71 +
  72 + int Q = lutinTexte(quitter,COULEUR_BLANC);
  73 + tailleLutin(Q,&Largeur,&Hauteur);
  74 + afficherLutin(Q,TailleX/2-Largeur/2,TailleY/2+Hauteur/2);
  75 +
  76 + attendreEvenement ();
  77 + input = touche();
  78 + while (input=='\0')
  79 + {
  80 + input = touche();
  81 + }
  82 + return input;
  83 +}
@@ -5,11 +5,11 @@ extern int canon; @@ -5,11 +5,11 @@ 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 struct liste_entite *enemies;  
9 -extern struct liste_entite *tires; 8 +
10 extern struct entite joueur; 9 extern struct entite joueur;
11 -extern char Nom[20]; 10 +extern char Nom[15];
12 extern char input; 11 extern char input;
  12 +
13 extern int hitboxcanonL; 13 extern int hitboxcanonL;
14 extern int hitboxcanonH; 14 extern int hitboxcanonH;
15 extern int hitboxmissileL; 15 extern int hitboxmissileL;
@@ -20,4 +20,4 @@ extern int hitboxbouillieL; @@ -20,4 +20,4 @@ extern int hitboxbouillieL;
20 extern int hitboxbouillieH; 20 extern int hitboxbouillieH;
21 21
22 void initialiser(); 22 void initialiser();
23 - 23 +char pagedemarrage();
@@ -18,39 +18,54 @@ int main() @@ -18,39 +18,54 @@ int main()
18 creerSurface(TailleX,TailleY,Nom); 18 creerSurface(TailleX,TailleY,Nom);
19 19
20 initialiser(); 20 initialiser();
  21 +
  22 +
  23 + struct liste_entite *enemies = NULL;
  24 + struct liste_entite *tires = NULL;
21 25
22 char texte[15]="SCORE : "; 26 char texte[15]="SCORE : ";
23 - int Score = lutinTexte(texte,COULEUR_ROUGE); 27 + int Score = lutinTexte(texte,COULEUR_BLANC);
24 28
25 - creer_liste(enemies);  
26 - creer_liste(tires);  
27 29
28 - Ligne_Monstre(&enemies,5); 30 + LigneSbire(&enemies,3,1);
29 int SensVague=1; 31 int SensVague=1;
30 - int *psens=&SensVague;  
31 32
  33 + int compt=0;
  34 +
  35 + if (pagedemarrage() != 'j')
  36 + {
  37 + return 0;
  38 + }
32 39
  40 +
  41 + //Bouble principale
33 while(input!='m') 42 while(input!='m')
34 { 43 {
35 rectanglePlein(0,0,TailleX,TailleY,COULEUR_NOIR); 44 rectanglePlein(0,0,TailleX,TailleY,COULEUR_NOIR);
36 rectanglePlein(0,Sol,TailleX,2,COULEUR_VERT); 45 rectanglePlein(0,Sol,TailleX,2,COULEUR_VERT);
  46 + afficherLutin(Score,0,Sol+ErreurHitbox);
37 47
38 afficherLutin(canon,joueur.posx,joueur.posy); 48 afficherLutin(canon,joueur.posx,joueur.posy);
39 - DeplacementLutin(sbire,enemies,psens,1);  
40 -  
41 49
  50 + if(compt==10)
  51 + {
  52 + DeplacementSbire(enemies,&SensVague,1);
  53 + compt=0;
  54 + }
  55 + AfficherSbire(sbire,enemies);
  56 +
42 input = touche(); 57 input = touche();
43 action(&joueur,input,&tires); 58 action(&joueur,input,&tires);
44 59
45 DeplacementTire(missile,&tires); 60 DeplacementTire(missile,&tires);
46 61
47 - SupprIfTouch(&tires,hitboxmissileL,hitboxmissileH,&enemies,hitboxsbireL,hitboxsbireH);  
48 -  
49 - afficherLutin(Score,0,Sol); 62 + SupprimerEntitesEnCollision(&tires,hitboxmissileL,hitboxmissileH,&enemies,hitboxsbireL,hitboxsbireH);
50 63
51 majSurface(); 64 majSurface();
52 65
53 SDL_Delay(20); 66 SDL_Delay(20);
  67 +
  68 + compt+=1;
54 } 69 }
55 return 0; 70 return 0;
56 } 71 }
@@ -8,7 +8,7 @@ @@ -8,7 +8,7 @@
8 #define TailleY 500 8 #define TailleY 500
9 9
10 //sens 1 = Va vers la droite 10 //sens 1 = Va vers la droite
11 -void DeplacementLutin(int lutin,struct liste_entite *l, int *psens, int speed) 11 +void DeplacementSbire(struct liste_entite *l, int *psens, int speed)
12 { 12 {
13 int ind=0; 13 int ind=0;
14 struct liste_entite *ml=l; 14 struct liste_entite *ml=l;
@@ -18,13 +18,11 @@ void DeplacementLutin(int lutin,struct liste_entite *l, int *psens, int speed) @@ -18,13 +18,11 @@ void DeplacementLutin(int lutin,struct liste_entite *l, int *psens, int speed)
18 { 18 {
19 ml->enti.posx+=speed; 19 ml->enti.posx+=speed;
20 if(ml->enti.posx>=9*TailleX/10)ind=1; 20 if(ml->enti.posx>=9*TailleX/10)ind=1;
21 - afficherLutin(lutin,ml->enti.posx,ml->enti.posy);  
22 } 21 }
23 else 22 else
24 { 23 {
25 ml->enti.posx-=speed; 24 ml->enti.posx-=speed;
26 if(ml->enti.posx<=TailleX/10)ind=2; 25 if(ml->enti.posx<=TailleX/10)ind=2;
27 - afficherLutin(lutin,ml->enti.posx,ml->enti.posy);  
28 } 26 }
29 ml=ml->suivant; 27 ml=ml->suivant;
30 } 28 }
@@ -51,13 +49,29 @@ void DeplacementLutin(int lutin,struct liste_entite *l, int *psens, int speed) @@ -51,13 +49,29 @@ void DeplacementLutin(int lutin,struct liste_entite *l, int *psens, int speed)
51 } 49 }
52 50
53 51
54 -void Ligne_Monstre(struct liste_entite **enemies,int nbr_enemies) 52 +
  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)
55 { 66 {
56 - int compteurY=TailleY/10;  
57 - int compteurX=TailleX/nbr_enemies;  
58 - for (int i=1; i<=nbr_enemies; i++) 67 + for (int j=1; j<=nbr_rangee; j++)
59 { 68 {
60 - ajout_tete(enemies,creer_entite(compteurX,compteurY,0));  
61 - compteurX +=2*TailleX/(3*nbr_enemies); 69 + int compteurY=j*TailleY/10;
  70 + int compteurX=TailleX/nbr_enemies;
  71 + for (int i=0; i<nbr_enemies; i++)
  72 + {
  73 + ajout_tete(enemies,creer_entite(compteurX,compteurY,j));
  74 + compteurX +=2*TailleX/(3*nbr_enemies);
  75 + }
62 } 76 }
63 } 77 }
1 #include <stdio.h> 1 #include <stdio.h>
2 #include <stdlib.h> 2 #include <stdlib.h>
3 3
4 -void DeplacementLutin(int,struct liste_entite*,int*,int); 4 +void DeplacementSbire(struct liste_entite*,int*,int);
5 5
6 -void Ligne_Monstre(struct liste_entite**,int); 6 +void AfficherSbire(int,struct liste_entite*);
  7 +
  8 +void LigneSbire(struct liste_entite**,int,int);