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