54 printf(
"Size of structure is %d\n", (
int)
sizeof(*level));
55 printf(
"Number of lines is %d\n", level->
row_number);
57 printf(
"Grid block at coordinates (0,0) %c\n", level->
game_grid[0][0]);
58 printf(
"Grid block at coordinates (1,3) %c\n", level->
game_grid[3][1]);
69 printf(
"Number of lines is: %d\n", level->
row_number);
71 printf(
"Grid block at coordinates (9,5): %c\n", level->
game_grid[5][9]);
72 printf(
"Grid block at coordinates (7,2): %c\n", level->
game_grid[2][7]);
73 printf(
"Player coordinates at start: (%d, %d)\n", level->
player.
x, level->
player.
y);
93 while (quitCar !=
'q')
95 printf(
"Appuyez sur \"q\" pour quitter\n");
96 printf(
"Appuyez sur \"h, j, k, l\" pour vous déplacer\n\n");
98 printf(
"Votre choix : ");
99 scanf(
" %c", &quitCar);
100 if (quitCar ==
'h' || quitCar ==
'j' || quitCar ==
'k' || quitCar ==
'l')
144 SDL_SetRenderDrawColor(context.
renderer, 126, 126, 126, 255);
146 for (
int i = 0; i < 25; i++)
148 SDL_SetRenderDrawColor(context.
renderer, i * 10, 0, 0, 255);
149 SDL_Rect rect = {.x = i * 50, .y = i * 50, .w = 50, .h = 50};
150 SDL_RenderFillRect(context.
renderer, &rect);
152 SDL_RenderPresent(context.
renderer);
157 while (SDL_PollEvent(&
event))
159 if (
event.type == SDL_QUIT)
180 if (ev.type == SDL_QUIT)
197 printf(
"L'évenement déclanché : %d\n", ev);
215 printw(
"L'évenement déclanché : %d\n", ev);
233 printf(
"L'évenement déclanché : %d\n", ev);
242 int main(
int argc,
char *argv[])
247 printf(
"Trop peu d'arguments\n");
251 if (strcmp(argv[1],
"--sdl2") == 0)
255 else if (strcmp(argv[1],
"--console") == 0)
261 printf(
"Option inconnue\n");
266 printf(
"Trop d'arguments\n");
void free_level(grid *G)
Fonction pour désallouer la structure du jeu.
enum Event event()
Fonction qui renvoie un événement en fonction du clavier.
void display_sdl2(grid *G)
Fonction qui affiche le niveau en paramètre dans une fenêtre avec SDL2.
grid * creer_level(int row, int column, int goals)
Fonction qui alloue la grille du jeu.
enum Event event_sdl2()
Fonction qui renvoie un événement en fonction du clavier en utilisant SDL2.
void display(grid *G)
Fonction qui affiche le niveau chargé dans le terminal.
char display_ncurses_input()
Fonction lit une touche au clavier avec ncurses et la renvoie.
void display_ncurses_init()
Fonction qui initialise la bibliothèque d'affichage ncurses.
void display_ncurses_end()
Fonction qui termine l'affichage ncurses.
void display_ncurses_input_error()
Fonction qui affiche un message d'erreur.
void display_ncurses_draw(grid *G)
Fonction qui affiche le niveau en paramètre dans le terminal avec ncurses.
grid * init_level(const char *file_path)
Fonction qui charge le niveau de jeu depuis un fichier dans la structure grid.
enum Event event_ncurses()
Fonction qui renvoie un événement en fonction du clavier en utilisant <ncurses.h>
Fichier header contenant les structures de données pour traiter les niveaux du jeu sokoban.
Event
Structure indiquant les différents événements dans le jeu.
@ EVENT_QUIT
Quitter le jeu.
void move_player(grid *G, enum Direction D)
Fonction qui bouge le joueur dans la direction voulue dans le niveau.
Fichier header contenant les structures pour traiter le joueur et son mouvement.
void sdl_quit()
Fonction qui referme la bibliothèque SDL2.
void sdl_init()
Fonction qui lance SDL2 et crée une fenêtre.
Fichier header contenant la structure pour gérer SDL2 pour le jeu.
Cette structure contient les informations concernant le niveau du jeu et son contenu.
enum CaseType ** game_grid
Tableau contenant les entités présents dans le jeu.
player player
Structure pour stocker la position du joueur.
int column_number
Nombre de colonnes de game_grid.
int row_number
Nombre de lignes de game_grid.
int y
Coordonnée y du joueur.
int x
Coordonnée x du joueur.
SDL_Renderer * renderer
Pointeur sur le renderer.
int main(int argc, char *argv[])