-
Notifications
You must be signed in to change notification settings - Fork 0
/
main.c
133 lines (89 loc) · 3.71 KB
/
main.c
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#include <conio.h>
#include <windows.h>
#include <math.h>
#include "banquise.h"
#include "joueur.h"
#include "objet.h"
/**************** TOUTES LES FONCTIONS DU JEU ONT ETE FAITE PAR LES DEUX MEMBRES DU BINOME "ASSOGBA ET ASMA" ****************/
int JoueursDispo; // le nombre de joueur
int random; // variable pour spawnGlacon par hazard
void initGame(){
BANQUISE banquise = initBanquise();
int nbr;
printf("saisir le nombre de joueurs\n");
scanf("%d",&nbr);
JOUEUR* joueur = initJoueurs(nbr);
for(int i = 0 ; i < nbr ; i++) // positionner les joueurs
banquise[1][i+1].jou = &joueur[i];
system("cls"); // clear la console pour afficher la banquise
/******** spawn volontairement ce qu'on veut pour le test *********/
/*
banquise[4][1].element = glacon;
banquise[4][3].element = glacon;
banquise[6][2].element = glacon;
banquise[4][2].element = ressort;
banquise[2][14].element = rocher;
*/
legende(); // afficher la pallette de couleurs pour se retrouver dans le jeu
char touche = '0'; // variable pour le deplacement du joueur ( Z , Q , S, D )
int win = 0; // variable pour savoir si il y a un gagnant
int ind = 0; // variable pour faire jouer a l'indice " ind "
JoueursDispo = nbr;
while(touche != '\033' && win != 1 && JoueursDispo > 0){ // 033 = ECHAP , win !=1 => pas encore de gagnant , JoueursDispo > 0 => au moin 1 joueur encore vivant
// 1 chance sur 20 pour faire apparaitre un glacon
random = rand() % 20;
if (random == 1)
spawnGlacon(banquise);
fonteBanquise(banquise);
afficheBanquise(banquise);
if(joueur[ind].etat == 0 || joueur[ind].etat == -1){ // si le joueur est mort ou piégé
if(joueur[ind].etat == -1) // seulement si le joueur est piégé
joueur[ind].etat = 1; // libérer le joueur pour le tour suivant
ind ++; // passer au joueur suivant
ind %= nbr; // modulo le nombre de joueurs, pour retourner au 1er joueur
}
else{
fflush(stdin); // vider le buffer de getch() pour eviter de saturer la memoire
touche = getch(); // prendre la direction du joueur
switch(touche){ // en fonction de la touche, executer le mouvement du joueur
case 'q':
win = TryMove(banquise, &joueur[ind] , 0, -1);
break;
case 'd':
win = TryMove(banquise, &joueur[ind], 0, 1);
break;
case 'z':
win = TryMove(banquise, &joueur[ind], -1, 0);
break;
case 's':
win = TryMove(banquise, &joueur[ind], 1, 0);
break;
default:
break;
}
ind++; // on passe au joueur suivant
ind %= nbr; // modulo le nombre de joueurs, pour retourner au 1er joueur
}
}
afficheBanquise(banquise);
if(JoueursDispo == 0)
printf("\n\n\n-------------- TOUT LE MONDE EST MORT ): --------------\a");
classement(joueur, nbr);
}
int main(){
// faire appel a la fonction srand()
srand(time(NULL));
// lancer le jeu
initGame();
// proposer de rejouer
int choix;
printf("\nRefaire la partie ??? (tappez 0 si non)\n");
scanf("%d",&choix);
if(choix == 0)
return 0;
else
return main();
}