From 590eee8729f50fab8803567ae32c018ae47e20ab Mon Sep 17 00:00:00 2001 From: Taha Belkhiri <belkhiri.taha53@gmail.com> Date: Tue, 21 Jun 2022 10:38:04 +0200 Subject: [PATCH] GameOfLife fonctionnel --- .../Belkhiri/GameOfLife/Res/background.png | Bin 0 -> 29224 bytes .../Belkhiri/GameOfLife/map.txt | 20 +++++++++ travail_individuel/Belkhiri/GameOfLife/run | Bin 22864 -> 23432 bytes .../Belkhiri/GameOfLife/src/gest_event.c | 14 +++++-- .../Belkhiri/GameOfLife/src/map.c | 14 ++++++- .../Belkhiri/GameOfLife/src/map.h | 1 + .../Belkhiri/GameOfLife/src/render.c | 14 ++++++- .../Belkhiri/GameOfLife/src/utility.c | 39 ++++++++++++++++++ .../Belkhiri/GameOfLife/src/utility.h | 13 ++++++ 9 files changed, 109 insertions(+), 6 deletions(-) create mode 100755 travail_individuel/Belkhiri/GameOfLife/Res/background.png create mode 100644 travail_individuel/Belkhiri/GameOfLife/map.txt diff --git a/travail_individuel/Belkhiri/GameOfLife/Res/background.png b/travail_individuel/Belkhiri/GameOfLife/Res/background.png new file mode 100755 index 0000000000000000000000000000000000000000..ce1617d38161087fdac873c90a2511d7c38677f9 GIT binary patch literal 29224 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 literal 0 HcmV?d00001 diff --git a/travail_individuel/Belkhiri/GameOfLife/map.txt b/travail_individuel/Belkhiri/GameOfLife/map.txt new file mode 100644 index 0000000..5858bfb --- /dev/null +++ b/travail_individuel/Belkhiri/GameOfLife/map.txt @@ -0,0 +1,20 @@ +0 0 0 0 0 0 0 1 0 0 1 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 1 1 1 0 0 0 0 0 0 0 0 0 +0 0 0 0 1 1 1 0 0 1 0 0 0 0 0 0 0 0 0 0 +0 0 0 1 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 1 0 0 0 1 0 0 0 1 1 0 0 0 0 0 0 0 0 +0 0 1 0 0 0 0 0 0 0 1 1 0 0 0 0 0 0 0 0 +0 0 1 0 0 0 1 0 0 0 0 1 1 0 0 0 0 0 0 0 +0 0 0 1 0 0 1 0 0 0 0 1 1 1 0 0 0 0 0 0 +0 0 0 0 1 1 1 0 0 0 1 0 0 1 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 1 0 0 0 1 1 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 1 0 0 0 1 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 1 0 0 0 1 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 1 1 1 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 1 1 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 1 0 1 1 0 0 0 0 0 0 0 0 0 0 diff --git a/travail_individuel/Belkhiri/GameOfLife/run b/travail_individuel/Belkhiri/GameOfLife/run index cc9b9a76df8c962a5b219ba1b0f781bebca3ab35..5091a0fc6309b406237ba71628156f6fa53f0452 100755 GIT binary patch literal 23432 zcmeHPdw7)9nLm>-5EL>&phc`QDpaU41O&xPGzkoRX%mQC*2{{+keMW-lbJaAhKrSp zhFGU#D0XeD)^_n}yRt1-+N~Dv6I2qm*e6)9*{W@7u}%nTOtA(Rnf<-z^5vT^^P#)X zKKsw+<jK6}{k@lSf4?(lX3l1B<)S=?gQ=9yu3^M=j~7U(6m%??8IV#opN+-q6m}jP z34R2}guGM`NJZ+(%ccbq&j%&DNtDS!za(I$sH!1Rva?NvQle;);K|NOS;<@J;V%k3 zMU~truUN>Lg-+*A8B^43M}70))xz$<%4~W}w!8BT=~vc^x{K^~O1quXPSIl7pNgvf zq&}hl`O>eIx*?<F=C6!d?QW2ER=QB?D@tWhTK<k6_@9(lE$s?s3qMwRNWe@{Ro->5 zqkj3kNe%NdS)ScE)XR1&O5;swRyefgvbnRuftle@B))#;`uUg5ylk$gDe9TS<y0>! zgNA?cl9dd@k|IpH<6|*F@+3c(-En!>zj}AS@S}hF#kTYI-oE+r`Y$OTR3_<AB6~T+ z27du^q(kk$xAaj5oKGig8vZGjdk-J$4F0y^*}r`I&RaJ>eCL1MeuG*zLc#QU7xHJB zc$F<gp}Fw+C^#2>%*M|hHu^8y=vUb2-)@8d+6J$)@&88~{AV`!dK>(D8~hxb`ebbI zi*4|38~jO|au3_+ciP}5Z17Vy{y((QA89jB9<cE<)<*vg8~^9Sj~oBi^g|o{sW$#; z&bqBmz?azIm%&dFJDY8-&Ni9|{DN$Va}`{FGOMSFVM?=sp9N2c&Jo}hQdT1Mt^OI} z%<_emb7s!*6jO95W<FnCLp0)R()}^r=VQK#6;-}KFcz!}HR-|FimC<SXe7A8za|_M zvYZmQ^eu`7gUjQwT7OND5r17g7~8NSxL%LP1W*wP>0GiP7WC`EWx)uQ6XVeGpf31@ zG5@*+(Qs723xi?*2Cg8a3!;sJT^!UG#AC5wL|+(cYJ^f%G$2Z;j)ueDwGf!hs$;<> zg^0psy%xoy4dyz_Qo=#MC?CbF2-V!yWUBV{p-3RQ&g6ViC>&lEtkG51`gFZ^uzOdm zSmfgkr_9pEU}RAgRg<IO3pM!bf`iHxRf~O<QGbBsje0%0DIf+(GQJw#b0n@I!DTGC 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 Hg=PN*D}<}} literal 22864 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 Rdp`S483%fw*qkgZ`)}Zli)8=+ diff --git a/travail_individuel/Belkhiri/GameOfLife/src/gest_event.c b/travail_individuel/Belkhiri/GameOfLife/src/gest_event.c index 8b3a2d5..a56b164 100644 --- a/travail_individuel/Belkhiri/GameOfLife/src/gest_event.c +++ b/travail_individuel/Belkhiri/GameOfLife/src/gest_event.c @@ -39,17 +39,25 @@ void gestGame(){ running = 0; break; - case SDL_KEYUP: + case SDL_KEYDOWN: switch (event.key.keysym.sym) { case SDLK_x: running = 0; continue; + + case SDLK_RIGHT: + updateMap(map); + continue; + + case SDLK_s: + writeMap(map, "map.txt"); + printf("Saved map to map.txt\n"); default: continue; } - break; + continue; case SDL_MOUSEBUTTONDOWN: if (event.button.button == SDL_BUTTON_LEFT){ @@ -62,7 +70,7 @@ void gestGame(){ map[j][i] = !map[j][i]; } } - break; + continue; default: continue; diff --git a/travail_individuel/Belkhiri/GameOfLife/src/map.c b/travail_individuel/Belkhiri/GameOfLife/src/map.c index cb922b4..30a49ee 100644 --- a/travail_individuel/Belkhiri/GameOfLife/src/map.c +++ b/travail_individuel/Belkhiri/GameOfLife/src/map.c @@ -7,7 +7,7 @@ int map[MAPSIZE][MAPSIZE]; void initMap(int map[MAPSIZE][MAPSIZE]) { for(int i = 0; i < MAPSIZE; i++){ for(int j = 0; j < MAPSIZE; j++){ - map[i][j] = rand() % 2; + map[i][j] = 0; } } } @@ -20,4 +20,16 @@ void printMap(int map[MAPSIZE][MAPSIZE]){ } printf("\n"); } +} + + +void writeMap(int map[MAPSIZE][MAPSIZE], 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"); + } + fclose(f); } \ 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 111b854..b50040c 100644 --- a/travail_individuel/Belkhiri/GameOfLife/src/map.h +++ b/travail_individuel/Belkhiri/GameOfLife/src/map.h @@ -8,5 +8,6 @@ extern int map[MAPSIZE][MAPSIZE]; void printMap(int map[MAPSIZE][MAPSIZE]); void initMap(int map[MAPSIZE][MAPSIZE]); +void writeMap(int map[MAPSIZE][MAPSIZE], char* filename); #endif \ 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 9889be5..4d5a88b 100644 --- a/travail_individuel/Belkhiri/GameOfLife/src/render.c +++ b/travail_individuel/Belkhiri/GameOfLife/src/render.c @@ -15,6 +15,9 @@ SDL_Surface * playButtonSurface = NULL; SDL_Texture * columnTexture = NULL; SDL_Surface * columnSurface = NULL; +SDL_Texture * backgroundTexture = NULL; +SDL_Surface * backgroundSurface = NULL; + void CreateWindow(){ if (SDL_Init(SDL_INIT_VIDEO) != 0){ @@ -52,6 +55,11 @@ void drawBackground(){ SDL_RenderFillRect(renderer, &rect); } +void drawBackground2(){ + SDL_Rect rect = {0, 0, ScreenDimension.w, ScreenDimension.h}; + SDL_RenderCopy(renderer, backgroundTexture, NULL, &rect); +} + void drawTitle(){ int titleWidth, titleHeight; SDL_QueryTexture(titleTexture, NULL, NULL, &titleWidth, &titleHeight); @@ -93,7 +101,6 @@ void drawMap(int map[MAPSIZE][MAPSIZE]){ } void drawColumns(){ - // draw 2 columnTexture, 1 left 1 right int columnWidth, columnHeight; SDL_QueryTexture(columnTexture, NULL, NULL, &columnWidth, &columnHeight); int x_offset = ScreenDimension.w/2 - MAPSIZE*CELLSIZE/2; @@ -106,6 +113,7 @@ void drawColumns(){ void drawGame(){ SDL_RenderClear(renderer); drawBackground(); + drawBackground2(); drawMap(map); drawColumns(); SDL_RenderPresent(renderer); @@ -117,14 +125,17 @@ void MainLoop(){ titleSurface = IMG_Load("Res/title.png"); playButtonSurface = IMG_Load("Res/playButton.png"); columnSurface = IMG_Load("Res/column.png"); + backgroundSurface = IMG_Load("Res/background.png"); titleTexture = SDL_CreateTextureFromSurface(renderer, titleSurface); playButtonTexture = SDL_CreateTextureFromSurface(renderer, playButtonSurface); columnTexture = SDL_CreateTextureFromSurface(renderer, columnSurface); + backgroundTexture = SDL_CreateTextureFromSurface(renderer, backgroundSurface); SDL_FreeSurface(titleSurface); SDL_FreeSurface(playButtonSurface); SDL_FreeSurface(columnSurface); + SDL_FreeSurface(backgroundSurface); unsigned int a = SDL_GetTicks(); unsigned int b = SDL_GetTicks(); @@ -140,7 +151,6 @@ void MainLoop(){ a = SDL_GetTicks(); delta = (a - b); if (delta > 1/FPS_TO_GET){ - printf("fps : %f\n", 1000/delta); b = a; switch (game_state){ case MENU: diff --git a/travail_individuel/Belkhiri/GameOfLife/src/utility.c b/travail_individuel/Belkhiri/GameOfLife/src/utility.c index e69de29..0fd5618 100644 --- a/travail_individuel/Belkhiri/GameOfLife/src/utility.c +++ b/travail_individuel/Belkhiri/GameOfLife/src/utility.c @@ -0,0 +1,39 @@ +#include "utility.h" + +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 survivingNeighbors(int x, int y){ + int count = 0; + for(int i = -1; i <= 1; i++){ + for(int j = -1; j <= 1; j++){ + if(i == 0 && j == 0) continue; + if(map[(x+i+MAPSIZE)%MAPSIZE][(y+j+MAPSIZE)%MAPSIZE] == 1) count++; + } + } + return count; +} + + +void updateMap(){ + int newMap[MAPSIZE][MAPSIZE]; + for (int i=0; i<MAPSIZE; i++){ + for (int j=0; j<MAPSIZE; j++){ + int count = survivingNeighbors(j, i); + if (map[j][i] == 1){ + if (!surviveRule[count]) newMap[j][i] = 0; + else newMap[j][i] = 1; + } + else{ + if (bornRule[count]) newMap[j][i] = 1; + else newMap[j][i] = 0; + } + } + } + for (int i=0; i<MAPSIZE; i++){ + for (int j=0; j<MAPSIZE; j++){ + map[i][j] = newMap[i][j]; + } + } +} + diff --git a/travail_individuel/Belkhiri/GameOfLife/src/utility.h b/travail_individuel/Belkhiri/GameOfLife/src/utility.h index e69de29..5d34b4b 100644 --- a/travail_individuel/Belkhiri/GameOfLife/src/utility.h +++ b/travail_individuel/Belkhiri/GameOfLife/src/utility.h @@ -0,0 +1,13 @@ +#ifndef _UTILITY_H_ +#define _UTILITY_H_ + +#include "main.h" +#include "map.h" + + +#define NB_RULES 9 + +void updateMap(); + + +#endif \ No newline at end of file -- GitLab