Commit 4d73f71eb18f55dd9ab02cb1f1e895e0ae91ab98

Authored by Martin CHAUVELIERE
1 parent d132aafe

Principal du jeu terminé, beaucoup d'optimisations à venir

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
@@ -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 +
@@ -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();
@@ -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;