Sokoban  1.1.3
Le fameux jeu Sokoban, poussez les boîtes !
Fonctions
Référence du fichier player.c

Fichier source contenant la fonction pour traiter le mouvement du joueur. Plus de détails...

#include <stdio.h>
#include <stdlib.h>
#include "player.h"
#include "grid.h"
Graphe des dépendances par inclusion de player.c:

Aller au code source de ce fichier.

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...
 

Description détaillée

Fichier source contenant la fonction pour traiter le mouvement du joueur.

Auteur
Efe ERKEN (efe.e.nosp@m.rken.nosp@m.@etu..nosp@m.unis.nosp@m.tra.f.nosp@m.r)
Version
0.4
Date
2023-01-24

Définition dans le fichier player.c.

Documentation des fonctions

◆ move_player()

void move_player ( grid G,
enum Direction  D 
)

Fonction qui bouge le joueur dans la direction voulue dans le niveau.

Paramètres
[in,out]GPointeur sur la structure du niveau pour lire les cases de celui-ci et les modifier
[in]DUne direction entre le haut, le bas, la gauche et la droite
Précondition
G doit être non NULL et pointer sur la structure allouée
Postcondition
Modification de la structure pointée par G

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.

Voici le graphe d'appel pour cette fonction :

◆ move_player_error()

void move_player_error ( grid G)

Fonction qui affiche un message d'erreur et quitte le jeu.

Paramètres
[in,out]GPointeur sur une structure grid qui est le niveau de jeu
Précondition
Avoir initialisé la structure de jeu G
Avoir appelé handle_init() auparavant
Postcondition
-

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.

Voici le graphe d'appel pour cette fonction :