Commit 7094c494a676100482604c62edecdb42aa603b69
1 parent
c1ee1f58
Améliorations finales
Showing
10 changed files
with
214 additions
and
144 deletions
Show diff stats
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); |