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 | 6 | #include "Interactif.h" |
7 | 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 | 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 | 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 | 22 | int CheckCollisionEntiteEntite (struct entite entite1, |
20 | 23 | int L1, |
... | ... | @@ -97,7 +100,12 @@ struct liste_entite* CheckCollisionListeListe (struct liste_entite* Liste1, |
97 | 100 | pListe2->entite, |
98 | 101 | L2, |
99 | 102 | H2); |
100 | - if (collision != NULL) | |
103 | + if (collision == NULL) | |
104 | + { | |
105 | + pListe2 = pListe2->suivant; | |
106 | + } | |
107 | + | |
108 | + else | |
101 | 109 | { |
102 | 110 | // Création des structures pour les deux entités |
103 | 111 | struct liste_entite* Entite1 = malloc(sizeof(struct liste_entite)); |
... | ... | @@ -113,9 +121,6 @@ struct liste_entite* CheckCollisionListeListe (struct liste_entite* Liste1, |
113 | 121 | |
114 | 122 | return Entite1; |
115 | 123 | } |
116 | - | |
117 | - else | |
118 | - pListe2 = pListe2->suivant; | |
119 | 124 | } |
120 | 125 | |
121 | 126 | return NULL; |
... | ... | @@ -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 | 170 | void action(struct entite* joueur, |
177 | 171 | char c, |
178 | 172 | struct liste_entite** tires) |
... | ... | @@ -201,9 +195,11 @@ void action(struct entite* joueur, |
201 | 195 | } |
202 | 196 | |
203 | 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 | 205 | struct liste_entite* pListe = enemies; |
... | ... | @@ -226,9 +222,12 @@ void MakeBombeDroppable (struct liste_entite* enemies, |
226 | 222 | { |
227 | 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 | 229 | int randomIndex = rand() % taille-1; |
231 | - struct liste_entite* pDropable = Dropable; | |
230 | + struct liste_entite* pDropable = Dropable; | |
232 | 231 | |
233 | 232 | for (int i = 0; i <= randomIndex; i++) |
234 | 233 | { |
... | ... | @@ -241,11 +240,10 @@ void MakeBombeDroppable (struct liste_entite* enemies, |
241 | 240 | -1)); |
242 | 241 | } |
243 | 242 | |
244 | -// | |
243 | + | |
245 | 244 | void DeplacementBombe(struct liste_entite** Liste) |
246 | 245 | { |
247 | 246 | struct liste_entite* pListe = *Liste; |
248 | - struct liste_entite* precedent = NULL; | |
249 | 247 | |
250 | 248 | while (pListe != NULL) |
251 | 249 | { |
... | ... | @@ -264,13 +262,13 @@ void DeplacementBombe(struct liste_entite** Liste) |
264 | 262 | afficherLutin(bombe, |
265 | 263 | pListe->entite.posx - hitboxbombeL/2 + ErreurHitbox, |
266 | 264 | pListe->entite.posy - hitboxbombeH/2 + ErreurHitbox); |
267 | - precedent = pListe; | |
268 | 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 | 272 | void NouveauDroppeurBombe (struct liste_entite** liste, |
275 | 273 | struct entite* entite) |
276 | 274 | { |
... | ... | @@ -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 | 316 | int SupprimerEntitesEnCollision (struct liste_entite** Liste1, |
319 | 317 | int L1, |
320 | 318 | int H1, | ... | ... |
Space Invader/Envahisseurs/Graphique/src/Interactif/Interactif.h
... | ... | @@ -28,14 +28,12 @@ void Tirer (struct entite joueur, |
28 | 28 | |
29 | 29 | void DeplacementTire(struct liste_entite** Liste); |
30 | 30 | |
31 | -char touche(); | |
32 | - | |
33 | 31 | void action(struct entite* joueur, |
34 | 32 | char c, |
35 | 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 | 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 | 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
Space Invader/Envahisseurs/Graphique/src/Main/Makefile
... | ... | @@ -30,5 +30,5 @@ clean: |
30 | 30 | rm -f $(TARGET) |
31 | 31 | |
32 | 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 | 6 | #include "../Interactif/Interactif.h" |
7 | 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 | 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 | 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 | 25 | //Ces variables sont globales car utilisées dans plusieurs .c |
27 | 26 | //Toutes les hitbox sont initialisées 1 fois puis sont des constantes |
... | ... | @@ -29,7 +28,7 @@ struct entite joueur; |
29 | 28 | |
30 | 29 | int canon = 0; |
31 | 30 | int missile = 0; |
32 | -int sbire = 0; | |
31 | +int enemie = 0; | |
33 | 32 | int bouillie = 0; |
34 | 33 | int bombe = 0; |
35 | 34 | |
... | ... | @@ -37,8 +36,8 @@ int hitboxcanonL = 0; |
37 | 36 | int hitboxcanonH = 0; |
38 | 37 | int hitboxmissileL = 0; |
39 | 38 | int hitboxmissileH = 0; |
40 | -int hitboxsbireL = 0; | |
41 | -int hitboxsbireH = 0; | |
39 | +int hitboxenemieL = 0; | |
40 | +int hitboxenemieH = 0; | |
42 | 41 | int hitboxbouillieL = 0; |
43 | 42 | int hitboxbouillieH = 0; |
44 | 43 | int hitboxbombeL = 0; |
... | ... | @@ -51,7 +50,7 @@ void initialiser() |
51 | 50 | COULEUR_NOIR); |
52 | 51 | missile = chargerLutin ("../../Lutins/invader_missile.bmp", |
53 | 52 | COULEUR_NOIR); |
54 | - sbire = chargerLutin ("../../Lutins/invader_monstre1_1.bmp", | |
53 | + enemie = chargerLutin ("../../Lutins/invader_monstre1_1.bmp", | |
55 | 54 | COULEUR_NOIR); |
56 | 55 | bouillie = chargerLutin ("../../Lutins/invader_monstre_bouillie.bmp", |
57 | 56 | COULEUR_NOIR); |
... | ... | @@ -66,9 +65,9 @@ void initialiser() |
66 | 65 | &hitboxmissileL, |
67 | 66 | &hitboxmissileH); |
68 | 67 | |
69 | - tailleLutin (sbire, | |
70 | - &hitboxsbireL, | |
71 | - &hitboxsbireH); | |
68 | + tailleLutin (enemie, | |
69 | + &hitboxenemieL, | |
70 | + &hitboxenemieH); | |
72 | 71 | |
73 | 72 | tailleLutin (bouillie, |
74 | 73 | &hitboxbouillieL, |
... | ... | @@ -81,22 +80,23 @@ void initialiser() |
81 | 80 | } |
82 | 81 | |
83 | 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 | 90 | //Page de démarage du jeu |
92 | 91 | char pagedemarrage() |
93 | 92 | { |
94 | 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 | 101 | choisirPolice (policeDefaut, TaillePolice2); |
102 | 102 | int LutinJouer = lutinTexte (jouer, COULEUR_BLANC); |
... | ... | @@ -135,10 +135,10 @@ char pagedemarrage() |
135 | 135 | majSurface(); |
136 | 136 | attendreEvenement (); |
137 | 137 | |
138 | - input = touche(); | |
138 | + lireEvenement (&even,&input,NULL); | |
139 | 139 | while (input == '\0') |
140 | 140 | { |
141 | - input = touche(); | |
141 | + lireEvenement (&even,&input,NULL); | |
142 | 142 | } |
143 | 143 | return input; |
144 | 144 | } |
... | ... | @@ -150,7 +150,7 @@ void pagemort (int nbr_vie) |
150 | 150 | int Largeur = 0; |
151 | 151 | int Hauteur = 0; |
152 | 152 | char mort[] = "Vous etes mort"; |
153 | - char vie[TailletexteMax] = "eMax] = "\0";"; | |
153 | + char vie[TailleChaineMax] = "eMax] = "\0";"; | |
154 | 154 | sprintf(vie, "Nombre de vie restante : %d", nbr_vie); |
155 | 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 | 3 | |
4 | 4 | extern int canon; |
5 | 5 | extern int missile; |
6 | -extern int sbire; | |
6 | +extern int enemie; | |
7 | 7 | extern int bouillie; |
8 | 8 | extern int bombe; |
9 | 9 | |
... | ... | @@ -15,15 +15,15 @@ extern int hitboxcanonL; |
15 | 15 | extern int hitboxcanonH; |
16 | 16 | extern int hitboxmissileL; |
17 | 17 | extern int hitboxmissileH; |
18 | -extern int hitboxsbireL; | |
19 | -extern int hitboxsbireH; | |
18 | +extern int hitboxenemieL; | |
19 | +extern int hitboxenemieH; | |
20 | 20 | extern int hitboxbouillieL; |
21 | 21 | extern int hitboxbouillieH; |
22 | 22 | extern int hitboxbombeL; |
23 | 23 | extern int hitboxbombeH; |
24 | 24 | |
25 | 25 | void initialiser(); |
26 | -void initialiserjoueur(struct entite* joueur); | |
26 | +void initialiserjoueur(); | |
27 | 27 | char pagedemarrage(); |
28 | 28 | void pagemort(int nbr_vie); |
29 | 29 | void pageGameOver(); | ... | ... |
Space Invader/Envahisseurs/Graphique/src/Main/main.c
... | ... | @@ -8,40 +8,58 @@ |
8 | 8 | #include "../Interactif/Interactif.h" |
9 | 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 | 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 | 31 | int main() |
18 | 32 | { |
19 | 33 | creerSurface(TailleX,TailleY,Nom); |
20 | 34 | |
21 | 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 | 43 | struct liste_entite* Ljoueur = NULL; |
29 | 44 | ajout_tete(&Ljoueur,joueur); |
30 | 45 | |
31 | 46 | |
32 | - LigneSbire(&enemies,8,3); | |
47 | + LigneEnemie(&ListeEnemies,NombreEnemieParLigne,NombreLigneEnemies); | |
33 | 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 | 58 | int coeur = chargerLutin ("../../Lutins/Coeur.bmp", |
43 | 59 | COULEUR_NOIR); |
44 | - int hitboxcoeurL,hitboxcoeurH; | |
60 | + int hitboxcoeurL = 0; | |
61 | + int hitboxcoeurH = 0; | |
62 | + | |
45 | 63 | tailleLutin (coeur, |
46 | 64 | &hitboxcoeurL, |
47 | 65 | &hitboxcoeurH); |
... | ... | @@ -50,105 +68,151 @@ int main() |
50 | 68 | { |
51 | 69 | return 0; |
52 | 70 | } |
53 | - SDL_Delay(500); | |
71 | + SDL_Delay(Delai0_5s); | |
54 | 72 | |
55 | 73 | //Bouble principale |
56 | 74 | while(input!='m') |
57 | 75 | { |
76 | + //Si le joueur est mort | |
58 | 77 | if (mort == 1) |
59 | 78 | { |
60 | 79 | nbr_vie-=1; |
80 | + //Si il lui reste des vies | |
61 | 81 | if (nbr_vie > 0) |
62 | 82 | { |
63 | 83 | pagemort(nbr_vie); |
64 | 84 | majSurface(); |
65 | - SDL_Delay(2000); | |
85 | + SDL_Delay(Delai2s); | |
66 | 86 | mort = 0; |
67 | 87 | } |
88 | + //Si il n'a plus de vie | |
68 | 89 | else |
69 | 90 | { |
70 | 91 | pageGameOver(); |
71 | 92 | majSurface(); |
72 | - SDL_Delay(2000); | |
93 | + SDL_Delay(Delai2s); | |
73 | 94 | return 0; |
74 | 95 | } |
96 | + //On ajoute de nouveau le joueur précedement supprimé à sa liste | |
75 | 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 | 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 | 186 | mort = 1; |
128 | 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 | 194 | pageGameOver(); |
134 | 195 | majSurface(); |
135 | - SDL_Delay(2000); | |
196 | + SDL_Delay(Delai2s); | |
136 | 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 | 203 | pageVictoire(); |
142 | 204 | majSurface(); |
143 | - SDL_Delay(2000); | |
205 | + SDL_Delay(Delai2s); | |
144 | 206 | return 0; |
145 | 207 | } |
146 | 208 | |
209 | + | |
147 | 210 | majSurface(); |
148 | - SDL_Delay(20); | |
149 | 211 | |
150 | - compteur += 1; | |
212 | + TourdeBoucle += 1; | |
151 | 213 | CheckAlea += 1; |
214 | + | |
215 | + SDL_Delay(VitesseTourdeBoucle); | |
152 | 216 | |
153 | 217 | } |
154 | 218 | return 0; | ... | ... |
Space Invader/Envahisseurs/Graphique/src/Monstre/Monstre.c
... | ... | @@ -5,19 +5,19 @@ |
5 | 5 | #include "../ListeC/Liste.h" |
6 | 6 | #include "Monstre.h" |
7 | 7 | |
8 | -#define TailleX 500 | |
9 | -#define TailleY 500 | |
8 | +#define TailleX 500 | |
9 | +#define TailleY 500 | |
10 | 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 | 14 | #define TailleJump 30 |
15 | 15 | |
16 | 16 | //Sens = 1 -> Va vers la droite |
17 | 17 | //Sens = 0 -> Va vers la gauche |
18 | -void DeplacementSbire(struct liste_entite* Liste, | |
18 | +void DeplacementEnemie(struct liste_entite* Liste, | |
19 | 19 | int* SensDeplacement, |
20 | - int Vitesse) | |
20 | + int Pas) | |
21 | 21 | { |
22 | 22 | |
23 | 23 | int ind = 0; |
... | ... | @@ -25,7 +25,7 @@ void DeplacementSbire(struct liste_entite* Liste, |
25 | 25 | |
26 | 26 | while (pListe != NULL) |
27 | 27 | { |
28 | - pListe->entite.posx += (*SensDeplacement == 1) ? Vitesse : -Vitesse; | |
28 | + pListe->entite.posx += (*SensDeplacement == 1) ? Pas : -Pas; | |
29 | 29 | if (pListe->entite.posx >= Taille9_10) |
30 | 30 | { |
31 | 31 | ind = 1; |
... | ... | @@ -53,7 +53,7 @@ void DeplacementSbire(struct liste_entite* Liste, |
53 | 53 | } |
54 | 54 | |
55 | 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 | 57 | int nbr_enemies, |
58 | 58 | int nbr_rangee) |
59 | 59 | { |
... | ... | @@ -67,7 +67,7 @@ void LigneSbire (struct liste_entite** ListeSbire, |
67 | 67 | { |
68 | 68 | if (j == nbr_rangee) |
69 | 69 | { |
70 | - ajout_tete(ListeSbire, | |
70 | + ajout_tete(ListeEnemie, | |
71 | 71 | creer_entite(compteurX, |
72 | 72 | compteurY, |
73 | 73 | 1)); |
... | ... | @@ -76,7 +76,7 @@ void LigneSbire (struct liste_entite** ListeSbire, |
76 | 76 | |
77 | 77 | else |
78 | 78 | { |
79 | - ajout_tete(ListeSbire, | |
79 | + ajout_tete(ListeEnemie, | |
80 | 80 | creer_entite(compteurX, |
81 | 81 | compteurY, |
82 | 82 | 0)); |
... | ... | @@ -87,7 +87,7 @@ void LigneSbire (struct liste_entite** ListeSbire, |
87 | 87 | } |
88 | 88 | |
89 | 89 | //Affichage des enemies centrés dans leur hitbox |
90 | -void AfficherSbire (struct liste_entite* Liste, | |
90 | +void AfficherEnemie (struct liste_entite* Liste, | |
91 | 91 | int lutin, |
92 | 92 | int Largeur, |
93 | 93 | int Hauteur) | ... | ... |
Space Invader/Envahisseurs/Graphique/src/Monstre/Monstre.h
1 | 1 | #include <stdio.h> |
2 | 2 | #include <stdlib.h> |
3 | 3 | |
4 | -void DeplacementSbire(struct liste_entite* Liste, | |
4 | +void DeplacementEnemie(struct liste_entite* Liste, | |
5 | 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 | 9 | int nbr_enemies, |
10 | 10 | int nbr_rangee); |
11 | 11 | |
12 | -void AfficherSbire (struct liste_entite* Liste, | |
12 | +void AfficherEnemie (struct liste_entite* Liste, | |
13 | 13 | int lutin, |
14 | 14 | int Largeur, |
15 | 15 | int Hauteur); | ... | ... |