From 814e3cba820f1beb44619bed02ae4e1c4cdd22e6 Mon Sep 17 00:00:00 2001
From: Taha Belkhiri <belkhiri.taha53@gmail.com>
Date: Tue, 21 Jun 2022 13:19:50 +0200
Subject: [PATCH] detection cycles/etat stable

---
 travail_individuel/Belkhiri/GameOfLife/run    | Bin 23856 -> 23888 bytes
 .../Belkhiri/GameOfLife/src/map.c             | 103 ++++++++++++------
 .../Belkhiri/GameOfLife/src/render.c          |  13 +++
 .../Belkhiri/GameOfLife/src/render.h          |   2 +
 .../Belkhiri/GameOfLife/src/utility.c         |   3 +-
 5 files changed, 86 insertions(+), 35 deletions(-)

diff --git a/travail_individuel/Belkhiri/GameOfLife/run b/travail_individuel/Belkhiri/GameOfLife/run
index 87257857f689c489c5941519e96c548f7a7f12f9..b4b5d1dda336d41fd1db836aed18335e57e069d6 100755
GIT binary patch
delta 5185
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

delta 4955
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

diff --git a/travail_individuel/Belkhiri/GameOfLife/src/map.c b/travail_individuel/Belkhiri/GameOfLife/src/map.c
index 3d66af1..a220bc3 100644
--- a/travail_individuel/Belkhiri/GameOfLife/src/map.c
+++ b/travail_individuel/Belkhiri/GameOfLife/src/map.c
@@ -2,47 +2,56 @@
 
 int MAPSIZE = 20;
 
-int ** map;
+int **map;
 
-int *** mapList;
+int ***mapList;
 
-void allocateMap(){
-    map = malloc(MAPSIZE * sizeof(int*));
-    for(int i = 0; i < MAPSIZE; i++){
+void allocateMap()
+{
+    map = malloc(MAPSIZE * sizeof(int *));
+    for (int i = 0; i < MAPSIZE; i++)
+    {
         map[i] = malloc(MAPSIZE * sizeof(int));
     }
 }
 
-void allocateMapList(int SIZE){
-    mapList = malloc(SIZE * sizeof(int**));
+void allocateMapList(int SIZE)
+{
+    mapList = malloc(SIZE * sizeof(int **));
 }
 
-
-void initMap() {
+void initMap()
+{
     allocateMap();
     allocateMapList(100);
-    for(int i = 0; i < MAPSIZE; i++){
-        for(int j = 0; j < MAPSIZE; j++){
+    for (int i = 0; i < MAPSIZE; i++)
+    {
+        for (int j = 0; j < MAPSIZE; j++)
+        {
             map[i][j] = 0;
         }
     }
 }
 
-
-void printMap(){
-    for(int i = 0; i < MAPSIZE; i++){
-        for(int j = 0; j < MAPSIZE; j++){
+void printMap()
+{
+    for (int i = 0; i < MAPSIZE; i++)
+    {
+        for (int j = 0; j < MAPSIZE; j++)
+        {
             printf("%d ", map[i][j]);
         }
         printf("\n");
     }
 }
 
-
-void writeMap(char* filename){
-    FILE* f = fopen(filename, "w");
-    for(int i = 0; i < MAPSIZE; i++){
-        for(int j = 0; j < MAPSIZE; j++){
+void writeMap(char *filename)
+{
+    FILE *f = fopen(filename, "w");
+    for (int i = 0; i < MAPSIZE; i++)
+    {
+        for (int j = 0; j < MAPSIZE; j++)
+        {
             fprintf(f, "%d ", map[i][j]);
         }
         fprintf(f, "\n");
@@ -50,34 +59,62 @@ void writeMap(char* filename){
     fclose(f);
 }
 
-int ** saveMapState(){
-    int ** mapCopy = malloc(MAPSIZE * sizeof(int*));
-    for(int i = 0; i < MAPSIZE; i++){
+int **saveMapState()
+{
+    int **mapCopy = malloc(MAPSIZE * sizeof(int *));
+    for (int i = 0; i < MAPSIZE; i++)
+    {
         mapCopy[i] = malloc(MAPSIZE * sizeof(int));
     }
-    for(int i = 0; i < MAPSIZE; i++){
-        for(int j = 0; j < MAPSIZE; j++){
+    for (int i = 0; i < MAPSIZE; i++)
+    {
+        for (int j = 0; j < MAPSIZE; j++)
+        {
             mapCopy[i][j] = map[i][j];
         }
     }
     return mapCopy;
 }
 
-void addMapToList(int ** map){
+void addMapToList(int **map)
+{
     int i = 0;
-    while(mapList[i] != NULL){
+    while (mapList[i] != NULL)
+    {
         i++;
     }
     mapList[i] = map;
 }
 
-void checkForCycle(){
+void checkForCycle()
+{
+    // count number of maps saved
     int i = 0;
-    while(mapList[i] != NULL){
-        if(mapList[i] == map){
-            printf("Cycle detected at iteration: %d\n", i);
-            return;
-        }
+    while (mapList[i] != NULL)
+    {
         i++;
     }
+
+    int j = 0;
+    for (j = 0; j < i; j++)
+    {
+        int cycle = 1;
+        // compare values of maps
+        int k = 0;
+        for (k = 0; k < MAPSIZE; k++)
+        {
+            for (int l = 0; l < MAPSIZE; l++)
+            {
+                if (mapList[j][k][l] != map[k][l])
+                {
+                    cycle = 0;
+                }
+            }
+        }
+        if (cycle == 1)
+        {
+            printf("Cycle found!\n");
+            break;
+        }
+    }
 }
\ No newline at end of file
diff --git a/travail_individuel/Belkhiri/GameOfLife/src/render.c b/travail_individuel/Belkhiri/GameOfLife/src/render.c
index 8ca7d3d..b1feb2e 100644
--- a/travail_individuel/Belkhiri/GameOfLife/src/render.c
+++ b/travail_individuel/Belkhiri/GameOfLife/src/render.c
@@ -135,6 +135,19 @@ void drawGame(){
     SDL_RenderPresent(renderer);
 }
 
+void drawStable(){
+    char str[20] = "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);
+
+    int titleWidth, titleHeight;
+    SDL_QueryTexture(texture, NULL, NULL, &titleWidth, &titleHeight);
+
+    SDL_Rect titleRect = {ScreenDimension.w/2 - titleWidth/2, ScreenDimension.h/2 - titleHeight, titleWidth, titleHeight};
+    SDL_RenderCopy(renderer, texture, NULL, &titleRect);
+}
+
 void MainLoop(){
     CreateWindow();
 
diff --git a/travail_individuel/Belkhiri/GameOfLife/src/render.h b/travail_individuel/Belkhiri/GameOfLife/src/render.h
index 05dfe33..956f3ad 100644
--- a/travail_individuel/Belkhiri/GameOfLife/src/render.h
+++ b/travail_individuel/Belkhiri/GameOfLife/src/render.h
@@ -15,4 +15,6 @@ extern SDL_DisplayMode ScreenDimension;
 
 void MainLoop();
 
+void drawStable();
+
 #endif
\ No newline at end of file
diff --git a/travail_individuel/Belkhiri/GameOfLife/src/utility.c b/travail_individuel/Belkhiri/GameOfLife/src/utility.c
index 2eab021..6a1e6dd 100644
--- a/travail_individuel/Belkhiri/GameOfLife/src/utility.c
+++ b/travail_individuel/Belkhiri/GameOfLife/src/utility.c
@@ -39,7 +39,7 @@ void updateMap(){
     }
 
     if (stable){
-        printf("Stable state reached.\n");
+        drawStable();
     }
 
     for (int i=0; i<MAPSIZE; i++){
@@ -49,6 +49,5 @@ void updateMap(){
     }
 
     addMapToList(map);
-    checkForCycle();
 }
 
-- 
GitLab