63         fprintf(stderr, 
"Error game structure alloc failed\n");
 
   71         fprintf(stderr, 
"Error game_grid row alloc failed\n");
 
   75     for (
int i = 0; i < row; i++)
 
   81             fprintf(stderr, 
"Error game_grid column alloc failed\n");
 
  136     FILE *file = fopen(file_path, 
"r");
 
  140         fprintf(stderr, 
"Error %s not found\n", file_path);
 
  143     char line[100] = {0};  
 
  144     int number_column = 0; 
 
  146     int number_goals = 0;  
 
  148     fgets(line, 100, file);
 
  150     sscanf(line, 
"%d %d %d", &number_column, &number_row, &number_goals);
 
  156     int current_goal = 0; 
 
  158     while (fgets(line, 100, file) != NULL)
 
  161         int current_column = 0; 
 
  163         while (*buffer && *buffer != 
'\n')
 
  166             level->
game_grid[current_row][current_column] = *buffer;
 
  170                 level->
player.
x = current_column;
 
  254     mvprintw(0, 0, 
"Appuyez sur \"q\" pour quitter");
 
  255     mvprintw(1, 0, 
"Appuyez sur \"h, j, k, l\" pour vous déplacer");
 
  258     getmaxyx(stdscr, maxY, maxX);
 
  264     for (
int row = 0, cursorY = centerY; row < G->
row_number; row++, cursorY++)
 
  266         for (
int column = 0, cursorX = centerX; column < G->
column_number; column++, cursorX++)
 
  268             mvprintw(cursorY, cursorX, 
"%c", G->
game_grid[row][column]);
 
  303     nodelay(stdscr, TRUE);
 
  304     while ((getch()) != ERR);
 
  305     nodelay(stdscr, FALSE);
 
  307     return (
char)getch();
 
  325     mvprintw(0, 0, 
"---> Cette touche n'a pas de fonctionnalité");
 
  368     SDL_SetRenderDrawColor(context.
renderer, 130, 125, 85, 255);
 
  382             switch (current_case)
 
  386                 SDL_SetRenderDrawColor(context.
renderer, 130, 125, 85, 255);
 
  390                 SDL_SetRenderDrawColor(context.
renderer, 180, 135, 85, 255);
 
  394                 SDL_SetRenderDrawColor(context.
renderer, 100, 115, 130, 255);
 
  398                 SDL_SetRenderDrawColor(context.
renderer, 155, 150, 120, 255);
 
  402                 SDL_SetRenderDrawColor(context.
renderer, 220, 215, 180, 255);
 
  406                 SDL_SetRenderDrawColor(context.
renderer, 95, 60, 25, 255);
 
  410                 SDL_SetRenderDrawColor(context.
renderer, 50, 65, 80, 255);
 
  414                 SDL_SetRenderDrawColor(context.
renderer, 255, 0, 0, 255);
 
  417             SDL_Rect rect = {.x = column * squareWidth, .y = row * squareHeight, .w = squareWidth, .h = squareHeight};
 
  419             SDL_RenderFillRect(context.
renderer, &rect);
 
  423     SDL_RenderPresent(context.
renderer);
 
  444     printf(
"Entrez la direction voulu : ");
 
  446     char entry = (char)fgetc(stdin);
 
  448     while ((fgetc(stdin)) != 
'\n');
 
  543     SDL_Event scan_event;
 
  545     SDL_WaitEvent(&scan_event);
 
  547     if (scan_event.type == SDL_QUIT)
 
  551     else if (scan_event.type == SDL_KEYDOWN)
 
  553         switch (scan_event.key.keysym.sym)
 
void free_level(grid *G)
Fonction pour désallouer la structure du jeu.
 
void exit_routine(grid *G)
Fonction qui s'occupe des routines de fermeture du programme.
 
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.
 
CaseType
Structure indiquant quel caractère correspond à quel élément du niveau.
 
@ PLAYER_GOAL
Superposition d'un joueur et d'un objectif.
 
@ BOX_GOAL
Superposition d'une boîte et d'un objectif.
 
Event
Structure indiquant les différents événements dans le jeu.
 
@ EVENT_RIGHT
Bouger le jouer vers la droite.
 
@ EVENT_DOWN
Bouger le joueur vers le bas.
 
@ EVENT_LEFT
Bouger le joueur vers la gauche.
 
@ EVENT_NONE
Tout autre événement qui n'est pas géré dans le jeu.
 
@ EVENT_QUIT
Quitter le jeu.
 
@ EVENT_UP
Bouger le joueur vers le haut.
 
void(* handle_quit)()
Fonction de fermeture de <ncurses.h> ou SDL2.
 
Fichier header contenant les structures pour traiter le joueur et son mouvement.
 
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 goal_number
Nombre d'objectifs de game_grid.
 
int box_over_goal_number
Nombre d'objectifs réussi 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 width
Largeur de la fenêtre.
 
int height
Hauteur de la fenêtre.