This commit is contained in:
flo 2017-02-01 22:23:54 +01:00
parent f19f8172ca
commit bc9da15a32
2 changed files with 70 additions and 24 deletions

View File

@ -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);

View File

@ -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()
{