Commit 4d73f71eb18f55dd9ab02cb1f1e895e0ae91ab98
1 parent
d132aafe
Principal du jeu terminé, beaucoup d'optimisations à venir
Showing
5 changed files
with
104 additions
and
22 deletions
Show diff stats
Interactif/Interactif.c
@@ -80,7 +80,7 @@ struct liste_entite* CheckCollisionListeListe(struct liste_entite *Liste1,int L1 | @@ -80,7 +80,7 @@ struct liste_entite* CheckCollisionListeListe(struct liste_entite *Liste1,int L1 | ||
80 | 80 | ||
81 | 81 | ||
82 | 82 | ||
83 | -void SupprimerEntitesEnCollision(struct liste_entite** Liste1, int L1, int H1, struct liste_entite** Liste2, int L2, int H2) | 83 | +int SupprimerEntitesEnCollision(struct liste_entite** Liste1, int L1, int H1, struct liste_entite** Liste2, int L2, int H2) |
84 | { | 84 | { |
85 | struct liste_entite* collision = CheckCollisionListeListe(*Liste1, L1, H1, *Liste2, L2, H2); | 85 | struct liste_entite* collision = CheckCollisionListeListe(*Liste1, L1, H1, *Liste2, L2, H2); |
86 | 86 | ||
@@ -96,7 +96,10 @@ void SupprimerEntitesEnCollision(struct liste_entite** Liste1, int L1, int H1, s | @@ -96,7 +96,10 @@ void SupprimerEntitesEnCollision(struct liste_entite** Liste1, int L1, int H1, s | ||
96 | SupprimerEntite(Liste2, enti2); | 96 | SupprimerEntite(Liste2, enti2); |
97 | 97 | ||
98 | afficherLutin(bouillie, enti2->posx - hitboxbouillieL/2 + ErreurHitbox, enti2->posy - hitboxbouillieH/2 + ErreurHitbox); | 98 | afficherLutin(bouillie, enti2->posx - hitboxbouillieL/2 + ErreurHitbox, enti2->posy - hitboxbouillieH/2 + ErreurHitbox); |
99 | + | ||
100 | + return 1; | ||
99 | } | 101 | } |
102 | + return 0; | ||
100 | } | 103 | } |
101 | 104 | ||
102 | 105 | ||
@@ -208,7 +211,7 @@ void DeplacementBombe(int bombe, struct liste_entite** l) | @@ -208,7 +211,7 @@ void DeplacementBombe(int bombe, struct liste_entite** l) | ||
208 | 211 | ||
209 | while (ml != NULL) | 212 | while (ml != NULL) |
210 | { | 213 | { |
211 | - if (ml->enti.posy + hitboxbombeH - ErreurHitbox >= Sol) | 214 | + if (ml->enti.posy + hitboxbombeH/2 - ErreurHitbox >= Sol) |
212 | { | 215 | { |
213 | struct entite* a_supprimer = &ml->enti; | 216 | struct entite* a_supprimer = &ml->enti; |
214 | ml = ml->suivant; | 217 | ml = ml->suivant; |
@@ -217,7 +220,7 @@ void DeplacementBombe(int bombe, struct liste_entite** l) | @@ -217,7 +220,7 @@ void DeplacementBombe(int bombe, struct liste_entite** l) | ||
217 | else | 220 | else |
218 | { | 221 | { |
219 | ml->enti.posy += 2; | 222 | ml->enti.posy += 2; |
220 | - afficherLutin(bombe, ml->enti.posx - hitboxbombeL/2 + ErreurHitbox, ml->enti.posy); | 223 | + afficherLutin(bombe, ml->enti.posx - hitboxbombeL/2 + ErreurHitbox, ml->enti.posy - hitboxbombeH/2 + ErreurHitbox); |
221 | precedent = ml; | 224 | precedent = ml; |
222 | ml = ml->suivant; | 225 | ml = ml->suivant; |
223 | } | 226 | } |
Interactif/Interactif.h
@@ -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 SupprimerEntitesEnCollision(struct liste_entite**,int,int,struct liste_entite**,int,int); | 15 | +int SupprimerEntitesEnCollision(struct liste_entite**,int,int,struct liste_entite**,int,int); |
16 | 16 | ||
17 | char touche(); | 17 | char touche(); |
18 | 18 |
Main/init.c
@@ -7,11 +7,12 @@ | @@ -7,11 +7,12 @@ | ||
7 | 7 | ||
8 | #define TailleX 500 | 8 | #define TailleX 500 |
9 | #define TailleY 500 | 9 | #define TailleY 500 |
10 | +#define Sol 475 | ||
10 | #define ErreurHitbox 2 | 11 | #define ErreurHitbox 2 |
11 | #define JoueurX TailleX/2 | 12 | #define JoueurX TailleX/2 |
12 | #define JoueurY 9*TailleY/10 | 13 | #define JoueurY 9*TailleY/10 |
13 | 14 | ||
14 | -struct entite joueur = {JoueurX,JoueurY,-1}; | 15 | +struct entite joueur; |
15 | 16 | ||
16 | int canon=0; | 17 | int canon=0; |
17 | int missile=0; | 18 | int missile=0; |
@@ -19,8 +20,6 @@ int sbire=0; | @@ -19,8 +20,6 @@ int sbire=0; | ||
19 | int bouillie=0; | 20 | int bouillie=0; |
20 | int bombe=0; | 21 | int bombe=0; |
21 | 22 | ||
22 | - | ||
23 | - | ||
24 | char Nom[15]="Space Invader"; | 23 | char Nom[15]="Space Invader"; |
25 | char input='\0'; | 24 | char input='\0'; |
26 | 25 | ||
@@ -53,6 +52,14 @@ void initialiser() | @@ -53,6 +52,14 @@ void initialiser() | ||
53 | 52 | ||
54 | } | 53 | } |
55 | 54 | ||
55 | +void initialiserjoueur(struct entite* joueur) | ||
56 | +{ | ||
57 | + joueur->posx = JoueurX; | ||
58 | + joueur->posy = JoueurY; | ||
59 | + joueur->dropbombe = -1; | ||
60 | +} | ||
61 | + | ||
62 | + | ||
56 | 63 | ||
57 | char pagedemarrage() | 64 | char pagedemarrage() |
58 | { | 65 | { |
@@ -86,3 +93,46 @@ char pagedemarrage() | @@ -86,3 +93,46 @@ char pagedemarrage() | ||
86 | } | 93 | } |
87 | return input; | 94 | return input; |
88 | } | 95 | } |
96 | + | ||
97 | + | ||
98 | +void pagemort(int vie) | ||
99 | +{ | ||
100 | + static const char policeDefaut[]="/usr/share/fonts/truetype/dejavu/DejaVuSans.ttf"; | ||
101 | + int Largeur, Hauteur; | ||
102 | + | ||
103 | + rectanglePlein(0,0,TailleX,TailleY,COULEUR_NOIR); | ||
104 | + char mort[16]="Vous etes mort"; | ||
105 | + char nbr_vie[30]; | ||
106 | + sprintf(nbr_vie, "Nombre de vie restante : %d", vie); | ||
107 | + | ||
108 | + | ||
109 | + choisirPolice(policeDefaut,40); | ||
110 | + | ||
111 | + int M = lutinTexte(mort,COULEUR_ROUGE); | ||
112 | + tailleLutin(M,&Largeur,&Hauteur); | ||
113 | + afficherLutin(M,TailleX/2-Largeur/2,TailleY/4+Hauteur/2); | ||
114 | + | ||
115 | + choisirPolice(policeDefaut,20); | ||
116 | + | ||
117 | + int V = lutinTexte(nbr_vie,COULEUR_BLANC); | ||
118 | + tailleLutin(V,&Largeur,&Hauteur); | ||
119 | + afficherLutin(V,TailleX/2-Largeur/2,TailleY/2-Hauteur/2); | ||
120 | +} | ||
121 | + | ||
122 | + | ||
123 | +void pageGameOver() | ||
124 | +{ | ||
125 | + static const char policeDefaut[]="/usr/share/fonts/truetype/dejavu/DejaVuSans.ttf"; | ||
126 | + int Largeur, Hauteur; | ||
127 | + | ||
128 | + rectanglePlein(0,0,TailleX,TailleY,COULEUR_NOIR); | ||
129 | + char fin[11]="GAME OVER"; | ||
130 | + | ||
131 | + choisirPolice(policeDefaut,40); | ||
132 | + | ||
133 | + int F = lutinTexte(fin,COULEUR_ROUGE); | ||
134 | + tailleLutin(F,&Largeur,&Hauteur); | ||
135 | + afficherLutin(F,TailleX/2-Largeur/2,TailleY/2); | ||
136 | + | ||
137 | +} | ||
138 | + |
Main/init.h
@@ -23,4 +23,7 @@ extern int hitboxbombeL; | @@ -23,4 +23,7 @@ extern int hitboxbombeL; | ||
23 | extern int hitboxbombeH; | 23 | extern int hitboxbombeH; |
24 | 24 | ||
25 | void initialiser(); | 25 | void initialiser(); |
26 | +void initialiserjoueur(struct entite*); | ||
26 | char pagedemarrage(); | 27 | char pagedemarrage(); |
28 | +void pagemort(int); | ||
29 | +void pageGameOver(); |
Main/main.c
@@ -18,14 +18,14 @@ int main() | @@ -18,14 +18,14 @@ int main() | ||
18 | creerSurface(TailleX,TailleY,Nom); | 18 | creerSurface(TailleX,TailleY,Nom); |
19 | 19 | ||
20 | initialiser(); | 20 | initialiser(); |
21 | - | ||
22 | - | 21 | + initialiserjoueur(&joueur); |
22 | + | ||
23 | struct liste_entite *enemies = NULL; | 23 | struct liste_entite *enemies = NULL; |
24 | struct liste_entite *tires = NULL; | 24 | struct liste_entite *tires = NULL; |
25 | struct liste_entite *bombes = NULL; | 25 | struct liste_entite *bombes = NULL; |
26 | - | ||
27 | - char texte[15]="SCORE : "; | ||
28 | - int Score = lutinTexte(texte,COULEUR_BLANC); | 26 | + //joueur est dans une liste pour que je puisse utiliser des fonctions deja créé |
27 | + struct liste_entite* Ljoueur = NULL; | ||
28 | + ajout_tete(&Ljoueur,joueur); | ||
29 | 29 | ||
30 | 30 | ||
31 | LigneSbire(&enemies,8,3); | 31 | LigneSbire(&enemies,8,3); |
@@ -34,22 +34,46 @@ int main() | @@ -34,22 +34,46 @@ int main() | ||
34 | int compteur=0; | 34 | int compteur=0; |
35 | int DropAlea=0; | 35 | int DropAlea=0; |
36 | int CheckAlea=0; | 36 | int CheckAlea=0; |
37 | - | 37 | + int mort = 0; |
38 | + int nbr_vie = 3; | ||
39 | + | ||
38 | if (pagedemarrage() != 'j') | 40 | if (pagedemarrage() != 'j') |
39 | { | 41 | { |
40 | return 0; | 42 | return 0; |
41 | } | 43 | } |
42 | 44 | ||
43 | - | ||
44 | //Bouble principale | 45 | //Bouble principale |
45 | while(input!='m') | 46 | while(input!='m') |
46 | { | 47 | { |
48 | + if (mort == 1) | ||
49 | + { | ||
50 | + nbr_vie-=1; | ||
51 | + if (nbr_vie > 0) | ||
52 | + { | ||
53 | + pagemort(nbr_vie); | ||
54 | + printf("%d \n",joueur.posx); | ||
55 | + majSurface(); | ||
56 | + SDL_Delay(2000); | ||
57 | + mort = 0; | ||
58 | + } | ||
59 | + else | ||
60 | + { | ||
61 | + pageGameOver(); | ||
62 | + majSurface(); | ||
63 | + SDL_Delay(2000); | ||
64 | + return 0; | ||
65 | + } | ||
66 | + ajout_tete(&Ljoueur,joueur); | ||
67 | + tires = NULL; | ||
68 | + bombes = NULL; | ||
69 | + } | ||
70 | + | ||
47 | rectanglePlein(0,0,TailleX,TailleY,COULEUR_NOIR); | 71 | rectanglePlein(0,0,TailleX,TailleY,COULEUR_NOIR); |
48 | rectanglePlein(0,Sol,TailleX,2,COULEUR_VERT); | 72 | rectanglePlein(0,Sol,TailleX,2,COULEUR_VERT); |
49 | - afficherLutin(Score,0,Sol+ErreurHitbox); | ||
50 | - | ||
51 | - afficherLutin(canon,joueur.posx - hitboxcanonL/2 + ErreurHitbox,joueur.posy); | ||
52 | 73 | ||
74 | + afficherLutin(canon,Ljoueur->enti.posx - hitboxcanonL/2 + ErreurHitbox,Ljoueur->enti.posy); | ||
75 | + AfficherSbire(sbire,hitboxsbireL,hitboxsbireH,enemies); | ||
76 | + | ||
53 | if (DropAlea == 0) | 77 | if (DropAlea == 0) |
54 | { | 78 | { |
55 | DropAlea = rand() % 31 + 100; | 79 | DropAlea = rand() % 31 + 100; |
@@ -61,10 +85,8 @@ int main() | @@ -61,10 +85,8 @@ int main() | ||
61 | CheckAlea=0; | 85 | CheckAlea=0; |
62 | } | 86 | } |
63 | 87 | ||
64 | - AfficherSbire(sbire,hitboxsbireL,hitboxsbireH,enemies); | ||
65 | - | ||
66 | input = touche(); | 88 | input = touche(); |
67 | - action(&joueur,input,&tires); | 89 | + action(&Ljoueur->enti,input,&tires); |
68 | 90 | ||
69 | if (compteur==10) | 91 | if (compteur==10) |
70 | { | 92 | { |
@@ -73,13 +95,17 @@ int main() | @@ -73,13 +95,17 @@ int main() | ||
73 | } | 95 | } |
74 | 96 | ||
75 | DeplacementTire(missile,&tires); | 97 | DeplacementTire(missile,&tires); |
76 | - | ||
77 | DeplacementBombe(bombe,&bombes); | 98 | DeplacementBombe(bombe,&bombes); |
78 | 99 | ||
79 | SupprimerEntitesEnCollision(&tires,hitboxmissileL,hitboxmissileH,&enemies,hitboxsbireL,hitboxsbireH); | 100 | SupprimerEntitesEnCollision(&tires,hitboxmissileL,hitboxmissileH,&enemies,hitboxsbireL,hitboxsbireH); |
101 | + if (SupprimerEntitesEnCollision(&bombes,hitboxbombeL,hitboxbombeH,&Ljoueur,hitboxcanonL,hitboxcanonH) == 1) | ||
102 | + { | ||
103 | + mort = 1; | ||
104 | + majSurface(); | ||
105 | + SDL_Delay(200); | ||
106 | + } | ||
80 | 107 | ||
81 | majSurface(); | 108 | majSurface(); |
82 | - | ||
83 | SDL_Delay(20); | 109 | SDL_Delay(20); |
84 | 110 | ||
85 | compteur+=1; | 111 | compteur+=1; |