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 | 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 | 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 | 96 | SupprimerEntite(Liste2, enti2); |
97 | 97 | |
98 | 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 | 211 | |
209 | 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 | 216 | struct entite* a_supprimer = &ml->enti; |
214 | 217 | ml = ml->suivant; |
... | ... | @@ -217,7 +220,7 @@ void DeplacementBombe(int bombe, struct liste_entite** l) |
217 | 220 | else |
218 | 221 | { |
219 | 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 | 224 | precedent = ml; |
222 | 225 | ml = ml->suivant; |
223 | 226 | } | ... | ... |
Interactif/Interactif.h
... | ... | @@ -12,7 +12,7 @@ void Tirer(struct entite, struct liste_entite**); |
12 | 12 | |
13 | 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 | 17 | char touche(); |
18 | 18 | ... | ... |
Main/init.c
... | ... | @@ -7,11 +7,12 @@ |
7 | 7 | |
8 | 8 | #define TailleX 500 |
9 | 9 | #define TailleY 500 |
10 | +#define Sol 475 | |
10 | 11 | #define ErreurHitbox 2 |
11 | 12 | #define JoueurX TailleX/2 |
12 | 13 | #define JoueurY 9*TailleY/10 |
13 | 14 | |
14 | -struct entite joueur = {JoueurX,JoueurY,-1}; | |
15 | +struct entite joueur; | |
15 | 16 | |
16 | 17 | int canon=0; |
17 | 18 | int missile=0; |
... | ... | @@ -19,8 +20,6 @@ int sbire=0; |
19 | 20 | int bouillie=0; |
20 | 21 | int bombe=0; |
21 | 22 | |
22 | - | |
23 | - | |
24 | 23 | char Nom[15]="Space Invader"; |
25 | 24 | char input='\0'; |
26 | 25 | |
... | ... | @@ -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 | 64 | char pagedemarrage() |
58 | 65 | { |
... | ... | @@ -86,3 +93,46 @@ char pagedemarrage() |
86 | 93 | } |
87 | 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
Main/main.c
... | ... | @@ -18,14 +18,14 @@ int main() |
18 | 18 | creerSurface(TailleX,TailleY,Nom); |
19 | 19 | |
20 | 20 | initialiser(); |
21 | - | |
22 | - | |
21 | + initialiserjoueur(&joueur); | |
22 | + | |
23 | 23 | struct liste_entite *enemies = NULL; |
24 | 24 | struct liste_entite *tires = NULL; |
25 | 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 | 31 | LigneSbire(&enemies,8,3); |
... | ... | @@ -34,22 +34,46 @@ int main() |
34 | 34 | int compteur=0; |
35 | 35 | int DropAlea=0; |
36 | 36 | int CheckAlea=0; |
37 | - | |
37 | + int mort = 0; | |
38 | + int nbr_vie = 3; | |
39 | + | |
38 | 40 | if (pagedemarrage() != 'j') |
39 | 41 | { |
40 | 42 | return 0; |
41 | 43 | } |
42 | 44 | |
43 | - | |
44 | 45 | //Bouble principale |
45 | 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 | 71 | rectanglePlein(0,0,TailleX,TailleY,COULEUR_NOIR); |
48 | 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 | 77 | if (DropAlea == 0) |
54 | 78 | { |
55 | 79 | DropAlea = rand() % 31 + 100; |
... | ... | @@ -61,10 +85,8 @@ int main() |
61 | 85 | CheckAlea=0; |
62 | 86 | } |
63 | 87 | |
64 | - AfficherSbire(sbire,hitboxsbireL,hitboxsbireH,enemies); | |
65 | - | |
66 | 88 | input = touche(); |
67 | - action(&joueur,input,&tires); | |
89 | + action(&Ljoueur->enti,input,&tires); | |
68 | 90 | |
69 | 91 | if (compteur==10) |
70 | 92 | { |
... | ... | @@ -73,13 +95,17 @@ int main() |
73 | 95 | } |
74 | 96 | |
75 | 97 | DeplacementTire(missile,&tires); |
76 | - | |
77 | 98 | DeplacementBombe(bombe,&bombes); |
78 | 99 | |
79 | 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 | 108 | majSurface(); |
82 | - | |
83 | 109 | SDL_Delay(20); |
84 | 110 | |
85 | 111 | compteur+=1; | ... | ... |