Skip to content
Snippets Groups Projects
Commit e2fb5273 authored by belkhiritaha's avatar belkhiritaha
Browse files

Merge branch 'main' of github.com:maberet/ProjetZZ1 into main

parents 94b91390 fbf1c79e
No related branches found
No related tags found
No related merge requests found
Showing
with 308 additions and 106 deletions
...@@ -31,11 +31,11 @@ listchainfire_t insertAheadFire(fire_t fire,listchainfire_t listFire) ...@@ -31,11 +31,11 @@ listchainfire_t insertAheadFire(fire_t fire,listchainfire_t listFire)
printf("problème d'allocation \n"); printf("problème d'allocation \n");
exit(1); exit(1);
} }
if (!searchFire(listFire,fire.x,fire.y)){ if ((!searchFire(listFire,fire.x,fire.y))&&(map[fire.x][fire.y]!=2)){
m->fire=fire; m->fire=fire;
m->next= listFire; m->next= listFire;
listFire=m;} listFire=m;
}
return listFire; return listFire;
} }
...@@ -55,7 +55,6 @@ listchainfire_t startFire(listchainfire_t listFire,int numberFire, int mapSize){ ...@@ -55,7 +55,6 @@ listchainfire_t startFire(listchainfire_t listFire,int numberFire, int mapSize){
xFire= rand()%mapSize; xFire= rand()%mapSize;
yFire= rand()%mapSize; yFire= rand()%mapSize;
printf("xf:%d,yf:%d\n",xFire,yFire);
fire.x= xFire; fire.x= xFire;
fire.y= yFire; fire.y= yFire;
fire.state=1; fire.state=1;
...@@ -132,10 +131,9 @@ void travelFire(listchainfire_t listFire){ ...@@ -132,10 +131,9 @@ void travelFire(listchainfire_t listFire){
listchainfire_t listTemporary=listFire; listchainfire_t listTemporary=listFire;
while(listTemporary!=NULL){ 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; listTemporary=listTemporary->next;
} }
//freeListFire(listTemporary);
} }
void readFapFromFile(char * filename){ void readFapFromFile(char * filename){
...@@ -185,9 +183,61 @@ void nextFire(listchainfire_t listFire){ ...@@ -185,9 +183,61 @@ void nextFire(listchainfire_t listFire){
else if ((pMedium<=probability)&&(probability<pStrong)){(listTemporary->fire).state=STRONG;} else if ((pMedium<=probability)&&(probability<pStrong)){(listTemporary->fire).state=STRONG;}
else {(listTemporary->fire).state=SPREAD;} else {(listTemporary->fire).state=SPREAD;}
printf("%d %d\n", probability, state); listTemporary=listTemporary->next;
printf("%d %d %d %d\n", pDead, pSparkle, pMedium, pStrong); }
}
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; 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
...@@ -13,6 +13,7 @@ ...@@ -13,6 +13,7 @@
#define STRONG 3 #define STRONG 3
#define SPREAD 4 #define SPREAD 4
#define UPDATETIME 10
typedef struct fire{ typedef struct fire{
...@@ -44,9 +45,12 @@ listchainfire_t deleteAheadFire(listchainfire_t); ...@@ -44,9 +45,12 @@ listchainfire_t deleteAheadFire(listchainfire_t);
listchainfire_t deleteFire (listchainfire_t, int ,int ); listchainfire_t deleteFire (listchainfire_t, int ,int );
listchainfire_t freeListFire (listchainfire_t ); listchainfire_t freeListFire (listchainfire_t );
listchainfire_t offFire (listchainfire_t, int,int ); listchainfire_t offFire (listchainfire_t, int,int );
void travelFire(listchainfire_t listFire); void travelFire(listchainfire_t );
void readFapFromFile(char * filename); void readFapFromFile(char * filename);
void nextFire(listchainfire_t ); void nextFire(listchainfire_t );
listchainfire_t probabilitySpreadFire( listchainfire_t, listchainfire_t);
listchainfire_t spreadFire (listchainfire_t );
booleen_t winGame(listchainfire_t );
......
...@@ -10,9 +10,8 @@ int main(){ ...@@ -10,9 +10,8 @@ int main(){
readMapFromFile("map.txt"); readMapFromFile("map.txt");
readFapFromFile("markov.txt"); readFapFromFile("markov.txt");
fireList = startFire(fireList,10,MAPSIZE); fireList = startFire(fireList,10,MAPSIZE);
travelFire(fireList);
nextFire(fireList);
nextFire(fireList); nextFire(fireList);
nextFire(fireList); nextFire(fireList);
mainLoop(); mainLoop();
} }
\ No newline at end of file
...@@ -5,6 +5,9 @@ ...@@ -5,6 +5,9 @@
#define MAPSIZE 20 #define MAPSIZE 20
#define TREE 1
#define WATER 2
extern int map[MAPSIZE][MAPSIZE]; extern int map[MAPSIZE][MAPSIZE];
void readMapFromFile(char * filename); void readMapFromFile(char * filename);
......
...@@ -12,6 +12,10 @@ void initPlayer(){ ...@@ -12,6 +12,10 @@ void initPlayer(){
player.currentWater = player.waterMax; player.currentWater = player.waterMax;
player.speed = 1; player.speed = 1;
player.isMoving = 0; player.isMoving = 0;
player.HPMax = 3;
player.currentHP = player.HPMax;
player.invisible = 0;
player.invisibleTime = 5;
} }
int giveCaseBelowPosition(int x, int y){ int giveCaseBelowPosition(int x, int y){
...@@ -20,128 +24,154 @@ int giveCaseBelowPosition(int x, int y){ ...@@ -20,128 +24,154 @@ int giveCaseBelowPosition(int x, int y){
return map[y2][x2]; return map[y2][x2];
} }
int collisionsLeftPlayer(){ int getPositionXInMap(int x){
int collision = 0; int x2 = x/CELLSIZE;
int dotTopLeft = giveCaseBelowPosition(player.x, player.y); return x2;
int dotDownLeft = giveCaseBelowPosition(player.x, player.y+player.h);
//collision window
if(player.x <= 0){
collision = 1;
} }
//collision tree
if(dotTopLeft==1 || dotDownLeft==1){ int getPositionYInMap(int y){
collision = 1; int y2 = y/CELLSIZE;
return y2;
} }
//collision water
if(dotTopLeft==2 || dotDownLeft==2){ int checkCollisionsTypeGround(int dot1, int dot2, int typeGround){
collision = 1; int coll = 0;
if(dot1==typeGround || dot2==typeGround){
coll = 1;
} }
return collision; return coll;
} }
int collisionsRightPlayer(){ int collisionsCaseSolid(int dot1, int dot2){
int collision = 0; return checkCollisionsTypeGround(dot1, dot2, TREE)
int dotTopRight = giveCaseBelowPosition(player.x+player.w, player.y); || checkCollisionsTypeGround(dot1, dot2, WATER);
int dotDownRight = giveCaseBelowPosition(player.x+player.w, player.y+player.h);
//collision window
if(player.x + player.w >= MAPSIZE * CELLSIZE){
collision = 1;
} }
//collision tree
if(dotTopRight==1 || dotDownRight==1){ /*int collisionsWindow(){
collision = 1;
} }*/
//collision water
if(dotTopRight==2 || dotDownRight==2){ void checkCollisionsFire(int dot1, int dot2){
collision = 1; if(player.invisible==0 && (dot1==1 || dot2==1) && player.currentHP>0){
player.currentHP = player.currentHP - 1;
player.invisible = 1;
player.timeLastHitFire = (int)timer/1000;
} }
return collision;
} }
int collisionsUpPlayer(){ int collisionsLeftPlayer(int dot1, int dot2){
int collision = 0; int collisionWindow = 0;
int dotTopRight = giveCaseBelowPosition(player.x+player.w, player.y); int collisionCaseSolid = 0;
int dotTopLeft = giveCaseBelowPosition(player.x, player.y);
//collision window //collision window
if(player.y <= 0){ if(player.x <= 0){
collision = 1; collisionWindow = 1;
} }
//collision tree //collisions
if(dotTopRight==1 || dotTopLeft==1){ collisionCaseSolid = collisionsCaseSolid(dot1, dot2);
collision = 1; return collisionWindow || collisionCaseSolid;
} }
//collision water
if(dotTopRight==2 || dotTopLeft==2){ int collisionsRightPlayer(int dot1, int dot2){
collision = 1; int collisionWindow = 0;
int collisionCaseSolid = 0;
//collision window
if(player.x + player.w >= MAPSIZE * CELLSIZE){
collisionWindow = 1;
} }
return collision; //collisions
collisionCaseSolid = collisionsCaseSolid(dot1, dot2);
return collisionWindow || collisionCaseSolid;
} }
int collisionsDownPlayer(){ int collisionsUpPlayer(int dot1, int dot2){
int collision = 0; int collisionWindow = 0;
int dotDownRight = giveCaseBelowPosition(player.x+player.w, player.y+player.h); int collisionCaseSolid = 0;
int dotDownLeft = giveCaseBelowPosition(player.x, player.y+player.h);
//collision window //collision window
if(player.y + player.h >= MAPSIZE * CELLSIZE){ if(player.y <= 0){
collision = 1; collisionWindow = 1;
} }
//collision tree //collisions solide like tree or water or rock(in the future)
if(dotDownRight==1 || dotDownLeft==1){ collisionCaseSolid = collisionsCaseSolid(dot1, dot2);
collision = 1; return collisionWindow || collisionCaseSolid;
} }
//collision water
if(dotDownRight==2 || dotDownLeft==2){ int collisionsDownPlayer(int dot1, int dot2){
collision = 1; int collisionWindow = 0;
int collisionCaseSolid = 0;
//collision window
if(player.y + player.h >= MAPSIZE * CELLSIZE){
collisionWindow = 1;
} }
return collision; //collisions
collisionCaseSolid = collisionsCaseSolid(dot1, dot2);
return collisionWindow || collisionCaseSolid;
} }
void moveRightPlayer(){ void moveRightPlayer(){
if(!collisionsRightPlayer()){
player.x = player.x + player.speed; player.x = player.x + player.speed;
} }
}
void moveLeftPlayer(){ void moveLeftPlayer(){
if(!collisionsLeftPlayer()){
player.x = player.x - player.speed; player.x = player.x - player.speed;
} }
}
void moveUpPlayer(){ void moveUpPlayer(){
if(!collisionsUpPlayer()){
player.y = player.y - player.speed; player.y = player.y - player.speed;
} }
}
void moveDownPlayer(){ void moveDownPlayer(){
if(!collisionsDownPlayer()){
player.y = player.y + player.speed; player.y = player.y + player.speed;
} }
}
void manageMovement(){ 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]){ if(keys[PLAYER_UP]){
if(!collisionsUpPlayer(dotTopRight, dotTopLeft)){
moveUpPlayer(); moveUpPlayer();
checkCollisionsFire(fireTopRight, fireTopLeft);
player.isMoving = 1; player.isMoving = 1;
player.direction = PLAYER_UP; player.direction = PLAYER_UP;
} }
}
else if(keys[PLAYER_DOWN]){ else if(keys[PLAYER_DOWN]){
if(!collisionsDownPlayer(dotDownRight, dotDownLeft)){
moveDownPlayer(); moveDownPlayer();
checkCollisionsFire(fireDownRight, fireDownLeft);
player.isMoving = 1; player.isMoving = 1;
player.direction = PLAYER_DOWN; player.direction = PLAYER_DOWN;
} }
}
else if(keys[PLAYER_LEFT]){ else if(keys[PLAYER_LEFT]){
if(!collisionsLeftPlayer(dotTopLeft, dotDownLeft)){
moveLeftPlayer(); moveLeftPlayer();
checkCollisionsFire(fireTopLeft, fireDownLeft);
player.isMoving = 1; player.isMoving = 1;
player.direction = PLAYER_LEFT; player.direction = PLAYER_LEFT;
} }
}
else if(keys[PLAYER_RIGHT]){ else if(keys[PLAYER_RIGHT]){
if(!collisionsRightPlayer(dotTopRight, dotDownRight)){
moveRightPlayer(); moveRightPlayer();
checkCollisionsFire(fireTopRight, fireDownRight);
player.isMoving = 1; player.isMoving = 1;
player.direction = PLAYER_RIGHT; player.direction = PLAYER_RIGHT;
} }
}
else player.isMoving = 0; else player.isMoving = 0;
//
if(player.invisible==1){
if((int)timer/1000 - player.timeLastHitFire > player.invisibleTime){
player.invisible = 0;
}
}
} }
int selectStateHover(){ int selectStateHover(){
...@@ -153,7 +183,6 @@ int selectStateHover(){ ...@@ -153,7 +183,6 @@ int selectStateHover(){
return stateHover; return stateHover;
} }
void pourWater(int x, int y){ void pourWater(int x, int y){
int onFire = searchFire(fireList, x, y); int onFire = searchFire(fireList, x, y);
if(player.currentWater>0){ if(player.currentWater>0){
......
...@@ -19,6 +19,11 @@ typedef struct player{ ...@@ -19,6 +19,11 @@ typedef struct player{
int speed; int speed;
int isMoving; int isMoving;
int direction; int direction;
int HPMax;
int currentHP;
int invisible;
int invisibleTime;
int timeLastHitFire;
} player_t; } player_t;
extern player_t player; extern player_t player;
......
...@@ -241,6 +241,25 @@ void drawPlayerWaterLevel(){ ...@@ -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(){ void drawScore(){
SDL_Rect rect; SDL_Rect rect;
rect.h = screenDimension.h/6; rect.h = screenDimension.h/6;
...@@ -250,7 +269,7 @@ void drawScore(){ ...@@ -250,7 +269,7 @@ void drawScore(){
SDL_RenderCopy(renderer, scoreTexture, NULL, &rect); SDL_RenderCopy(renderer, scoreTexture, NULL, &rect);
rect.y += rect.h; rect.y += rect.h;
char str[10]; char str[10];
sprintf(str, "%d", score); //sprintf(str, "%d", score);
SDL_Color textColor = {237,222,17}; SDL_Color textColor = {237,222,17};
SDL_Surface * surface = TTF_RenderText_Solid(robotoFont, str, textColor); SDL_Surface * surface = TTF_RenderText_Solid(robotoFont, str, textColor);
SDL_Texture * texture = SDL_CreateTextureFromSurface(renderer, surface); SDL_Texture * texture = SDL_CreateTextureFromSurface(renderer, surface);
...@@ -266,7 +285,8 @@ void drawTime(){ ...@@ -266,7 +285,8 @@ void drawTime(){
SDL_RenderCopy(renderer, scoreTexture, NULL, &rect); SDL_RenderCopy(renderer, scoreTexture, NULL, &rect);
rect.y += rect.h; rect.y += rect.h;
char str[10]; 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_Color textColor = {237,222,17};
SDL_Surface * surface = TTF_RenderText_Solid(robotoFont, str, textColor); SDL_Surface * surface = TTF_RenderText_Solid(robotoFont, str, textColor);
SDL_Texture * texture = SDL_CreateTextureFromSurface(renderer, surface); SDL_Texture * texture = SDL_CreateTextureFromSurface(renderer, surface);
...@@ -280,6 +300,7 @@ void drawGame(){ ...@@ -280,6 +300,7 @@ void drawGame(){
drawPlayer(); drawPlayer();
drawFire(); drawFire();
drawPlayerWaterLevel(); drawPlayerWaterLevel();
drawPlayerHP();
drawScore(); drawScore();
drawTime(); drawTime();
SDL_RenderPresent(renderer); SDL_RenderPresent(renderer);
...@@ -365,16 +386,16 @@ void mainLoop(){ ...@@ -365,16 +386,16 @@ void mainLoop(){
delta = (a - b); delta = (a - b);
if (delta > 1000/FPS_TO_GET){ if (delta > 1000/FPS_TO_GET){
timer += delta; timer += delta;
printf("timer : %f\n", timer/1000); printf("%d\n", (int)timer % 1000);
b = a; b = a;
printf("fps : %f", 1000/delta);
switch (gameState){ switch (gameState){
case MENU: case MENU:
drawMenu(); drawMenu();
break; break;
case GAME: case GAME:
if ((int)timer/1000 % 5 == 0){ if ((int)timer % (UPDATETIME * 1000) < 10){
nextFire(fireList); nextFire(fireList);
fireList=spreadFire(fireList);
} }
drawGame(); drawGame();
break; break;
......
...@@ -12,6 +12,7 @@ extern SDL_Window *window; ...@@ -12,6 +12,7 @@ extern SDL_Window *window;
extern SDL_Renderer *renderer; extern SDL_Renderer *renderer;
extern SDL_DisplayMode screenDimension; extern SDL_DisplayMode screenDimension;
extern SDL_Rect buttonRect; extern SDL_Rect buttonRect;
extern float timer;
void drawHover(int x, int y); void drawHover(int x, int y);
void mainLoop(); void mainLoop();
......
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 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 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 1 1 0 0 0 0 0 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
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
File added
#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
...@@ -63,3 +63,35 @@ long long int MapToBinary(int ** map) ...@@ -63,3 +63,35 @@ long long int MapToBinary(int ** map)
} }
return binary; 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
...@@ -10,5 +10,6 @@ void printMap(); ...@@ -10,5 +10,6 @@ void printMap();
void initMap(); void initMap();
void writeMap(char* filename); void writeMap(char* filename);
long long int MapToBinary(int ** map); long long int MapToBinary(int ** map);
void chargeNiveauFichier(char *, int **, int);
#endif #endif
\ No newline at end of file
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment