Sokoban
1.1.3
Le fameux jeu Sokoban, poussez les boîtes !
|
Fichier header contenant les structures pour traiter le joueur et son mouvement. Plus de détails...
Aller au code source de ce fichier.
Structures de données | |
struct | Player |
Cette structure contient la position du joueur dans le niveau. Plus de détails... | |
Définitions de type | |
typedef struct Grid | grid |
typedef struct Player | player |
Cette structure contient la position du joueur dans le niveau. Plus de détails... | |
Énumérations | |
enum | Direction { LEFT = 'h' , BOTTOM = 'j' , TOP = 'k' , RIGHT = 'l' } |
Cette structure contient les directions possibles dans le jeu. Plus de détails... | |
Fonctions | |
void | move_player (grid *G, enum Direction D) |
Fonction qui bouge le joueur dans la direction voulue dans le niveau. Plus de détails... | |
void | move_player_error (grid *G) |
Fonction qui affiche un message d'erreur et quitte le jeu. Plus de détails... | |
Fichier header contenant les structures pour traiter le joueur et son mouvement.
Définition dans le fichier player.h.
Cette structure contient la position du joueur dans le niveau.
Cette structure a deux attributs pour stocker les coordonnées x et y du joueur
enum Direction |
Cette structure contient les directions possibles dans le jeu.
Cette structure indique une direction telle que les 4 possibles mais aussi quelle touche du clavier correspond à quelle direction. Elle est utile pour determiner le mouvement du joueur. Les touches pour controler le joueur peuvent être changées ici.
Valeurs énumérées | |
---|---|
LEFT | La direction gauche. |
BOTTOM | La direction basse. |
TOP | La direction haute. |
RIGHT | La direction droite. |
Fonction qui bouge le joueur dans la direction voulue dans le niveau.
[in,out] | G | Pointeur sur la structure du niveau pour lire les cases de celui-ci et les modifier |
[in] | D | Une direction entre le haut, le bas, la gauche et la droite |
NULL
et pointer sur la structure allouée Cette fonction prend en paramètre deux arguments tels qu'un pointeur vers la structure du niveau de jeu et une direction. Elle bouge le joueur dans la direction donnée si possible en mettant à jour les cases du niveau dans la structure. Elle suit aussi la trace des objectifs réussis du niveau en incrémentant et décrémentant en fonction du nombre de superpositions de boite et d'objectif. Si dans la direction voulue, il n'y a pas de mur il y a plusieurs possibilités. Si dans la direction il y a du vide ou un objectif, elle change la case dans cette direction par un joueur ou une superposition de joueur et d'objectif si la case cible est un objectif et elle change la case où était le joueur auparavant par du vide ou un objectif si la case était une superposition de joueur et d'objectif avant. Si dans la direction voulue il y a une boite, elle vérifie la deuxième case dans la direction. Si cette case est un mur, une boite ou une superposition de boite et d'objectif alors il y a rien à faire. Pourtant si cette case est du vide ou un objectif la fonction change cette case en une boite ou une superposition de boite et d'objectif en fonction de cette case, elle bouge le joueur dans la case où était la boite. Pour ce faire elle change l'ancien case de la boite par un joueur ou une superposition de joueur et d'objectif en fonction de l'ancien état de la boite. Finalement, l'anicen case du joueur est changé en du vide ou en un objectif en fonction de l'état ancien du joueur.
Définition à la ligne 65 du fichier player.c.
void move_player_error | ( | grid * | G | ) |
Fonction qui affiche un message d'erreur et quitte le jeu.
[in,out] | G | Pointeur sur une structure grid qui est le niveau de jeu |
handle_init()
auparavant Cette fonction execute la routine de fin, affiche un message d'erreur pour le cas où le jeu rencontre un caractère inconnu dans le niveau et quitte le jeu immédiatement.
Définition à la ligne 169 du fichier player.c.