diff --git a/travail_de_groupe/chef_oeuvre/src/fire.c b/travail_de_groupe/chef_oeuvre/src/fire.c index 1ad72f870db3bd0d3c4d43ebbea64531f5a61115..971d301c518013c7456e2563ca8121d00e462be8 100644 --- a/travail_de_groupe/chef_oeuvre/src/fire.c +++ b/travail_de_groupe/chef_oeuvre/src/fire.c @@ -190,4 +190,51 @@ void nextFire(listchainfire_t listFire){ 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; + printf("proba:%d\n", probability); + printf("listfire1: x%d,y%d\n",(listFire->fire).x,(listFire->fire).y); + + 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); + } + printf("listtemp1: x%d,y%d\n",(listTemporary->fire).x,(listTemporary->fire).y); + printf("listfire2: x%d,y%d\n",(listFire->fire).x,(listFire->fire).y); + 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); + printf("listfire ajout: x%d,y%d\n",(listFire->fire).x,(listFire->fire).y); + } + listTemporary=listTemporary->next; + } + return listFire; +} \ 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 84686a86881bd2a07895aea29ca00e907e8b387a..10ea4c300866e0e8df588e7fefbb8660c5ba6dcc 100644 --- a/travail_de_groupe/chef_oeuvre/src/fire.h +++ b/travail_de_groupe/chef_oeuvre/src/fire.h @@ -45,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 ); + diff --git a/travail_de_groupe/chef_oeuvre/src/render.c b/travail_de_groupe/chef_oeuvre/src/render.c index bcc85ad59639921ad3dc30517a143c10781e8da1..95d4c559eeb16f28c3a6bdd8c9e26ea4b3f2a417 100644 --- a/travail_de_groupe/chef_oeuvre/src/render.c +++ b/travail_de_groupe/chef_oeuvre/src/render.c @@ -385,7 +385,7 @@ void mainLoop(){ delta = (a - b); if (delta > 1000/FPS_TO_GET){ timer += delta; - //printf("timer : %f\n", timer/1000); + printf("timer : %d\n", (int)timer%1000); b = a; //printf("fps : %f", 1000/delta); switch (gameState){ @@ -393,8 +393,10 @@ void mainLoop(){ drawMenu(); break; case GAME: - if ((int)timer/1000 % UPDATETIME == 0){ + if ((int)timer % 1000 == 0){ nextFire(fireList); + fireList=spreadFire(fireList); + printf("after spread fire : x%d,y%d\n",(fireList->fire).x,(fireList->fire).y); } drawGame(); break;