Skip to content
Snippets Groups Projects
grid.h 2.86 KiB
Newer Older
#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
 */
  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
 */

Arnaud Albiez's avatar
Arnaud Albiez committed
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);