Commit 7094c494a676100482604c62edecdb42aa603b69

Authored by Martin CHAUVELIERE
1 parent c1ee1f58

Améliorations finales

Space Invader/Envahisseurs/Graphique/src/Interactif/Interactif.c
@@ -6,15 +6,18 @@ @@ -6,15 +6,18 @@
6 #include "Interactif.h" 6 #include "Interactif.h"
7 #include "../Main/init.h" 7 #include "../Main/init.h"
8 8
9 -#define TailleX 500  
10 -#define TailleY 500  
11 -#define Sol 475 9 +#define TailleX 500
  10 +#define TailleY 500
  11 +#define Sol 475
12 #define ErreurHitbox 2 12 #define ErreurHitbox 2
13 -#define ValeurDeplacementTire 5 13 +#define TailleX9_10 (9 * TailleX / 10)
  14 +#define TailleX1_10 (TailleX / 10)
  15 +
  16 +#define ValeurDeplacementTire 5
14 #define ValeurDeplacementJoueur 3 17 #define ValeurDeplacementJoueur 3
15 -#define ValeurDeplacementBombe 2  
16 -#define TailleX9_10 9 * TailleX / 10  
17 -#define TailleX1_10 TailleX / 10 18 +#define ValeurDeplacementBombe 2
  19 +
  20 +
18 21
19 int CheckCollisionEntiteEntite (struct entite entite1, 22 int CheckCollisionEntiteEntite (struct entite entite1,
20 int L1, 23 int L1,
@@ -97,7 +100,12 @@ struct liste_entite* CheckCollisionListeListe (struct liste_entite* Liste1, @@ -97,7 +100,12 @@ struct liste_entite* CheckCollisionListeListe (struct liste_entite* Liste1,
97 pListe2->entite, 100 pListe2->entite,
98 L2, 101 L2,
99 H2); 102 H2);
100 - if (collision != NULL) 103 + if (collision == NULL)
  104 + {
  105 + pListe2 = pListe2->suivant;
  106 + }
  107 +
  108 + else
101 { 109 {
102 // Création des structures pour les deux entités 110 // Création des structures pour les deux entités
103 struct liste_entite* Entite1 = malloc(sizeof(struct liste_entite)); 111 struct liste_entite* Entite1 = malloc(sizeof(struct liste_entite));
@@ -113,9 +121,6 @@ struct liste_entite* CheckCollisionListeListe (struct liste_entite* Liste1, @@ -113,9 +121,6 @@ struct liste_entite* CheckCollisionListeListe (struct liste_entite* Liste1,
113 121
114 return Entite1; 122 return Entite1;
115 } 123 }
116 -  
117 - else  
118 - pListe2 = pListe2->suivant;  
119 } 124 }
120 125
121 return NULL; 126 return NULL;
@@ -161,18 +166,7 @@ void DeplacementTire(struct liste_entite** Liste) @@ -161,18 +166,7 @@ void DeplacementTire(struct liste_entite** Liste)
161 } 166 }
162 167
163 168
164 -  
165 -//La fonction renvoie la touche préssée  
166 -char touche()  
167 -{  
168 - char touche;  
169 - evenement even;  
170 - lireEvenement (&even,&touche,NULL);  
171 - return touche;  
172 -}  
173 -  
174 -  
175 -//Fais une action soit au joueur soit aux tires selon la touche préssée 169 +//La fonction fait une action soit au joueur soit aux tires selon la touche préssée
176 void action(struct entite* joueur, 170 void action(struct entite* joueur,
177 char c, 171 char c,
178 struct liste_entite** tires) 172 struct liste_entite** tires)
@@ -201,9 +195,11 @@ void action(struct entite* joueur, @@ -201,9 +195,11 @@ void action(struct entite* joueur,
201 } 195 }
202 196
203 //La fonction crée une liste de tout les enemies pouvant drop des bombes 197 //La fonction crée une liste de tout les enemies pouvant drop des bombes
204 -//Puis ajoute à la liste bombe, une bombe random provenant d'un des enemies pouvant drop des bombes  
205 -void MakeBombeDroppable (struct liste_entite* enemies,  
206 - struct liste_entite** bombes) 198 +//Ceux les plus bas de leur colonne
  199 +//Puis ajoute à la liste bombe, une bombe provenant d'un des enemies pouvant drop des bombes
  200 +//Le choix de quel enemie drop la bombe est aléatoire
  201 +void MakeBombeDrop (struct liste_entite* enemies,
  202 + struct liste_entite** bombes)
207 { 203 {
208 204
209 struct liste_entite* pListe = enemies; 205 struct liste_entite* pListe = enemies;
@@ -226,9 +222,12 @@ void MakeBombeDroppable (struct liste_entite* enemies, @@ -226,9 +222,12 @@ void MakeBombeDroppable (struct liste_entite* enemies,
226 { 222 {
227 return; 223 return;
228 } 224 }
229 - 225 + //On choisit une valeur aléatoire qui représente l'enemie qui va drop la bombe
  226 + //Il ya un warning comme quoi rand() à une limite
  227 + //Mais on ne la dépassera jamais, taille ne pourra
  228 + //jamais excédé une vingtaine d'enemies par ligne
230 int randomIndex = rand() % taille-1; 229 int randomIndex = rand() % taille-1;
231 - struct liste_entite* pDropable = Dropable; 230 + struct liste_entite* pDropable = Dropable;
232 231
233 for (int i = 0; i <= randomIndex; i++) 232 for (int i = 0; i <= randomIndex; i++)
234 { 233 {
@@ -241,11 +240,10 @@ void MakeBombeDroppable (struct liste_entite* enemies, @@ -241,11 +240,10 @@ void MakeBombeDroppable (struct liste_entite* enemies,
241 -1)); 240 -1));
242 } 241 }
243 242
244 -// 243 +
245 void DeplacementBombe(struct liste_entite** Liste) 244 void DeplacementBombe(struct liste_entite** Liste)
246 { 245 {
247 struct liste_entite* pListe = *Liste; 246 struct liste_entite* pListe = *Liste;
248 - struct liste_entite* precedent = NULL;  
249 247
250 while (pListe != NULL) 248 while (pListe != NULL)
251 { 249 {
@@ -264,13 +262,13 @@ void DeplacementBombe(struct liste_entite** Liste) @@ -264,13 +262,13 @@ void DeplacementBombe(struct liste_entite** Liste)
264 afficherLutin(bombe, 262 afficherLutin(bombe,
265 pListe->entite.posx - hitboxbombeL/2 + ErreurHitbox, 263 pListe->entite.posx - hitboxbombeL/2 + ErreurHitbox,
266 pListe->entite.posy - hitboxbombeH/2 + ErreurHitbox); 264 pListe->entite.posy - hitboxbombeH/2 + ErreurHitbox);
267 - precedent = pListe;  
268 pListe = pListe->suivant; 265 pListe = pListe->suivant;
269 } 266 }
270 } 267 }
271 } 268 }
272 269
273 - 270 +//Si un enemie est éliminé et qu'il etait le plus bas de sa colonne (il pouvait drop des bombes)
  271 +//Alors si il y en a un l'enemie au dessus de lui (de la meme colonne) peut drop des bombes
274 void NouveauDroppeurBombe (struct liste_entite** liste, 272 void NouveauDroppeurBombe (struct liste_entite** liste,
275 struct entite* entite) 273 struct entite* entite)
276 { 274 {
@@ -314,7 +312,7 @@ void NouveauDroppeurBombe (struct liste_entite** liste, @@ -314,7 +312,7 @@ void NouveauDroppeurBombe (struct liste_entite** liste,
314 312
315 313
316 314
317 - 315 +//Fonction principale qui supprime les entités rentrées en collision de leur liste
318 int SupprimerEntitesEnCollision (struct liste_entite** Liste1, 316 int SupprimerEntitesEnCollision (struct liste_entite** Liste1,
319 int L1, 317 int L1,
320 int H1, 318 int H1,
Space Invader/Envahisseurs/Graphique/src/Interactif/Interactif.h
@@ -28,14 +28,12 @@ void Tirer (struct entite joueur, @@ -28,14 +28,12 @@ void Tirer (struct entite joueur,
28 28
29 void DeplacementTire(struct liste_entite** Liste); 29 void DeplacementTire(struct liste_entite** Liste);
30 30
31 -char touche();  
32 -  
33 void action(struct entite* joueur, 31 void action(struct entite* joueur,
34 char c, 32 char c,
35 struct liste_entite** tires); 33 struct liste_entite** tires);
36 34
37 -void MakeBombeDroppable (struct liste_entite* enemies,  
38 - struct liste_entite** bombes); 35 +void MakeBombeDrop (struct liste_entite* enemies,
  36 + struct liste_entite** bombes);
39 37
40 void DeplacementBombe(struct liste_entite** Liste) ; 38 void DeplacementBombe(struct liste_entite** Liste) ;
41 39
Space Invader/Envahisseurs/Graphique/src/ListeC/Liste.c
@@ -67,3 +67,12 @@ void SupprimerEntite (struct liste_entite** Liste, @@ -67,3 +67,12 @@ void SupprimerEntite (struct liste_entite** Liste,
67 } 67 }
68 } 68 }
69 69
  70 +
  71 +//Desallouer une liste entiere
  72 +void DesallouerListe (struct liste_entite** Liste)
  73 +{
  74 + while(*Liste != NULL)
  75 + {
  76 + SupprimerEntite(Liste,&((*Liste)->entite));
  77 + }
  78 +}
Space Invader/Envahisseurs/Graphique/src/ListeC/Liste.h
@@ -29,3 +29,4 @@ void ajout_tete (struct liste_entite** Liste, @@ -29,3 +29,4 @@ void ajout_tete (struct liste_entite** Liste,
29 void SupprimerEntite (struct liste_entite** Liste, 29 void SupprimerEntite (struct liste_entite** Liste,
30 struct entite* entite); 30 struct entite* entite);
31 31
  32 +void DesallouerListe (struct liste_entite** Liste);
Space Invader/Envahisseurs/Graphique/src/Main/Makefile
@@ -30,5 +30,5 @@ clean: @@ -30,5 +30,5 @@ clean:
30 rm -f $(TARGET) 30 rm -f $(TARGET)
31 31
32 tidy : main.c ../ListeC/Liste.c ../Monstre/Monstre.c ../Interactif/Interactif.c init.c 32 tidy : main.c ../ListeC/Liste.c ../Monstre/Monstre.c ../Interactif/Interactif.c init.c
33 - $(CC)-tidy ../Interactif/Interactif.c --checks="readability-*" -header-filter=.* 33 + $(CC)-tidy main.c ../ListeC/Liste.c ../Monstre/Monstre.c ../Interactif/Interactif.c init.c --checks="*" -header-filter=.*
34 34
Space Invader/Envahisseurs/Graphique/src/Main/init.c
@@ -6,22 +6,21 @@ @@ -6,22 +6,21 @@
6 #include "../Interactif/Interactif.h" 6 #include "../Interactif/Interactif.h"
7 #include "init.h" 7 #include "init.h"
8 8
9 -#define TailleX 500  
10 -#define TailleY 500  
11 -#define PositionX_1 TailleX / 2  
12 -#define PositionY_1 TailleY / 2  
13 -#define PositionY_2 TailleY / 4  
14 -  
15 -#define Sol 475 9 +#define TailleX 500
  10 +#define TailleY 500
  11 +#define Sol 475
16 #define ErreurHitbox 2 12 #define ErreurHitbox 2
17 -#define TailletexteMax 30 13 +#define PositionX_1 (TailleX / 2)
  14 +#define PositionY_1 (TailleY / 2)
  15 +#define PositionY_2 (TailleY / 4)
18 16
19 -#define JoueurX TailleX/2  
20 -#define JoueurY 9*TailleY/10 17 +#define JoueurX (TailleX / 2)
  18 +#define JoueurY (9 * TailleY / 10)
21 19
22 #define Nom "Space Invader" 20 #define Nom "Space Invader"
23 -#define TaillePolice1 TailleX / 10  
24 -#define TaillePolice2 TailleX / 20 21 +#define TaillePolice1 (TailleX / 10)
  22 +#define TaillePolice2 (TailleX / 20)
  23 +#define TailleChaineMax 30
25 24
26 //Ces variables sont globales car utilisées dans plusieurs .c 25 //Ces variables sont globales car utilisées dans plusieurs .c
27 //Toutes les hitbox sont initialisées 1 fois puis sont des constantes 26 //Toutes les hitbox sont initialisées 1 fois puis sont des constantes
@@ -29,7 +28,7 @@ struct entite joueur; @@ -29,7 +28,7 @@ struct entite joueur;
29 28
30 int canon = 0; 29 int canon = 0;
31 int missile = 0; 30 int missile = 0;
32 -int sbire = 0; 31 +int enemie = 0;
33 int bouillie = 0; 32 int bouillie = 0;
34 int bombe = 0; 33 int bombe = 0;
35 34
@@ -37,8 +36,8 @@ int hitboxcanonL = 0; @@ -37,8 +36,8 @@ int hitboxcanonL = 0;
37 int hitboxcanonH = 0; 36 int hitboxcanonH = 0;
38 int hitboxmissileL = 0; 37 int hitboxmissileL = 0;
39 int hitboxmissileH = 0; 38 int hitboxmissileH = 0;
40 -int hitboxsbireL = 0;  
41 -int hitboxsbireH = 0; 39 +int hitboxenemieL = 0;
  40 +int hitboxenemieH = 0;
42 int hitboxbouillieL = 0; 41 int hitboxbouillieL = 0;
43 int hitboxbouillieH = 0; 42 int hitboxbouillieH = 0;
44 int hitboxbombeL = 0; 43 int hitboxbombeL = 0;
@@ -51,7 +50,7 @@ void initialiser() @@ -51,7 +50,7 @@ void initialiser()
51 COULEUR_NOIR); 50 COULEUR_NOIR);
52 missile = chargerLutin ("../../Lutins/invader_missile.bmp", 51 missile = chargerLutin ("../../Lutins/invader_missile.bmp",
53 COULEUR_NOIR); 52 COULEUR_NOIR);
54 - sbire = chargerLutin ("../../Lutins/invader_monstre1_1.bmp", 53 + enemie = chargerLutin ("../../Lutins/invader_monstre1_1.bmp",
55 COULEUR_NOIR); 54 COULEUR_NOIR);
56 bouillie = chargerLutin ("../../Lutins/invader_monstre_bouillie.bmp", 55 bouillie = chargerLutin ("../../Lutins/invader_monstre_bouillie.bmp",
57 COULEUR_NOIR); 56 COULEUR_NOIR);
@@ -66,9 +65,9 @@ void initialiser() @@ -66,9 +65,9 @@ void initialiser()
66 &hitboxmissileL, 65 &hitboxmissileL,
67 &hitboxmissileH); 66 &hitboxmissileH);
68 67
69 - tailleLutin (sbire,  
70 - &hitboxsbireL,  
71 - &hitboxsbireH); 68 + tailleLutin (enemie,
  69 + &hitboxenemieL,
  70 + &hitboxenemieH);
72 71
73 tailleLutin (bouillie, 72 tailleLutin (bouillie,
74 &hitboxbouillieL, 73 &hitboxbouillieL,
@@ -81,22 +80,23 @@ void initialiser() @@ -81,22 +80,23 @@ void initialiser()
81 } 80 }
82 81
83 //Initialisation des coordonnées du joueur pour le main 82 //Initialisation des coordonnées du joueur pour le main
84 -void initialiserjoueur(struct entite* joueur) 83 +void initialiserjoueur()
85 { 84 {
86 - joueur->posx = JoueurX;  
87 - joueur->posy = JoueurY;  
88 - joueur->dropbombe = -1; 85 + joueur.posx = JoueurX;
  86 + joueur.posy = JoueurY;
  87 + joueur.dropbombe = -1;
89 } 88 }
90 89
91 //Page de démarage du jeu 90 //Page de démarage du jeu
92 char pagedemarrage() 91 char pagedemarrage()
93 { 92 {
94 static const char policeDefaut[] = "/usr/share/fonts/truetype/dejavu/DejaVuSans.ttf"; 93 static const char policeDefaut[] = "/usr/share/fonts/truetype/dejavu/DejaVuSans.ttf";
95 - char input = '\0';  
96 - int Largeur = 0;  
97 - int Hauteur = 0;  
98 - char jouer[] = "Appuyer sur j pour Jouer";  
99 - char quitter[] = "Appuyer ailleurs pour Quitter"; 94 + char input = '\0';
  95 + evenement even = 0;
  96 + int Largeur = 0;
  97 + int Hauteur = 0;
  98 + char jouer[] = "Appuyer sur j pour Jouer";
  99 + char quitter[] = "Appuyer ailleurs pour Quitter";
100 100
101 choisirPolice (policeDefaut, TaillePolice2); 101 choisirPolice (policeDefaut, TaillePolice2);
102 int LutinJouer = lutinTexte (jouer, COULEUR_BLANC); 102 int LutinJouer = lutinTexte (jouer, COULEUR_BLANC);
@@ -135,10 +135,10 @@ char pagedemarrage() @@ -135,10 +135,10 @@ char pagedemarrage()
135 majSurface(); 135 majSurface();
136 attendreEvenement (); 136 attendreEvenement ();
137 137
138 - input = touche(); 138 + lireEvenement (&even,&input,NULL);
139 while (input == '\0') 139 while (input == '\0')
140 { 140 {
141 - input = touche(); 141 + lireEvenement (&even,&input,NULL);
142 } 142 }
143 return input; 143 return input;
144 } 144 }
@@ -150,7 +150,7 @@ void pagemort (int nbr_vie) @@ -150,7 +150,7 @@ void pagemort (int nbr_vie)
150 int Largeur = 0; 150 int Largeur = 0;
151 int Hauteur = 0; 151 int Hauteur = 0;
152 char mort[] = "Vous etes mort"; 152 char mort[] = "Vous etes mort";
153 - char vie[TailletexteMax] = "eMax] = "\0";"; 153 + char vie[TailleChaineMax] = "eMax] = "\0";";
154 sprintf(vie, "Nombre de vie restante : %d", nbr_vie); 154 sprintf(vie, "Nombre de vie restante : %d", nbr_vie);
155 //sprint_f crée un warning mais celui-ci ne peut pas crée d'erreur 155 //sprint_f crée un warning mais celui-ci ne peut pas crée d'erreur
156 156
Space Invader/Envahisseurs/Graphique/src/Main/init.h
@@ -3,7 +3,7 @@ @@ -3,7 +3,7 @@
3 3
4 extern int canon; 4 extern int canon;
5 extern int missile; 5 extern int missile;
6 -extern int sbire; 6 +extern int enemie;
7 extern int bouillie; 7 extern int bouillie;
8 extern int bombe; 8 extern int bombe;
9 9
@@ -15,15 +15,15 @@ extern int hitboxcanonL; @@ -15,15 +15,15 @@ extern int hitboxcanonL;
15 extern int hitboxcanonH; 15 extern int hitboxcanonH;
16 extern int hitboxmissileL; 16 extern int hitboxmissileL;
17 extern int hitboxmissileH; 17 extern int hitboxmissileH;
18 -extern int hitboxsbireL;  
19 -extern int hitboxsbireH; 18 +extern int hitboxenemieL;
  19 +extern int hitboxenemieH;
20 extern int hitboxbouillieL; 20 extern int hitboxbouillieL;
21 extern int hitboxbouillieH; 21 extern int hitboxbouillieH;
22 extern int hitboxbombeL; 22 extern int hitboxbombeL;
23 extern int hitboxbombeH; 23 extern int hitboxbombeH;
24 24
25 void initialiser(); 25 void initialiser();
26 -void initialiserjoueur(struct entite* joueur); 26 +void initialiserjoueur();
27 char pagedemarrage(); 27 char pagedemarrage();
28 void pagemort(int nbr_vie); 28 void pagemort(int nbr_vie);
29 void pageGameOver(); 29 void pageGameOver();
Space Invader/Envahisseurs/Graphique/src/Main/main.c
@@ -8,40 +8,58 @@ @@ -8,40 +8,58 @@
8 #include "../Interactif/Interactif.h" 8 #include "../Interactif/Interactif.h"
9 #include "init.h" 9 #include "init.h"
10 10
11 -#define TailleX 500  
12 -#define TailleY 500  
13 -#define Sol 475 11 +#define TailleX 500
  12 +#define TailleY 500
  13 +#define Sol 475
  14 +#define EpaisseurSol 2
14 #define ErreurHitbox 2 15 #define ErreurHitbox 2
15 -#define Nom "Space Invader"  
16 16
  17 +#define Nom "Space Invader"
  18 +#define NombreEnemieParLigne 8
  19 +#define NombreLigneEnemies 3
  20 +#define NombreVie 3
  21 +
  22 +#define BombeRandomFixe 50
  23 +#define BombeRandomAlea 30
  24 +
  25 +#define VitesseTourdeBoucle 20
  26 +#define VitesseDeplacementEnemie 2
  27 +
  28 +#define Delai0_2s 200
  29 +#define Delai0_5s 500
  30 +#define Delai2s 2000
17 int main() 31 int main()
18 { 32 {
19 creerSurface(TailleX,TailleY,Nom); 33 creerSurface(TailleX,TailleY,Nom);
20 34
21 initialiser(); 35 initialiser();
22 - initialiserjoueur(&joueur); 36 + initialiserjoueur();
23 37
24 - struct liste_entite *enemies = NULL;  
25 - struct liste_entite *tires = NULL;  
26 - struct liste_entite *bombes = NULL;  
27 - //joueur est dans une liste pour que je puisse utiliser des fonctions deja créé 38 + struct liste_entite* ListeEnemies = NULL;
  39 + struct liste_entite* ListeTires = NULL;
  40 + struct liste_entite* ListeBombes = NULL;
  41 +
  42 + //joueur est dans une liste afin d'utiliser des fonctions deja crée
28 struct liste_entite* Ljoueur = NULL; 43 struct liste_entite* Ljoueur = NULL;
29 ajout_tete(&Ljoueur,joueur); 44 ajout_tete(&Ljoueur,joueur);
30 45
31 46
32 - LigneSbire(&enemies,8,3); 47 + LigneEnemie(&ListeEnemies,NombreEnemieParLigne,NombreLigneEnemies);
33 int SensVague=1; 48 int SensVague=1;
34 49
35 - char input = '\0';  
36 - int compteur = 0;  
37 - int DropAlea = 0;  
38 - int CheckAlea = 0;  
39 - int mort = 0;  
40 - int nbr_vie = 3; 50 + char input = '\0';
  51 + int TourdeBoucle = 0;
  52 + int TimeAlea = 0;
  53 + int CheckAlea = 0;
  54 + int mort = 0;
  55 + int nbr_vie = NombreVie;
  56 + evenement even = 0;
41 57
42 int coeur = chargerLutin ("../../Lutins/Coeur.bmp", 58 int coeur = chargerLutin ("../../Lutins/Coeur.bmp",
43 COULEUR_NOIR); 59 COULEUR_NOIR);
44 - int hitboxcoeurL,hitboxcoeurH; 60 + int hitboxcoeurL = 0;
  61 + int hitboxcoeurH = 0;
  62 +
45 tailleLutin (coeur, 63 tailleLutin (coeur,
46 &hitboxcoeurL, 64 &hitboxcoeurL,
47 &hitboxcoeurH); 65 &hitboxcoeurH);
@@ -50,105 +68,151 @@ int main() @@ -50,105 +68,151 @@ int main()
50 { 68 {
51 return 0; 69 return 0;
52 } 70 }
53 - SDL_Delay(500); 71 + SDL_Delay(Delai0_5s);
54 72
55 //Bouble principale 73 //Bouble principale
56 while(input!='m') 74 while(input!='m')
57 { 75 {
  76 + //Si le joueur est mort
58 if (mort == 1) 77 if (mort == 1)
59 { 78 {
60 nbr_vie-=1; 79 nbr_vie-=1;
  80 + //Si il lui reste des vies
61 if (nbr_vie > 0) 81 if (nbr_vie > 0)
62 { 82 {
63 pagemort(nbr_vie); 83 pagemort(nbr_vie);
64 majSurface(); 84 majSurface();
65 - SDL_Delay(2000); 85 + SDL_Delay(Delai2s);
66 mort = 0; 86 mort = 0;
67 } 87 }
  88 + //Si il n'a plus de vie
68 else 89 else
69 { 90 {
70 pageGameOver(); 91 pageGameOver();
71 majSurface(); 92 majSurface();
72 - SDL_Delay(2000); 93 + SDL_Delay(Delai2s);
73 return 0; 94 return 0;
74 } 95 }
  96 + //On ajoute de nouveau le joueur précedement supprimé à sa liste
75 ajout_tete(&Ljoueur,joueur); 97 ajout_tete(&Ljoueur,joueur);
76 - tires = NULL;  
77 - bombes = NULL; 98 + DesallouerListe(&ListeTires);
  99 + DesallouerListe(&ListeBombes);
78 } 100 }
79 101
80 - rectanglePlein(0,0,TailleX,TailleY,COULEUR_NOIR); 102 + //Affichage Rectangle Noir sur toute la page
  103 + rectanglePlein(0,
  104 + 0,
  105 + TailleX,
  106 + TailleY,
  107 + COULEUR_NOIR);
81 108
82 - if (nbr_vie == 3)  
83 - {  
84 - afficherLutin(coeur,Sol-2*hitboxcoeurL,Sol);  
85 - }  
86 - if (nbr_vie >= 2) 109 + //Affichage des coeurs de vie
  110 + for (int i = 1 ; i <= nbr_vie; i++)
87 { 111 {
88 - afficherLutin(coeur,Sol-hitboxcoeurL,Sol); 112 + afficherLutin(coeur,
  113 + TailleX - i * hitboxcoeurL,
  114 + Sol);
89 } 115 }
90 - afficherLutin(coeur,Sol,Sol);  
91 116
92 - rectanglePlein(0,Sol,TailleX,2,COULEUR_VERT); 117 + //Affichage du Sol
  118 + rectanglePlein(0,
  119 + Sol,
  120 + TailleX,
  121 + EpaisseurSol,
  122 + COULEUR_VERT);
93 123
  124 + //Affichage du joueur
  125 + afficherLutin(canon,
  126 + Ljoueur->entite.posx - hitboxcanonL/2 + ErreurHitbox,
  127 + Ljoueur->entite.posy);
94 128
95 - afficherLutin(canon,Ljoueur->entite.posx - hitboxcanonL/2 + ErreurHitbox,Ljoueur->entite.posy);  
96 - AfficherSbire(enemies,sbire,hitboxsbireL,hitboxsbireH); 129 + //Affichage des ListeEnemies
  130 + AfficherEnemie(ListeEnemies,
  131 + enemie,
  132 + hitboxenemieL,
  133 + hitboxenemieH);
97 134
98 - if (DropAlea == 0) 135 + //Systeme pour faire drop une bombe dans un temps aléatoire
  136 + //Mise en place d'un timer
  137 + //TimeAlea représente le nombre de tour de boucle à éffectuer
  138 + if (TimeAlea == 0)
99 { 139 {
100 - DropAlea = rand() % 31 + 100; 140 + //50 tour de boucle minimum + une valeur de 0 à 31
  141 + TimeAlea = rand() % BombeRandomAlea + BombeRandomFixe;
  142 + //Il y a un warning car rand() à une valeur limite que l'on ne dépasse pas
101 } 143 }
102 - if (CheckAlea == DropAlea) 144 + //CheckAlea est incrémenté de 1 à chaque tour de boucle
  145 + //Lorsque celui ci vaut TimeAlea on peut drop une bombe
  146 + //On reset à 0 le Timer et le Check aprés avoir Drop une bombe
  147 + if (CheckAlea == TimeAlea)
103 { 148 {
104 - MakeBombeDroppable(enemies,&bombes);  
105 - DropAlea=0; 149 + MakeBombeDrop(ListeEnemies,
  150 + &ListeBombes);
  151 + TimeAlea=0;
106 CheckAlea=0; 152 CheckAlea=0;
107 } 153 }
108 154
  155 + //Gestion des evenements clavier
  156 + //On ne peut appuyer que sur une seule touche à la fois
  157 + lireEvenement (&even,
  158 + &input,
  159 + NULL);
  160 + if (even == toucheBas)
  161 + {
  162 + action(&Ljoueur->entite,
  163 + input,
  164 + &ListeTires);
  165 + }
109 166
110 - input = touche();  
111 - action(&Ljoueur->entite,input,&tires);  
112 -  
113 -  
114 - if (compteur==2) 167 + //Deplacement des enemies tout les X tours de boucle
  168 + if (TourdeBoucle == VitesseDeplacementEnemie)
115 { 169 {
116 - DeplacementSbire(enemies,&SensVague,1);  
117 - compteur=0; 170 + DeplacementEnemie(ListeEnemies,
  171 + &SensVague,
  172 + 1);
  173 + TourdeBoucle = 0;
118 } 174 }
119 175
120 - DeplacementTire(&tires);  
121 - DeplacementBombe(&bombes); 176 + //Deplacement des Tires et Bombes
  177 + DeplacementTire(&ListeTires);
  178 + DeplacementBombe(&ListeBombes);
122 179
123 - SupprimerEntitesEnCollision(&tires,hitboxmissileL,hitboxmissileH,&enemies,hitboxsbireL,hitboxsbireH); 180 + //Supression si collision des Tires et Enemies
  181 + SupprimerEntitesEnCollision(&ListeTires,hitboxmissileL,hitboxmissileH,&ListeEnemies,hitboxenemieL,hitboxenemieH);
124 182
125 - if (SupprimerEntitesEnCollision(&bombes,hitboxbombeL,hitboxbombeH,&Ljoueur,hitboxcanonL,hitboxcanonH) == 1) 183 + //Supression si collision des Bombes et Joueur
  184 + if (SupprimerEntitesEnCollision(&ListeBombes,hitboxbombeL,hitboxbombeH,&Ljoueur,hitboxcanonL,hitboxcanonH) == 1)
126 { 185 {
127 mort = 1; 186 mort = 1;
128 majSurface(); 187 majSurface();
129 - SDL_Delay(200); 188 + SDL_Delay(Delai0_2s);
130 } 189 }
131 - if (SupprimerEntitesEnCollision(&enemies,hitboxsbireL,hitboxsbireH,&Ljoueur,hitboxcanonL,hitboxcanonH) == 1) 190 +
  191 + //Supression si collision des Enemies et Joueur
  192 + if (SupprimerEntitesEnCollision(&ListeEnemies,hitboxenemieL,hitboxenemieH,&Ljoueur,hitboxcanonL,hitboxcanonH) == 1)
132 { 193 {
133 pageGameOver(); 194 pageGameOver();
134 majSurface(); 195 majSurface();
135 - SDL_Delay(2000); 196 + SDL_Delay(Delai2s);
136 return 0; 197 return 0;
137 } 198 }
138 199
139 - if (enemies == NULL) 200 + //Si il n'y a plus d'enemies, c'est une victoire !!!
  201 + if (ListeEnemies == NULL)
140 { 202 {
141 pageVictoire(); 203 pageVictoire();
142 majSurface(); 204 majSurface();
143 - SDL_Delay(2000); 205 + SDL_Delay(Delai2s);
144 return 0; 206 return 0;
145 } 207 }
146 208
  209 +
147 majSurface(); 210 majSurface();
148 - SDL_Delay(20);  
149 211
150 - compteur += 1; 212 + TourdeBoucle += 1;
151 CheckAlea += 1; 213 CheckAlea += 1;
  214 +
  215 + SDL_Delay(VitesseTourdeBoucle);
152 216
153 } 217 }
154 return 0; 218 return 0;
Space Invader/Envahisseurs/Graphique/src/Monstre/Monstre.c
@@ -5,19 +5,19 @@ @@ -5,19 +5,19 @@
5 #include "../ListeC/Liste.h" 5 #include "../ListeC/Liste.h"
6 #include "Monstre.h" 6 #include "Monstre.h"
7 7
8 -#define TailleX 500  
9 -#define TailleY 500 8 +#define TailleX 500
  9 +#define TailleY 500
10 #define ErreurHitbox 2 10 #define ErreurHitbox 2
11 11
12 -#define Taille1_10 TailleX / 10  
13 -#define Taille9_10 9 * TailleX / 10 12 +#define Taille1_10 (TailleX / 10)
  13 +#define Taille9_10 (9 * TailleX / 10)
14 #define TailleJump 30 14 #define TailleJump 30
15 15
16 //Sens = 1 -> Va vers la droite 16 //Sens = 1 -> Va vers la droite
17 //Sens = 0 -> Va vers la gauche 17 //Sens = 0 -> Va vers la gauche
18 -void DeplacementSbire(struct liste_entite* Liste, 18 +void DeplacementEnemie(struct liste_entite* Liste,
19 int* SensDeplacement, 19 int* SensDeplacement,
20 - int Vitesse) 20 + int Pas)
21 { 21 {
22 22
23 int ind = 0; 23 int ind = 0;
@@ -25,7 +25,7 @@ void DeplacementSbire(struct liste_entite* Liste, @@ -25,7 +25,7 @@ void DeplacementSbire(struct liste_entite* Liste,
25 25
26 while (pListe != NULL) 26 while (pListe != NULL)
27 { 27 {
28 - pListe->entite.posx += (*SensDeplacement == 1) ? Vitesse : -Vitesse; 28 + pListe->entite.posx += (*SensDeplacement == 1) ? Pas : -Pas;
29 if (pListe->entite.posx >= Taille9_10) 29 if (pListe->entite.posx >= Taille9_10)
30 { 30 {
31 ind = 1; 31 ind = 1;
@@ -53,7 +53,7 @@ void DeplacementSbire(struct liste_entite* Liste, @@ -53,7 +53,7 @@ void DeplacementSbire(struct liste_entite* Liste,
53 } 53 }
54 54
55 //Création de lignes d'entités enemies dans la liste enemies 55 //Création de lignes d'entités enemies dans la liste enemies
56 -void LigneSbire (struct liste_entite** ListeSbire, 56 +void LigneEnemie (struct liste_entite** ListeEnemie,
57 int nbr_enemies, 57 int nbr_enemies,
58 int nbr_rangee) 58 int nbr_rangee)
59 { 59 {
@@ -67,7 +67,7 @@ void LigneSbire (struct liste_entite** ListeSbire, @@ -67,7 +67,7 @@ void LigneSbire (struct liste_entite** ListeSbire,
67 { 67 {
68 if (j == nbr_rangee) 68 if (j == nbr_rangee)
69 { 69 {
70 - ajout_tete(ListeSbire, 70 + ajout_tete(ListeEnemie,
71 creer_entite(compteurX, 71 creer_entite(compteurX,
72 compteurY, 72 compteurY,
73 1)); 73 1));
@@ -76,7 +76,7 @@ void LigneSbire (struct liste_entite** ListeSbire, @@ -76,7 +76,7 @@ void LigneSbire (struct liste_entite** ListeSbire,
76 76
77 else 77 else
78 { 78 {
79 - ajout_tete(ListeSbire, 79 + ajout_tete(ListeEnemie,
80 creer_entite(compteurX, 80 creer_entite(compteurX,
81 compteurY, 81 compteurY,
82 0)); 82 0));
@@ -87,7 +87,7 @@ void LigneSbire (struct liste_entite** ListeSbire, @@ -87,7 +87,7 @@ void LigneSbire (struct liste_entite** ListeSbire,
87 } 87 }
88 88
89 //Affichage des enemies centrés dans leur hitbox 89 //Affichage des enemies centrés dans leur hitbox
90 -void AfficherSbire (struct liste_entite* Liste, 90 +void AfficherEnemie (struct liste_entite* Liste,
91 int lutin, 91 int lutin,
92 int Largeur, 92 int Largeur,
93 int Hauteur) 93 int Hauteur)
Space Invader/Envahisseurs/Graphique/src/Monstre/Monstre.h
1 #include <stdio.h> 1 #include <stdio.h>
2 #include <stdlib.h> 2 #include <stdlib.h>
3 3
4 -void DeplacementSbire(struct liste_entite* Liste, 4 +void DeplacementEnemie(struct liste_entite* Liste,
5 int* SensDeplacement, 5 int* SensDeplacement,
6 - int Vitesse); 6 + int Pas);
7 7
8 -void LigneSbire (struct liste_entite** ListeSbire, 8 +void LigneEnemie (struct liste_entite** ListeEnemie,
9 int nbr_enemies, 9 int nbr_enemies,
10 int nbr_rangee); 10 int nbr_rangee);
11 11
12 -void AfficherSbire (struct liste_entite* Liste, 12 +void AfficherEnemie (struct liste_entite* Liste,
13 int lutin, 13 int lutin,
14 int Largeur, 14 int Largeur,
15 int Hauteur); 15 int Hauteur);