84 }
else if (target ==
BOX) {
85 int box_target_row = target_row + (target_row - G->
player.
y);
86 int box_target_column = target_column + (target_column - G->
player.
x);
88 if (box_target ==
WALL || box_target ==
BOX || box_target ==
BOX_GOAL) {
90 }
else if (box_target ==
GOAL) {
99 }
else if (box_target ==
NONE) {
111 int box_target_row = target_row + (target_row - G->
player.
y);
112 int box_target_column = target_column + (target_column - G->
player.
x);
114 if (box_target ==
WALL || box_target ==
BOX || box_target ==
BOX_GOAL) {
116 }
else if (box_target ==
GOAL) {
124 }
else if (box_target ==
NONE) {
136 }
else if (target ==
GOAL) {
143 }
else if (target ==
NONE) {
171 fprintf(stderr,
"Error, this level map has features unmanaged by the game\n");
void exit_routine(grid *G)
Fonction qui s'occupe des routines de fermeture du programme.
Fichier header contenant les structures de données pour traiter les niveaux du jeu sokoban.
CaseType
Structure indiquant quel caractère correspond à quel élément du niveau.
@ PLAYER_GOAL
Superposition d'un joueur et d'un objectif.
@ BOX_GOAL
Superposition d'une boîte et d'un objectif.
void move_player(grid *G, enum Direction D)
Fonction qui bouge le joueur dans la direction voulue dans le niveau.
void move_player_error(grid *G)
Fonction qui affiche un message d'erreur et quitte le jeu.
Fichier header contenant les structures pour traiter le joueur et son mouvement.
Direction
Cette structure contient les directions possibles dans le jeu.
@ BOTTOM
La direction basse.
@ LEFT
La direction gauche.
@ RIGHT
La direction droite.
Cette structure contient les informations concernant le niveau du jeu et son contenu.
enum CaseType ** game_grid
Tableau contenant les entités présents dans le jeu.
player player
Structure pour stocker la position du joueur.
int box_over_goal_number
Nombre d'objectifs réussi de game_grid.
Cette structure contient la position du joueur dans le niveau.
int y
Coordonnée y du joueur.
int x
Coordonnée x du joueur.