Sokoban  1.1.3
Le fameux jeu Sokoban, poussez les boîtes !
grid.h
Aller à la documentation de ce fichier.
1 /*
2 Game level data structures for Sokoban
3 Copyright (C) 2022, 2023 Efe ERKEN
4 
5 This file is part of Sokoban
6 
7 Sokoban is free software: you can redistribute it and/or modify
8 it under the terms of the GNU General Public License as published by
9 the Free Software Foundation, either version 3 of the License, or
10 (at your option) any later version.
11 
12 Sokoban is distributed in the hope that it will be useful,
13 but WITHOUT ANY WARRANTY; without even the implied warranty of
14 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
15 GNU General Public License for more details.
16 
17 You should have received a copy of the GNU General Public License
18 along with Sokoban. If not, see <https://www.gnu.org/licenses/>.
19 
20 SPDX-License-Identifier: GPL-3.0-or-later
21 */
22 
23 #ifndef GRID_HEADER
24 #define GRID_HEADER
25 
37 #include "player.h"
38 
48 {
49  WALL = '#',
50  BOX = '$',
51  PLAYER = '@',
52  GOAL = '.',
53  NONE = ' ',
54  BOX_GOAL = '*',
55  PLAYER_GOAL = '+'
56 };
57 
65 enum Event
66 {
72  EVENT_NONE
73 };
74 
83 typedef struct Grid
84 {
87  int row_number;
91 } grid;
92 
93 // on déclare les pointeurs de fonctions pour pouvoir les utiliser
94 // dans les fonctions dans grid.c et player.c
95 extern void (*handle_init)();
96 extern enum Event (*handle_event)();
97 extern void (*handle_display)(grid *);
98 extern void (*handle_quit)();
99 
100 grid *init_level(const char *file_path);
101 
102 grid *creer_level(int row, int column, int goals);
103 
104 void free_level(grid *G);
105 
106 void display(grid *G);
107 
108 void display_ncurses_init();
109 
110 void display_ncurses_draw(grid *G);
111 
112 char display_ncurses_input();
113 
115 
116 void display_ncurses_end();
117 
118 void display_sdl2(grid *G);
119 
120 enum Event event();
121 
122 enum Event event_ncurses();
123 
124 enum Event event_sdl2();
125 
126 void exit_routine(grid* G);
127 
128 #endif
void free_level(grid *G)
Fonction pour désallouer la structure du jeu.
Definition: grid.c:105
void exit_routine(grid *G)
Fonction qui s'occupe des routines de fermeture du programme.
Definition: grid.c:598
enum Event event()
Fonction qui renvoie un événement en fonction du clavier.
Definition: grid.c:440
void display_sdl2(grid *G)
Fonction qui affiche le niveau en paramètre dans une fenêtre avec SDL2.
Definition: grid.c:365
grid * creer_level(int row, int column, int goals)
Fonction qui alloue la grille du jeu.
Definition: grid.c:56
enum Event event_sdl2()
Fonction qui renvoie un événement en fonction du clavier en utilisant SDL2.
Definition: grid.c:540
void display(grid *G)
Fonction qui affiche le niveau chargé dans le terminal.
Definition: grid.c:201
CaseType
Structure indiquant quel caractère correspond à quel élément du niveau.
Definition: grid.h:48
@ PLAYER_GOAL
Superposition d'un joueur et d'un objectif.
Definition: grid.h:55
@ BOX
Une boîte.
Definition: grid.h:50
@ GOAL
Les objectifs.
Definition: grid.h:52
@ BOX_GOAL
Superposition d'une boîte et d'un objectif.
Definition: grid.h:54
@ NONE
Le vide.
Definition: grid.h:53
@ PLAYER
Le joueur.
Definition: grid.h:51
@ WALL
Un mur.
Definition: grid.h:49
enum Event(* handle_event)()
Fonction d'évènement de <ncurses.h> ou SDL2.
Definition: main.c:46
Event
Structure indiquant les différents événements dans le jeu.
Definition: grid.h:66
@ EVENT_RIGHT
Bouger le jouer vers la droite.
Definition: grid.h:71
@ EVENT_DOWN
Bouger le joueur vers le bas.
Definition: grid.h:69
@ EVENT_LEFT
Bouger le joueur vers la gauche.
Definition: grid.h:68
@ EVENT_NONE
Tout autre événement qui n'est pas géré dans le jeu.
Definition: grid.h:72
@ EVENT_QUIT
Quitter le jeu.
Definition: grid.h:67
@ EVENT_UP
Bouger le joueur vers le haut.
Definition: grid.h:70
char display_ncurses_input()
Fonction lit une touche au clavier avec ncurses et la renvoie.
Definition: grid.c:300
struct Grid grid
Cette structure contient les informations concernant le niveau du jeu et son contenu.
void display_ncurses_init()
Fonction qui initialise la bibliothèque d'affichage ncurses.
Definition: grid.c:224
void(* handle_display)(grid *)
Fonction d'affichage de <ncurses.h> ou SDL2.
Definition: main.c:47
void(* handle_init)()
Fonction d'initialisation de <ncurses.h> ou SDL2.
Definition: main.c:45
void display_ncurses_end()
Fonction qui termine l'affichage ncurses.
Definition: grid.c:343
void display_ncurses_input_error()
Fonction qui affiche un message d'erreur.
Definition: grid.c:320
void display_ncurses_draw(grid *G)
Fonction qui affiche le niveau en paramètre dans le terminal avec ncurses.
Definition: grid.c:249
void(* handle_quit)()
Fonction de fermeture de <ncurses.h> ou SDL2.
Definition: main.c:48
grid * init_level(const char *file_path)
Fonction qui charge le niveau de jeu depuis un fichier dans la structure grid.
Definition: grid.c:133
enum Event event_ncurses()
Fonction qui renvoie un événement en fonction du clavier en utilisant <ncurses.h>
Definition: grid.c:490
Fichier header contenant les structures pour traiter le joueur et son mouvement.
Cette structure contient les informations concernant le niveau du jeu et son contenu.
Definition: grid.h:84
enum CaseType ** game_grid
Tableau contenant les entités présents dans le jeu.
Definition: grid.h:85
player player
Structure pour stocker la position du joueur.
Definition: grid.h:90
int column_number
Nombre de colonnes de game_grid.
Definition: grid.h:86
int row_number
Nombre de lignes de game_grid.
Definition: grid.h:87
int goal_number
Nombre d'objectifs de game_grid.
Definition: grid.h:88
int box_over_goal_number
Nombre d'objectifs réussi de game_grid.
Definition: grid.h:89
Cette structure contient la position du joueur dans le niveau.
Definition: player.h:46