From 7595620092d5582590054c097a0a40be36806a51 Mon Sep 17 00:00:00 2001 From: flo Date: Mon, 13 Feb 2017 07:38:49 +0100 Subject: [PATCH] new things --- include/voiture.h | 4 +- src/voiture.c | 145 +++++----------------------------------------- 2 files changed, 16 insertions(+), 133 deletions(-) diff --git a/include/voiture.h b/include/voiture.h index 579673e..0ba987f 100644 --- a/include/voiture.h +++ b/include/voiture.h @@ -5,7 +5,7 @@ unsigned int compteur; // tourne a 15 Hz - unsigned int seed = 143; + unsigned int seed=12345; //char obstacles[100]; // permet d'avoir de l'aléatoire pondéré pour les obstacles/bonus @@ -42,6 +42,6 @@ void new_frame(void); void generate_obstacle(char ID_corridor); - unsigned short rand(int min, int max); + unsigned int rand(int min, int max); #endif diff --git a/src/voiture.c b/src/voiture.c index 5db5fe0..55f8152 100644 --- a/src/voiture.c +++ b/src/voiture.c @@ -12,14 +12,13 @@ Voiture voiture; // structure Voiture & caracteristiques void init() { - voiture.corridor = 2; voiture.money = 0; voiture.essence = 20; voiture.distance = 0; voiture.life = 1; voiture.speed = 1; -voiture.decalx = 35; +voiture.decalx = 25; compteur = 0; for(int i = 0; i<4; i++) @@ -73,14 +72,11 @@ timer_start(TIMER_USER, 16, Clock_Hz, new_frame, 0); while(1) { - //key = getkey(); - if (voiture.life <= 0) { key = KEY_EXIT; - //timer_stop(TIMER_USER); } - else + else { key = getkey(); } @@ -88,10 +84,11 @@ while(1) switch(key) { - case KEY_UP : voiture.corridor=(voiture.corridor<=1 ? 1 : voiture.corridor-1); break; - case KEY_DOWN : voiture.corridor=(voiture.corridor>=4 ? 4 : voiture.corridor+1); break; - case KEY_EXIT : timer_stop(TIMER_USER); /*rtc_cb_end(RTC_id);*/ return 1; + case KEY_UP : voiture.corridor = (voiture.corridor<=1 ? 1 : voiture.corridor-1); break; + case KEY_DOWN : voiture.corridor = (voiture.corridor>=4 ? 4 : voiture.corridor+1); break; + case KEY_EXIT : timer_stop(TIMER_USER); return 1; } + } } @@ -133,9 +130,9 @@ if(obstacle[voiture.corridor-1].coordx < voiture.decalx - 2 && obstacle[voiture. { case 1 : voiture.life--; break; case 2 : voiture.speed++; break; - case 3 : voiture.speed = (voiture.speed <= 0 ? 1 : voiture.speed + 1); break; + case 3 : voiture.speed = (voiture.speed <= 1 ? 1 : voiture.speed -1); break; case 4 : voiture.life++; break; - case 5 : voiture.decalx = 74; break; + case 5 : voiture.decalx = (compteur%150 ? 84 : 25); break; case 6 : voiture.essence = 20; break; case 7 : voiture.money++; break; case 8 : voiture.money += 2; break; @@ -157,7 +154,7 @@ if (voiture.life <= 0) { dclear(); dtext(10,10,"Vous etes mort"); - dtext(1,20,"Appuyez sur une touche"); + dtext(1,20,"Appuyez sur touche"); dupdate(); return; } @@ -165,7 +162,7 @@ if (voiture.life <= 0) // dessin des lignes for(i = 1; i < 4 ; i++) { - for(j = compteur%3; j < 128; j += 4) + for(j = compteur%2; j < 128; j += 4) { dline(2*j, i*11+10, 2*j+3, i*11+10, Color_Black); } @@ -183,7 +180,7 @@ void generate_obstacle(char ID_corridor) { unsigned char alea = rand(0, 100); -unsigned char proba[9]={30,50,3,2,4,2,6,2,1}; +unsigned char proba[9]={25,57,3,2,3,2,5,2,1}; unsigned char i, sum; sum = 0; @@ -201,124 +198,10 @@ obstacle[(int)ID_corridor].coordx = 128 + rand(0, 80); return; } -unsigned short rand(int min, int max) +unsigned int rand(int min, int max) { -seed += 200; -seed *= seed; -seed = (seed & 0x00FFFF00)>>8; +seed += seed%897255; +seed = seed*1234589 + 135897; return seed%(max-min) + min; } - -/*int Jeu() -{ - -extern Image img_formel1; -extern Image img_obstacle; - -unsigned char decal=1; -short decalx_car=24; -int start_time=0; -int speed=50; -unsigned int i=0,j=0; -char appuie=0; -int score=0; -char vie=10; -int max=100; -int money=0; -short essence=100; - -init_obstacle(); - -while(1) -{ -dclear(); -speed=(score%5==0 ? speed+1: speed); -draw_lines(i); - -dimage(decalx_car-19, 11*decal, &img_formel1); - -for(j=0;j<4;j++) -{ -obstacle[j].coordx-=2+speed/25; -// ML_bmp_or(*(OBSTACLES+obstacle[j].num_obst), obstacle[j].coordx, 11*(j+1), 10, 10); -dimage_part(obstacle[j].coordx, 11*(j+1), &img_obstacle, 10*obstacle[j].num_obst, 10*obstacle[j].num_obst +10, 10, 10); - -if(obstacle[j].coordx<0) -{ -obstacle[j].num_obst=obstacles[rand()%100]; -obstacle[j].coordx=128+40*j; -} -if(obstacle[0].num_obst==1 && obstacle[1].num_obst==1 && obstacle[2].num_obst==1 && obstacle[3].num_obst==1) obstacle[0].num_obst=0; -} - -if(obstacle[decal-1].coordxdecalx_car-20 && obstacle[decal-1].num_obst>0) -{ -switch(obstacle[decal-1].num_obst) -{ -case 1 : if(vie==1) -{ -mort(score, 0); return 1; -} -else vie--; break; -case 2 : speed+=25; break; -case 3 : speed-=25; break; -case 4 : vie++; break; -// case 5 : decalx_car=74; obstacle[decal-1].num_obst=0;break; -case 6 : essence=max; break; -case 7 : money++; break; -case 8 : money+=2; break; -} - -// if(decalx_car==74 && (int)(RTC_getTicks()-start_time)>192) -// { -// decalx_car=24; -// } - -obstacle[decal-1].num_obst=0; -} -if(essence<=0) -{ -mort(score, 1); -return 1; -} -essence=(i%26==0 ? essence-10 : essence); //chaque seconde 10 d'essence partent - -//dupdate(); -dprint(1, 1, "metre : %d vie : %d", score, vie); - -dprint(1,56,"essence %d/%d Argent %d ", essence, max, money); - -timer_start(TIMER_USER, 80, Clock_Hz, vide, 0); - -//while(1) { - -if(key==KEY_UP && appuie==0) // KEY_CTRL_UP -{ -decal=(decal<=1 ? 1 : decal-1); -appuie=1; -break; -} -else if(key==KEY_DOWN && appuie==0) //KEY_CTRL_DOWN -{ -decal=(decal>=4 ? 4 : decal+1); -appuie=1; -break; -} -else if (key==KEY_NONE) // permet de ne pas rester appuiyer sur la touche (simule le Getkey()) -{ -appuie=0; -break; -} -if(key==KEY_EXIT) //KEY_CTRL_EXIT -{ -timer_stop(TIMER_USER); -return 1; -} -//} - -i+=3; -score=(i%4==0 ? score+2: score); -} -return 1; -}*/