#ifndef GRID_HEADER #define GRID_HEADER #include "player.h" /** Liste des element du niveau */ enum CaseType { WALL = '#', BOX = '$', PLAYER = '@', GOAL = '.', NONE = ' ' }; /** * @struct Goal grid.h * @brief Cette structure contient des piont de Goal */ struct Goal { int col, row;///< Position colone et ligne }; /** * @struct Grid grid.h * @brief Cette structure contient les informations * concernant la grille du jeu et son contenu */ struct Grid { enum CaseType *game_grid; ///< Tableau contenant les entités présents dans le jeu int column_number; ///< Nombre de colonne de game_grid int row_number; ///< Nomber de ligne de game_grid struct Player *position; ///< Positioin du joueur struct Goal *tabGoal; ///< Liste des but int number_goal; ///< nombre de goal }; /** Trouve l'indice a partire d'une coordonnée * revoye un int * * @param grid la struct grid pour recuperer la taille total du tableau * @param col position colonne * @param row position ligne */ int coordonner_vers_indice(struct Grid *grid, int col, int row); /** Initialise un grid templie de NONE * * @param widht Hauteur du tableau * @param height Largueur du tableau */ enum CaseType *init_grid(int width, int height); /** Initialise les coordonner du player en 0, 0 * */ struct Player *init_player(); /** Initialise l'emsemble de la structure grid * * @param widht Hauteur du tableau * @param height Largueur du tableau */ struct Grid *new_grid(int width, int height); /** Initialise dans la struct grid un niveau demander * * @param file_path un fichier .txt avec un niveau du sokoban dedans */ struct Grid *init_level(const char *file_path); /** Cherche un element de la grid * * @param grid struct grid pour chercher dans la grid * @param col l'emplacement colone de la donnée demander * @param row l'emplacement ligne de la donnée demander */ enum CaseType get_grid(struct Grid *grid, int col, int row); /** Cherche si la coordonner donner et un goal * renovoye -1 si il a pas de goals a l'emplacement demander sinon renvoye 1 * * @param grid struct grid pour chercher dans la grid * @param col l'emplacement colone * @param row l'emplacement ligne */ int get_goal(struct Grid *grid, int col, int row); /** Affiche la grid qui se trouvent dans la struct grid * * @param grid struct grid */ void Affichage_grid(struct Grid *grid); /** Cherche un element de la grid * * @param grid struct grid pour chercher dans la grid * @param col l'emplacement colone de la nouvelle valeur * @param row l'emplacement ligne de la nouvelle valeur * @param new_valeur nouvelle valeur a l'emplacement demander */ void change_cell_grid(struct Grid *grid, int col, int row, enum CaseType new_valeur); /** Libere tout les donner qui se trouve dans la structure * * @param grid struct grid */ void free_grid(struct Grid *grid); #endif