diff --git a/travail_de_groupe/chef_oeuvre/src/fire.c b/travail_de_groupe/chef_oeuvre/src/fire.c index 61289d5cbc08e62603c62e46da4c5877bfc4b9f0..fb0c37d24f942dce9c0614e94e17683e78c4c739 100644 --- a/travail_de_groupe/chef_oeuvre/src/fire.c +++ b/travail_de_groupe/chef_oeuvre/src/fire.c @@ -31,11 +31,11 @@ listchainfire_t insertAheadFire(fire_t fire,listchainfire_t listFire) printf("problème d'allocation \n"); exit(1); } - if (!searchFire(listFire,fire.x,fire.y)){ - m->fire=fire; - m->next= listFire; - listFire=m;} - + if ((!searchFire(listFire,fire.x,fire.y))&&(map[fire.x][fire.y]!=2)){ + m->fire=fire; + m->next= listFire; + listFire=m; + } return listFire; } @@ -55,7 +55,6 @@ listchainfire_t startFire(listchainfire_t listFire,int numberFire, int mapSize){ xFire= rand()%mapSize; yFire= rand()%mapSize; - printf("xf:%d,yf:%d\n",xFire,yFire); fire.x= xFire; fire.y= yFire; fire.state=1; @@ -132,10 +131,9 @@ void travelFire(listchainfire_t listFire){ listchainfire_t listTemporary=listFire; while(listTemporary!=NULL){ - printf("x:%d,y:%d\n",(listTemporary->fire).x,(listTemporary->fire).y); + //printf("x:%d,y:%d\n",(listTemporary->fire).x,(listTemporary->fire).y); listTemporary=listTemporary->next; } - //freeListFire(listTemporary); } void readFapFromFile(char * filename){ @@ -185,9 +183,61 @@ void nextFire(listchainfire_t listFire){ else if ((pMedium<=probability)&&(probability<pStrong)){(listTemporary->fire).state=STRONG;} else {(listTemporary->fire).state=SPREAD;} - printf("%d %d\n", probability, state); - printf("%d %d %d %d\n", pDead, pSparkle, pMedium, pStrong); - listTemporary=listTemporary->next; } -} \ No newline at end of file +} + +listchainfire_t probabilitySpreadFire( listchainfire_t listFire, listchainfire_t listTemporary){ + int probability; + fire_t fire; + + probability= rand()%4; + + if((probability==0)&&((listTemporary->fire).x+1<MAPSIZE)){fire.state=1; + fire.x=(listTemporary->fire).x+1; + fire.y=(listTemporary->fire).y; + listFire=insertAheadFire(fire,listFire); + } + if ((probability==1)&&((listTemporary->fire).y+1<MAPSIZE)){fire.state=1; + fire.x=(listTemporary->fire).x; + fire.y=(listTemporary->fire).y+1; + listFire=insertAheadFire(fire,listFire); + } + if ((probability==2)&&((listTemporary->fire).y-1>=0)){fire.state=1; + fire.x=(listTemporary->fire).x; + fire.y=(listTemporary->fire).y-1; + listFire=insertAheadFire(fire,listFire); + } + if ((probability==3)&&((listTemporary->fire).x-1>=0)){fire.state=1; + fire.x=(listTemporary->fire).x-1; + fire.y=(listTemporary->fire).y; + listFire=insertAheadFire(fire,listFire); + } + return listFire; +} + +listchainfire_t spreadFire (listchainfire_t listFire){ + listchainfire_t listTemporary=fireList; + srand(time(NULL)); + while (!emptyListFire(listTemporary)){ + if ((listTemporary->fire).state==4){ + + listFire=probabilitySpreadFire(listFire, listTemporary); + } + listTemporary=listTemporary->next; + } + return listFire; +} + +booleen_t winGame(listchainfire_t listFire){ + booleen_t win = true; + listchainfire_t listTemporary= listFire; + + while (!emptyListFire( listTemporary)){ + if ((listTemporary->fire).state!=0){ + win= false; + break; + } + } + return win; +} \ No newline at end of file diff --git a/travail_de_groupe/chef_oeuvre/src/fire.h b/travail_de_groupe/chef_oeuvre/src/fire.h index 975fb32c8b02dcf758c617e56c8c41c763961fc3..5a41da698c245064c7e0a314b671e9aec4527274 100644 --- a/travail_de_groupe/chef_oeuvre/src/fire.h +++ b/travail_de_groupe/chef_oeuvre/src/fire.h @@ -13,6 +13,7 @@ #define STRONG 3 #define SPREAD 4 +#define UPDATETIME 10 typedef struct fire{ @@ -44,9 +45,12 @@ listchainfire_t deleteAheadFire(listchainfire_t); listchainfire_t deleteFire (listchainfire_t, int ,int ); listchainfire_t freeListFire (listchainfire_t ); listchainfire_t offFire (listchainfire_t, int,int ); -void travelFire(listchainfire_t listFire); +void travelFire(listchainfire_t ); void readFapFromFile(char * filename); void nextFire(listchainfire_t ); +listchainfire_t probabilitySpreadFire( listchainfire_t, listchainfire_t); +listchainfire_t spreadFire (listchainfire_t ); +booleen_t winGame(listchainfire_t ); diff --git a/travail_de_groupe/chef_oeuvre/src/main.c b/travail_de_groupe/chef_oeuvre/src/main.c index 2ce91a51061e2f16521276e0e43cc90a0bfd3a93..71aadadc0fd3ee755877e42fad0e225eb8c4ade0 100644 --- a/travail_de_groupe/chef_oeuvre/src/main.c +++ b/travail_de_groupe/chef_oeuvre/src/main.c @@ -10,9 +10,8 @@ int main(){ readMapFromFile("map.txt"); readFapFromFile("markov.txt"); fireList = startFire(fireList,10,MAPSIZE); - travelFire(fireList); - nextFire(fireList); nextFire(fireList); nextFire(fireList); + mainLoop(); } \ No newline at end of file diff --git a/travail_de_groupe/chef_oeuvre/src/map.h b/travail_de_groupe/chef_oeuvre/src/map.h index a9b6c5820fd075361959bdb42ba62b0bc039233d..adbfbc6805e4b57cb8f3c8c99773d122918152f2 100644 --- a/travail_de_groupe/chef_oeuvre/src/map.h +++ b/travail_de_groupe/chef_oeuvre/src/map.h @@ -5,6 +5,9 @@ #define MAPSIZE 20 +#define TREE 1 +#define WATER 2 + extern int map[MAPSIZE][MAPSIZE]; void readMapFromFile(char * filename); diff --git a/travail_de_groupe/chef_oeuvre/src/player.c b/travail_de_groupe/chef_oeuvre/src/player.c index 865f3a155734ad29523334da798fcb11935dac56..a722ebbb7dbefb4a4dd61dd59757a50e20193d90 100644 --- a/travail_de_groupe/chef_oeuvre/src/player.c +++ b/travail_de_groupe/chef_oeuvre/src/player.c @@ -12,6 +12,10 @@ void initPlayer(){ player.currentWater = player.waterMax; player.speed = 1; player.isMoving = 0; + player.HPMax = 3; + player.currentHP = player.HPMax; + player.invisible = 0; + player.invisibleTime = 5; } int giveCaseBelowPosition(int x, int y){ @@ -20,128 +24,154 @@ int giveCaseBelowPosition(int x, int y){ return map[y2][x2]; } -int collisionsLeftPlayer(){ - int collision = 0; - int dotTopLeft = giveCaseBelowPosition(player.x, player.y); - int dotDownLeft = giveCaseBelowPosition(player.x, player.y+player.h); - //collision window - if(player.x <= 0){ - collision = 1; +int getPositionXInMap(int x){ + int x2 = x/CELLSIZE; + return x2; +} + +int getPositionYInMap(int y){ + int y2 = y/CELLSIZE; + return y2; +} + +int checkCollisionsTypeGround(int dot1, int dot2, int typeGround){ + int coll = 0; + if(dot1==typeGround || dot2==typeGround){ + coll = 1; } - //collision tree - if(dotTopLeft==1 || dotDownLeft==1){ - collision = 1; + return coll; +} + +int collisionsCaseSolid(int dot1, int dot2){ + return checkCollisionsTypeGround(dot1, dot2, TREE) + || checkCollisionsTypeGround(dot1, dot2, WATER); +} + +/*int collisionsWindow(){ + +}*/ + +void checkCollisionsFire(int dot1, int dot2){ + if(player.invisible==0 && (dot1==1 || dot2==1) && player.currentHP>0){ + player.currentHP = player.currentHP - 1; + player.invisible = 1; + player.timeLastHitFire = (int)timer/1000; } - //collision water - if(dotTopLeft==2 || dotDownLeft==2){ - collision = 1; +} + +int collisionsLeftPlayer(int dot1, int dot2){ + int collisionWindow = 0; + int collisionCaseSolid = 0; + //collision window + if(player.x <= 0){ + collisionWindow = 1; } - return collision; + //collisions + collisionCaseSolid = collisionsCaseSolid(dot1, dot2); + return collisionWindow || collisionCaseSolid; } -int collisionsRightPlayer(){ - int collision = 0; - int dotTopRight = giveCaseBelowPosition(player.x+player.w, player.y); - int dotDownRight = giveCaseBelowPosition(player.x+player.w, player.y+player.h); +int collisionsRightPlayer(int dot1, int dot2){ + int collisionWindow = 0; + int collisionCaseSolid = 0; //collision window if(player.x + player.w >= MAPSIZE * CELLSIZE){ - collision = 1; - } - //collision tree - if(dotTopRight==1 || dotDownRight==1){ - collision = 1; - } - //collision water - if(dotTopRight==2 || dotDownRight==2){ - collision = 1; + collisionWindow = 1; } - return collision; + //collisions + collisionCaseSolid = collisionsCaseSolid(dot1, dot2); + return collisionWindow || collisionCaseSolid; } -int collisionsUpPlayer(){ - int collision = 0; - int dotTopRight = giveCaseBelowPosition(player.x+player.w, player.y); - int dotTopLeft = giveCaseBelowPosition(player.x, player.y); +int collisionsUpPlayer(int dot1, int dot2){ + int collisionWindow = 0; + int collisionCaseSolid = 0; //collision window if(player.y <= 0){ - collision = 1; - } - //collision tree - if(dotTopRight==1 || dotTopLeft==1){ - collision = 1; + collisionWindow = 1; } - //collision water - if(dotTopRight==2 || dotTopLeft==2){ - collision = 1; - } - return collision; + //collisions solide like tree or water or rock(in the future) + collisionCaseSolid = collisionsCaseSolid(dot1, dot2); + return collisionWindow || collisionCaseSolid; } -int collisionsDownPlayer(){ - int collision = 0; - int dotDownRight = giveCaseBelowPosition(player.x+player.w, player.y+player.h); - int dotDownLeft = giveCaseBelowPosition(player.x, player.y+player.h); +int collisionsDownPlayer(int dot1, int dot2){ + int collisionWindow = 0; + int collisionCaseSolid = 0; //collision window if(player.y + player.h >= MAPSIZE * CELLSIZE){ - collision = 1; + collisionWindow = 1; } - //collision tree - if(dotDownRight==1 || dotDownLeft==1){ - collision = 1; - } - //collision water - if(dotDownRight==2 || dotDownLeft==2){ - collision = 1; - } - return collision; + //collisions + collisionCaseSolid = collisionsCaseSolid(dot1, dot2); + return collisionWindow || collisionCaseSolid; } void moveRightPlayer(){ - if(!collisionsRightPlayer()){ - player.x = player.x + player.speed; - } + player.x = player.x + player.speed; } void moveLeftPlayer(){ - if(!collisionsLeftPlayer()){ - player.x = player.x - player.speed; - } + player.x = player.x - player.speed; } void moveUpPlayer(){ - if(!collisionsUpPlayer()){ - player.y = player.y - player.speed; - } + player.y = player.y - player.speed; } void moveDownPlayer(){ - if(!collisionsDownPlayer()){ - player.y = player.y + player.speed; - } + player.y = player.y + player.speed; } void manageMovement(){ + int dotTopRight = giveCaseBelowPosition(player.x+player.w, player.y); + int dotTopLeft = giveCaseBelowPosition(player.x, player.y); + int dotDownRight = giveCaseBelowPosition(player.x+player.w, player.y+player.h); + int dotDownLeft = giveCaseBelowPosition(player.x, player.y+player.h); + int fireTopRight = searchFire(fireList, getPositionXInMap(player.x+player.w), getPositionYInMap(player.y)); + int fireTopLeft = searchFire(fireList, getPositionXInMap(player.x), getPositionYInMap(player.y)); + int fireDownRight = searchFire(fireList, getPositionXInMap(player.x+player.w), getPositionYInMap(player.y+player.h)); + int fireDownLeft = searchFire(fireList, getPositionXInMap(player.x), getPositionYInMap(player.y+player.h)); + if(keys[PLAYER_UP]){ - moveUpPlayer(); - player.isMoving = 1; - player.direction = PLAYER_UP; + if(!collisionsUpPlayer(dotTopRight, dotTopLeft)){ + moveUpPlayer(); + checkCollisionsFire(fireTopRight, fireTopLeft); + player.isMoving = 1; + player.direction = PLAYER_UP; + } } else if(keys[PLAYER_DOWN]){ - moveDownPlayer(); - player.isMoving = 1; - player.direction = PLAYER_DOWN; + if(!collisionsDownPlayer(dotDownRight, dotDownLeft)){ + moveDownPlayer(); + checkCollisionsFire(fireDownRight, fireDownLeft); + player.isMoving = 1; + player.direction = PLAYER_DOWN; + } } else if(keys[PLAYER_LEFT]){ - moveLeftPlayer(); - player.isMoving = 1; - player.direction = PLAYER_LEFT; + if(!collisionsLeftPlayer(dotTopLeft, dotDownLeft)){ + moveLeftPlayer(); + checkCollisionsFire(fireTopLeft, fireDownLeft); + player.isMoving = 1; + player.direction = PLAYER_LEFT; + } } else if(keys[PLAYER_RIGHT]){ - moveRightPlayer(); - player.isMoving = 1; - player.direction = PLAYER_RIGHT; + if(!collisionsRightPlayer(dotTopRight, dotDownRight)){ + moveRightPlayer(); + checkCollisionsFire(fireTopRight, fireDownRight); + player.isMoving = 1; + player.direction = PLAYER_RIGHT; + } } else player.isMoving = 0; + // + if(player.invisible==1){ + if((int)timer/1000 - player.timeLastHitFire > player.invisibleTime){ + player.invisible = 0; + } + } } int selectStateHover(){ @@ -153,7 +183,6 @@ int selectStateHover(){ return stateHover; } - void pourWater(int x, int y){ int onFire = searchFire(fireList, x, y); if(player.currentWater>0){ diff --git a/travail_de_groupe/chef_oeuvre/src/player.h b/travail_de_groupe/chef_oeuvre/src/player.h index 387cf001c1dcde003a376e123739a23e158ebbbe..b0b2253d9de191eb31765e0829459949a217cfc4 100644 --- a/travail_de_groupe/chef_oeuvre/src/player.h +++ b/travail_de_groupe/chef_oeuvre/src/player.h @@ -19,6 +19,11 @@ typedef struct player{ int speed; int isMoving; int direction; + int HPMax; + int currentHP; + int invisible; + int invisibleTime; + int timeLastHitFire; } player_t; extern player_t player; diff --git a/travail_de_groupe/chef_oeuvre/src/render.c b/travail_de_groupe/chef_oeuvre/src/render.c index 93ec722c0398dd269086a3f7e79a0928194cdca4..b633e43b7b8aa4b64aa6db6fcc7ce424accbeae7 100644 --- a/travail_de_groupe/chef_oeuvre/src/render.c +++ b/travail_de_groupe/chef_oeuvre/src/render.c @@ -241,6 +241,25 @@ void drawPlayerWaterLevel(){ } } +void drawPlayerHP(){ + int borderWidth = (screenDimension.w - (MAPSIZE * CELLSIZE))/2; + SDL_Rect rect; + rect.h = borderWidth/player.HPMax; + rect.w = rect.h; + int count = player.currentHP; + for (int i=0; i<player.HPMax; i++){ + rect.x = (i*rect.h); + rect.y = screenDimension.h - 3 * rect.h; + if (count){ + count--; + SDL_RenderCopy(renderer, filledBucketTexture, NULL, &rect); + } + else { + SDL_RenderCopy(renderer, emptyBucketTexture, NULL, &rect); + } + } +} + void drawScore(){ SDL_Rect rect; rect.h = screenDimension.h/6; @@ -250,7 +269,7 @@ void drawScore(){ SDL_RenderCopy(renderer, scoreTexture, NULL, &rect); rect.y += rect.h; char str[10]; - sprintf(str, "%d", score); + //sprintf(str, "%d", score); SDL_Color textColor = {237,222,17}; SDL_Surface * surface = TTF_RenderText_Solid(robotoFont, str, textColor); SDL_Texture * texture = SDL_CreateTextureFromSurface(renderer, surface); @@ -266,7 +285,8 @@ void drawTime(){ SDL_RenderCopy(renderer, scoreTexture, NULL, &rect); rect.y += rect.h; char str[10]; - sprintf(str, "%d", (int)timer/1000); + printf("%d\n", (UPDATETIME * 1000 - (int)timer % (UPDATETIME * 1000))/1000); + sprintf(str, "%d", (UPDATETIME * 1000 - (int)timer % (UPDATETIME * 1000))/1000); SDL_Color textColor = {237,222,17}; SDL_Surface * surface = TTF_RenderText_Solid(robotoFont, str, textColor); SDL_Texture * texture = SDL_CreateTextureFromSurface(renderer, surface); @@ -280,6 +300,7 @@ void drawGame(){ drawPlayer(); drawFire(); drawPlayerWaterLevel(); + drawPlayerHP(); drawScore(); drawTime(); SDL_RenderPresent(renderer); @@ -365,16 +386,16 @@ void mainLoop(){ delta = (a - b); if (delta > 1000/FPS_TO_GET){ timer += delta; - printf("timer : %f\n", timer/1000); + printf("%d\n", (int)timer % 1000); b = a; - printf("fps : %f", 1000/delta); switch (gameState){ case MENU: drawMenu(); break; case GAME: - if ((int)timer/1000 % 5 == 0){ + if ((int)timer % (UPDATETIME * 1000) < 10){ nextFire(fireList); + fireList=spreadFire(fireList); } drawGame(); break; diff --git a/travail_de_groupe/chef_oeuvre/src/render.h b/travail_de_groupe/chef_oeuvre/src/render.h index 1af4a2722d4abd4406370e24b62f13bf0e6fca40..e48f6490fda5bab38584450152ee9c86df4130fd 100644 --- a/travail_de_groupe/chef_oeuvre/src/render.h +++ b/travail_de_groupe/chef_oeuvre/src/render.h @@ -12,6 +12,7 @@ extern SDL_Window *window; extern SDL_Renderer *renderer; extern SDL_DisplayMode screenDimension; extern SDL_Rect buttonRect; +extern float timer; void drawHover(int x, int y); void mainLoop(); diff --git a/travail_individuel/Belkhiri/GameOfLife/map.txt b/travail_individuel/Belkhiri/GameOfLife/map.txt index 461edd9ede9574c368e0a332b974a7cc4411ffe4..e1675d706023eec98ae79de728e946b3732dcfda 100644 --- a/travail_individuel/Belkhiri/GameOfLife/map.txt +++ b/travail_individuel/Belkhiri/GameOfLife/map.txt @@ -1,5 +1,20 @@ -0 0 0 0 0 -0 0 0 0 0 -0 1 0 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 0 0 0 0 0 0 0 0 0 1 1 0 0 0 0 0 0 +0 0 0 0 0 1 1 0 0 0 0 1 0 0 1 0 0 0 0 0 +0 0 0 0 0 1 1 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 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 1 0 0 0 0 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 0 0 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 0 0 0 0 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 0 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 diff --git a/travail_individuel/Belkhiri/GameOfLife/niveau.txt b/travail_individuel/Belkhiri/GameOfLife/niveau.txt new file mode 100644 index 0000000000000000000000000000000000000000..2abba445ada331c69fba8269989148b4e96fe1be --- /dev/null +++ b/travail_individuel/Belkhiri/GameOfLife/niveau.txt @@ -0,0 +1,21 @@ +20 +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 1 0 0 0 0 0 0 0 +0 0 0 0 1 1 1 0 0 0 0 0 1 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 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 1 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 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 1 1 0 0 0 0 0 0 0 0 0 1 0 1 0 0 0 +0 0 0 1 1 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 0 0 0 0 \ No newline at end of file diff --git a/travail_individuel/Belkhiri/GameOfLife/run b/travail_individuel/Belkhiri/GameOfLife/run new file mode 100755 index 0000000000000000000000000000000000000000..2c5ecb423a6c0ea008391fc6cd62739890144d7e Binary files /dev/null and b/travail_individuel/Belkhiri/GameOfLife/run differ diff --git a/travail_individuel/Belkhiri/GameOfLife/src/main.c b/travail_individuel/Belkhiri/GameOfLife/src/main.c new file mode 100644 index 0000000000000000000000000000000000000000..4ddfe75d73c117bd3ce0eb10b6074e221669f48d --- /dev/null +++ b/travail_individuel/Belkhiri/GameOfLife/src/main.c @@ -0,0 +1,21 @@ +#include "main.h" + +int running; +int game_state; + + +int main(int argc, char** argv){ + running = 1; + game_state = MENU; + + initMap(); + + if(argc == 3){ + game_state = GAME; + chargeNiveauFichier(argv[2], map, atoi(argv[1])); + printf("3 arg\n"); + } + + MainLoop(); + +} \ No newline at end of file diff --git a/travail_individuel/Belkhiri/GameOfLife/src/map.c b/travail_individuel/Belkhiri/GameOfLife/src/map.c index 29713a65d5bd051ec1ad3887d987cd5525de4fdb..b1de396136e3083db4d717de4ae7542fa72b9225 100644 --- a/travail_individuel/Belkhiri/GameOfLife/src/map.c +++ b/travail_individuel/Belkhiri/GameOfLife/src/map.c @@ -62,4 +62,36 @@ long long int MapToBinary(int ** map) } } return binary; +} + +void chargeNiveauFichier(char *nom_fichier, int ** monde, int nbrLigne){ + FILE *fichier = NULL; + int valeur; + int ligne = -1; + int colonne = 0; + + fichier = fopen(nom_fichier, "r"); + if(fichier != NULL){ + while(fscanf(fichier, "%d", &valeur) != EOF){ + if(ligne == -1){ + MAPSIZE = valeur; + if(MAPSIZE != nbrLigne){ + printf("PROBLEME DE DIMENSION\n"); + return; + } + ligne = 0; + }else{ + map[ligne][colonne] = valeur; + colonne = colonne + 1; + if(colonne==MAPSIZE){ + ligne = ligne + 1; + colonne = 0; + if(ligne==MAPSIZE){ + break; + } + } + } + } + } + fclose(fichier); } \ 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 7a47a8b2fb659c76aafa9d2b53ac8f09b8584c7a..d0408906dde3c54a561860d8597d64c99ca4fde1 100644 --- a/travail_individuel/Belkhiri/GameOfLife/src/map.h +++ b/travail_individuel/Belkhiri/GameOfLife/src/map.h @@ -10,5 +10,6 @@ void printMap(); void initMap(); void writeMap(char* filename); long long int MapToBinary(int ** map); +void chargeNiveauFichier(char *, int **, int); #endif \ No newline at end of file