From f5270472d685a93fa78666f959c42fa5672144d0 Mon Sep 17 00:00:00 2001 From: StivenAigle <saigle@unistra.fr> Date: Sat, 5 Feb 2022 22:39:51 +0100 Subject: [PATCH] Include file reading for sokoban TP --- README.md | 3 ++- grid.c | 32 ++++++++++++++++++++++++++++++++ grid.h | 22 ++++++++++++++++++++++ level1.txt | 12 ++++++++++++ main.c | 17 +++++++++++++++++ 5 files changed, 85 insertions(+), 1 deletion(-) create mode 100644 grid.c create mode 100644 grid.h create mode 100644 level1.txt create mode 100644 main.c diff --git a/README.md b/README.md index f6def10..df9e7f0 100644 --- a/README.md +++ b/README.md @@ -1,2 +1,3 @@ # Sokoban -Ce dépôt contient le code du sokoban qui sera demandé en tp pour les étudiants de L2S3 à l'ufr +Vous trouverez ici les fichiers de base pour le TP noté concernant le jeu du Sokoban +Les consignes et l'énoncé se trouve à cette address [TP Sokoban](https://techdevprintemps2022.pages.unistra.fr/TP_TechDevEnonce/) diff --git a/grid.c b/grid.c new file mode 100644 index 0000000..3ca3833 --- /dev/null +++ b/grid.c @@ -0,0 +1,32 @@ +#include "grid.h" +#include <stdlib.h> +#include <stdio.h> + +void init_level(const char* file_path){ + // ouverture du fichier en mode lecture + FILE* file = fopen(file_path, "r"); + if(!file){ + fprintf(stderr, "Error %s not found", file_path); + exit(-1); + } + char line[100] = {0}; + int number_column = 0; // nombre de colonne + int number_row = 0; /// nombre de ligne + int number_goals = 0; + // on lit la première ligne du fichier + fgets(line, 100, file); + sscanf(line, "%d %d %d", &number_column, &number_row, &number_goals); + int current_row = 0; + int current_goal = 0; + // On lit le fichier ligne par ligne jusqu'à la fin du fichier + while(fgets(line, 100, file) != NULL){ + char* buffer = line; + int current_column = 0; + while(*buffer && *buffer != '\n'){ + current_column += 1; + } + current_row += 1; + } + // fermeture du fichier + fclose(file); +} diff --git a/grid.h b/grid.h new file mode 100644 index 0000000..649addd --- /dev/null +++ b/grid.h @@ -0,0 +1,22 @@ +#ifndef GRID_HEADER +#define GRID_HEADER +enum CaseType{ + WALL = '#', + BOX = '$', + PLAYER = '@', + GOAL = '.', + NONE = ' ' +}; +/** + * @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 +}; +void init_level(const char* file_path); + +#endif diff --git a/level1.txt b/level1.txt new file mode 100644 index 0000000..69f90c1 --- /dev/null +++ b/level1.txt @@ -0,0 +1,12 @@ +26 11 2 +########################## +# # +# $ ########## # +# # # +# # # +# . # @ $ # +# # # +# # # +# $ . # +# # +########################## diff --git a/main.c b/main.c new file mode 100644 index 0000000..115bb67 --- /dev/null +++ b/main.c @@ -0,0 +1,17 @@ +#include <stdio.h> +#include "grid.h" +#include <stdbool.h> +int main(void){ + + bool run = true; + while(run){ + char entry = fgetc(stdin); + switch(entry){ + case 'q' :{ + run = false; + break; + } + } + } +} + -- GitLab