Sokoban 1.1.2
Le fameux jeu Sokoban, poussez les boîtes !
Chargement...
Recherche...
Aucune correspondance
grid.h
Aller à la documentation de ce fichier.
1/*
2Game level data structures for Sokoban
3Copyright (C) 2022, 2023 Efe ERKEN
4
5This file is part of Sokoban
6
7Sokoban is free software: you can redistribute it and/or modify
8it under the terms of the GNU General Public License as published by
9the Free Software Foundation, either version 3 of the License, or
10(at your option) any later version.
11
12Sokoban is distributed in the hope that it will be useful,
13but WITHOUT ANY WARRANTY; without even the implied warranty of
14MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
15GNU General Public License for more details.
16
17You should have received a copy of the GNU General Public License
18along with Sokoban. If not, see <https://www.gnu.org/licenses/>.
19
20SPDX-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
66{
73};
74
83typedef struct Grid
84{
92
93// on déclare les pointeurs de fonctions pour pouvoir les utiliser
94// dans les fonctions dans grid.c et player.c
95extern void (*handle_init)();
96extern enum Event (*handle_event)();
97extern void (*handle_display)(grid *);
98extern void (*handle_quit)();
99
100grid *init_level(const char *file_path);
101
102grid *creer_level(int row, int column, int goals);
103
104void free_level(grid *G);
105
106void display(grid *G);
107
109
111
113
115
117
118void display_sdl2(grid *G);
119
120enum Event event();
121
122enum Event event_ncurses();
123
124enum Event event_sdl2();
125
126void 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
grid * creer_level(int row, int column, int goals)
Fonction qui alloue la grille du jeu.
Definition: grid.c:56
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
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.
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
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
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