diff --git a/README.md b/README.md index f6def1084e072e0954c31ea9205d2adcb7788098..df9e7f0851adf8e0e66e5117146b39b8549e5626 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 0000000000000000000000000000000000000000..3ca3833d41c1706809236cfa8dcf577b344e9c00 --- /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 0000000000000000000000000000000000000000..649addda12948965abd5fe319fcd49b785919b66 --- /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 0000000000000000000000000000000000000000..69f90c1da3061fba0ae1a637cfccf05d9140c913 --- /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 0000000000000000000000000000000000000000..115bb67db044686bbc0ca7f894d79216e2d8c8bd --- /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; + } + } + } +} +