-
Notifications
You must be signed in to change notification settings - Fork 0
/
defconst.h
185 lines (150 loc) · 4.93 KB
/
defconst.h
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
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
// Déclaration des constantes
/**
* \def TAILLE_TABLEAU
* \brief La taille du tableau dans lequel le serpent va évoluer
*/
#define TAILLE_TABLEAU_X 81
#define TAILLE_TABLEAU_Y 41
/**
* \def TAILLE_SERPENT
* \brief La taille du serpent
* Elle ne changera pas pour le moment
*/
#define TAILLE_SERPENT 10
/**
* \def VITESSE_JEU
* \brief La vitesse à laquelle le jeu va avancer (en nanosecondes)
*/
#define VITESSE_JEU_INITIALE 200000
/**
* \def TOUCHE_ARRET
* \brief La touche sur laquelle appuyer pour arrêter le jeu
*/
#define TOUCHE_ARRET 'a'
/**
* \def CHAR_TETE
* \brief Le caractère qui correspond à la tête du serpent
*/
#define CHAR_TETE 'O'
/**
* \def CHAR_CORPS
* \brief Le caractère qui correspond au corps du serpent
*/
#define CHAR_CORPS 'X'
/**
* \def CHAR_OBSTACLE
* \brief Le caractère qui correspond aux obstacles à éviter
*/
#define CHAR_OBSTACLE '#'
/**
* \def CHAR_VIDE
* \brief Le caractère qui correspond aux espaces vides dans lesquels le serpent peut aller
*/
#define CHAR_VIDE ' '
/**
* \def CHAR_VIDE
* \brief Le caractère qui correspond aux espaces vides dans lesquels le serpent peut aller
*/
#define CHAR_POMME '6'
/**
* \def DIRECTION_INITIALE
* \brief La direction dans laquelle le serpent doit se déplacer au départ
*/
#define DIRECTION_INITIALE 'd'
/**
* \def TOUCHE_DROITE
* \brief La touche à appuyer pour aller vers la droite
*/
#define TOUCHE_DROITE 'd'
/**
* \def TOUCHE_GAUCHE
* \brief La touche à appuyer pour aller vers la gauche
*/
#define TOUCHE_GAUCHE 'q'
/**
* \def TOUCHE_HAUT
* \brief La touche à appuyer pour aller vers le haut
*/
#define TOUCHE_HAUT 'z'
/**
* \def TOUCHE_BAS
* \brief La touche à appuyer pour aller vers le bas
*/
#define TOUCHE_BAS 's'
/**
* \def X_DEBUT
* \brief La position horizontale à laquelle le serpent doit démarrer
*/
#define X_DEBUT 40
/**
* \def Y_DEBUT
* \brief La position horizontale à laquelle le serpent doit démarrer
*/
#define Y_DEBUT 20
/**
* \def DIRECTION_INITIALE
* \brief La direction dans laquelle le serpent doit se déplacer au début
*/
#define DIRECTION_INITIALE 'd'
/**
* \def NOMBRE_PAVES
* \brief Le nombre de pavés à génerer
*/
#define NOMBRE_PAVES 4
/**
* \def TAILLE_PAVE_X
* \brief La taille horizontale des pavés
*/
#define TAILLE_PAVE_X 5
/**
* \def TAILLE_PAVE_Y
* \brief La taille verticale des pavés
*/
#define TAILLE_PAVE_Y 5
#define TAILLE_MAX_SERPENT 20
#define ACCEL_SERPENT 15000
#define NB_POMMES 10
#define CHAR_BORDURE '#'
#define MOITIE_HAUTEUR_TABLEAU (TAILLE_TABLEAU_Y / 2)
#define MOITIE_LARGEUR_TABLEAU (TAILLE_TABLEAU_X / 2)
/************************************************
* *
* Définition des fonctions *
* *
************************************************/
// Déclaration des fonctions fournies
void gotoXY(int x, int y);
// Déclaration des fonctions demandées
void afficher(int x, int y, char c);
void effacer(int x, int y);
void effacerEcran();
int kbhit();
void enableEcho();
void disableEcho();
// Déclaration des fonctions demandées
void afficher(int x, int y, char c);
void effacer(int x, int y);
void effacerEcran();
int checkAKeyPress();
void genererSerpent(int positionsX[TAILLE_MAX_SERPENT], int positionsY[TAILLE_MAX_SERPENT], int x, int y);
void initPlateau();
void devInfo(int positionsX[20], int positionsY[20], char direction);
void dessinerPlateau();
void afficherSerpent(int positionsX[TAILLE_MAX_SERPENT], int positionsY[TAILLE_MAX_SERPENT]);
void effacerSerpent(int positionsX[TAILLE_MAX_SERPENT], int positionsY[TAILLE_MAX_SERPENT]);
void progresser(int positionsX[TAILLE_MAX_SERPENT], int positionsY[TAILLE_MAX_SERPENT], char direction, bool* detecCollision);
void serpentDansTab(int positionsX[TAILLE_MAX_SERPENT], int positionsY[TAILLE_MAX_SERPENT]);
void changerDirection(char* direction, int positionsX[TAILLE_MAX_SERPENT], int positionsY[TAILLE_MAX_SERPENT]);
int genererEntierDansBornes(int min, int max);
void genererPaves(int positionsX[TAILLE_MAX_SERPENT], int positionsY[TAILLE_MAX_SERPENT]);
void genererUnPave(int positionsX[TAILLE_MAX_SERPENT], int positionsY[TAILLE_MAX_SERPENT]);
void genererTrous();
void ajouterPomme(int indice);
void succesJeu();
void echecJeu();
void quitterJeu();
void detecterPomme(int* pommeX, int* pommeY);
char choisirDirection(int xTete, int yTete, char directionActuelle, int cibleX, int cibleY); // Fonction qui choisit la direction du serpent
int distanceCarree(int x1, int y1, int x2, int y2); // Fonction qui calcule la distance entre deux points
void determinerCible(int cible[2], int positionsX[TAILLE_MAX_SERPENT], int positionsY[TAILLE_MAX_SERPENT]);
typedef char t_plateau[TAILLE_TABLEAU_Y][TAILLE_TABLEAU_X];