From bc9da15a32c3046c2d997b4ca3a3bfe35a3ee676 Mon Sep 17 00:00:00 2001 From: flo Date: Wed, 1 Feb 2017 22:23:54 +0100 Subject: [PATCH] alea --- include/voiture.h | 15 +++++++-- src/voiture.c | 79 ++++++++++++++++++++++++++++++++++------------- 2 files changed, 70 insertions(+), 24 deletions(-) diff --git a/include/voiture.h b/include/voiture.h index 8dcaa0f..1f66b2e 100644 --- a/include/voiture.h +++ b/include/voiture.h @@ -5,7 +5,18 @@ unsigned int compteur; // tourne a 15 Hz - char obstacles[100]; // permet d'avoir de l'aléatoire pondéré pour les obstacles/bonus +//char obstacles[100]; // permet d'avoir de l'aléatoire pondéré pour les obstacles/bonus + +// obstacle + // 0 = vide + // 1 = mur + // 2 = augmentation vitesse + // 3 = diminution vitesse + // 4 = vie + // 5 = boost avant + // 6 = essence + // 7 = piece 1 + // 8 = piece 2 typedef struct Obstacles { @@ -21,7 +32,7 @@ unsigned int distance; unsigned int life; unsigned char speed; - unsigned char decal_x; + unsigned char decalx; } Voiture; int Menu(void); diff --git a/src/voiture.c b/src/voiture.c index c52c808..050275b 100644 --- a/src/voiture.c +++ b/src/voiture.c @@ -19,14 +19,14 @@ voiture.essence = 100; voiture.distance = 0; voiture.life = 1; voiture.speed = 50; -voiture.decal_x = 15; +voiture.decalx = 35; compteur = 0; for(int i = 0; i<4; i++) -{ - obstacle[i].coordx = -20; - obstacle[i].num_obst = 1; -} + { + obstacle[i].coordx = 130+15*i; + obstacle[i].num_obst = i*2+1; + } } void update_essence() @@ -73,7 +73,7 @@ int Jeu() unsigned short RTC_id; init(); // initialisation du Jeu -timer_start(TIMER_USER, 15, Clock_Hz, new_frame, 0); +timer_start(TIMER_USER, 45, Clock_Hz, new_frame, 0); RTC_id = rtc_cb_add(RTCFreq_1Hz, update_essence, 0); while(1) @@ -103,10 +103,9 @@ int i,j; dclear(); -dimage(voiture.decal_x, 11*voiture.corridor, &img_formel1); +dimage(voiture.decalx-20, 11*voiture.corridor, &img_formel1); + dprint(1, 1, "%d", compteur); -//dprint(57, 1, "e : %d", voiture.essence); -dprint(1, 57, "%d", rand(0,101,compteur)); //Jauge d'essence dline(25+voiture.essence/5, 58, 45, 58, Color_Black); @@ -114,15 +113,33 @@ dreverse_area(24, 57, 46, 59); //generation de chacun des obstacles for(i=0; i<4; i++) -{ - if(obstacle[i].coordx < -10) { - generate_obstacle(i); - } + if(obstacle[i].coordx < -10) + { + generate_obstacle(i); + } dimage_part(obstacle[i].coordx, 11*i+11, &img_obstacle, 10*obstacle[i].num_obst, 0, 10, 10); - obstacle[i].coordx--; -} + + obstacle[i].coordx-=1; + } + +//hit box +if(obstacle[voiture.corridor-1].coordx < voiture.decalx - 2 && obstacle[voiture.corridor-1].coordx > voiture.decalx - 20) + { + switch(obstacle[voiture.corridor-1].num_obst) + { + case 1 : voiture.life --; break; + //case 2 : speed+=25; break; + //case 3 : speed-=25; break; + case 4 : voiture.life++; break; + //case 5 : voiture.decalx = 74; /*obstacle[voiture.decalx-1].num_obst = 0;*/ break; + case 6 : voiture.essence = 100; break; + case 7 : voiture.money++; break; + case 8 : voiture.money+=2; break; + } + obstacle[voiture.corridor-1].num_obst = 0; + } if (voiture.essence == 0) { @@ -141,7 +158,7 @@ if (voiture.life == 0) // dessin des lignes for(i=1;i<4;i++) { - for(j=compteur%2;j<128;j+=4) + for(j=compteur%4;j<128;j+=4) { dline(2*j, i*11+10, 2*j+3, i*11+10, Color_Black); } @@ -165,11 +182,11 @@ return; void generate_obstacle(char ID_corridor) { -unsigned char alea = rand(0, 100 ,compteur); -unsigned char proba[9]={30,40,5,5,3,3,9,3,2}; +unsigned char alea = rand(0, 100, ++compteur); + +unsigned char proba[9]={40,35,3,2,6,2,10,2,1}; unsigned char i, sum; -dprint(15, 57, "%c", alea); sum = 0; i = 0; @@ -179,17 +196,35 @@ while(sum<=alea) i++; } -obstacle[ID_corridor].num_obst = i; -obstacle[ID_corridor].coordx = 128 + rand(0, 20 ,compteur); +obstacle[(int)ID_corridor].num_obst = i; +obstacle[(int)ID_corridor].coordx = 128 + rand(0, 60, compteur); return; } int rand(int min, int max, int seed) { - return ((++seed%2)*(--seed%50)+3)%(max-min) + min; +for(int i=0 ; i<19; i++) + { + seed = (seed*69069 + 187)%65536; + seed = seed>>8; + } + +return seed%(max - min) + min; } +// int rand(int min, int max, int seed) +// { +// int nombre=5; +// for(int i=0 ; i<19; i++) +// { +// nombre = (nombre*seed + 37)%143; +// seed = (seed+17)%31; +// } +// +// return nombre%(max - min) + min; +// } + /*int Jeu() {