From 906425d40ebc5896a55923628e89655bc79947bc Mon Sep 17 00:00:00 2001
From: belkhiritaha <belkhiri.taha53@gmail.com>
Date: Tue, 21 Jun 2022 13:47:18 +0200
Subject: [PATCH] fin detection etat stable / nouvelle methode pour la
 detection des cycles

---
 travail_individuel/Belkhiri/GameOfLife/run    | Bin 23888 -> 24000 bytes
 .../Belkhiri/GameOfLife/src/map.c             |  22 -----------------
 .../Belkhiri/GameOfLife/src/map.h             |   1 -
 .../Belkhiri/GameOfLife/src/render.c          |  23 ++++++++++--------
 .../Belkhiri/GameOfLife/src/utility.c         |   9 ++-----
 .../Belkhiri/GameOfLife/src/utility.h         |   1 +
 6 files changed, 16 insertions(+), 40 deletions(-)

diff --git a/travail_individuel/Belkhiri/GameOfLife/run b/travail_individuel/Belkhiri/GameOfLife/run
index 13a17de9a1ad72b1deca8dfa33f07eed9336333e..af69540990706f8de4044047d08508fde45a9b9b 100755
GIT binary patch
literal 24000
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
C;I5tk

literal 23888
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

diff --git a/travail_individuel/Belkhiri/GameOfLife/src/map.c b/travail_individuel/Belkhiri/GameOfLife/src/map.c
index dbceb88..e49cf5f 100644
--- a/travail_individuel/Belkhiri/GameOfLife/src/map.c
+++ b/travail_individuel/Belkhiri/GameOfLife/src/map.c
@@ -64,26 +64,4 @@ void addMapToList(int **map)
 {
     mapList[mapListSize] = map;
     mapListSize++;
-}
-
-void checkForCycle()
-{
-    for (int i = 0; i < mapListSize; i++)
-    {
-        int cycle = 1;
-        int j = 0;
-        while (cycle && j < MAPSIZE)
-        {
-            int k = 0;
-            while (cycle && k < MAPSIZE)
-            {
-                if (mapList[i][j][k] != map[j][k])
-                {
-                    cycle = 0;
-                }
-                k++;
-            }
-            j++;
-        }
-    }
 }
\ No newline at end of file
diff --git a/travail_individuel/Belkhiri/GameOfLife/src/map.h b/travail_individuel/Belkhiri/GameOfLife/src/map.h
index 3886080..cb95414 100644
--- a/travail_individuel/Belkhiri/GameOfLife/src/map.h
+++ b/travail_individuel/Belkhiri/GameOfLife/src/map.h
@@ -11,7 +11,6 @@ extern int mapListSize;
 void printMap();
 void initMap();
 void writeMap(char* filename);
-void checkForCycle();
 void addMapToList(int ** map);
 int ** saveMapState();
 
diff --git a/travail_individuel/Belkhiri/GameOfLife/src/render.c b/travail_individuel/Belkhiri/GameOfLife/src/render.c
index 4394390..5d0776c 100644
--- a/travail_individuel/Belkhiri/GameOfLife/src/render.c
+++ b/travail_individuel/Belkhiri/GameOfLife/src/render.c
@@ -126,17 +126,8 @@ void drawColumns(){
     SDL_RenderCopy(renderer, columnTexture, NULL, &rightRect);
 }
 
-void drawGame(){
-    SDL_RenderClear(renderer);
-    drawBackground();
-    drawBackground2();
-    drawMap();
-    drawColumns();
-    SDL_RenderPresent(renderer);
-}
-
 void drawStable(){
-    char str[20] = "Stable state reached";
+    char str[21] = "Stable state reached";
     SDL_Color textColor = {0, 0, 0};
     SDL_Surface * surface = TTF_RenderText_Solid(RobotoFont, str, textColor);
     SDL_Texture * texture = SDL_CreateTextureFromSurface(renderer, surface);
@@ -150,6 +141,18 @@ void drawStable(){
     SDL_RenderPresent(renderer);
 }
 
+void drawGame(){
+    SDL_RenderClear(renderer);
+    drawBackground();
+    drawBackground2();
+    drawMap();
+    drawColumns();
+    if (stable){
+        drawStable();
+    }
+    SDL_RenderPresent(renderer);
+}
+
 void MainLoop(){
     CreateWindow();
 
diff --git a/travail_individuel/Belkhiri/GameOfLife/src/utility.c b/travail_individuel/Belkhiri/GameOfLife/src/utility.c
index 6a1e6dd..ebb1630 100644
--- a/travail_individuel/Belkhiri/GameOfLife/src/utility.c
+++ b/travail_individuel/Belkhiri/GameOfLife/src/utility.c
@@ -2,6 +2,7 @@
 
 int surviveRule[NB_RULES] = {0, 0, 1, 1, 0, 0, 0, 0, 0};
 int bornRule[NB_RULES] = {0, 0, 0, 1, 0, 0, 0, 0, 0};
+int stable;
 
 int survivingNeighbors(int x, int y){
     int count = 0;
@@ -17,7 +18,7 @@ int survivingNeighbors(int x, int y){
 
 void updateMap(){
     int newMap[MAPSIZE][MAPSIZE];
-    int stable = 1;
+    stable = 1;
     for (int i=0; i<MAPSIZE; i++){
         for (int j=0; j<MAPSIZE; j++){
             int count = survivingNeighbors(j, i);
@@ -38,16 +39,10 @@ void updateMap(){
         }
     }
 
-    if (stable){
-        drawStable();
-    }
-
     for (int i=0; i<MAPSIZE; i++){
         for (int j=0; j<MAPSIZE; j++){
             map[i][j] = newMap[i][j];
         }
     }
-
-    addMapToList(map);
 }
 
diff --git a/travail_individuel/Belkhiri/GameOfLife/src/utility.h b/travail_individuel/Belkhiri/GameOfLife/src/utility.h
index 5d34b4b..f781d11 100644
--- a/travail_individuel/Belkhiri/GameOfLife/src/utility.h
+++ b/travail_individuel/Belkhiri/GameOfLife/src/utility.h
@@ -7,6 +7,7 @@
 
 #define NB_RULES 9
 
+extern int stable;
 void updateMap();
 
 
-- 
GitLab