Mr propre

This commit is contained in:
flo 2017-02-01 20:36:00 +01:00
parent bf66962b0e
commit f19f8172ca
2 changed files with 110 additions and 142 deletions

View File

@ -26,8 +26,13 @@
int Menu(void);
int Jeu(void);
void init_obstacle(void);
void new_frame(void);
void generate_obstacle(char ID_corridor);
void mort(void);
void garage(void);
int rand(int min, int max, int seed);
int recur(int seed);
#endif

View File

@ -7,13 +7,12 @@
#include "clock.h"
#include "timer.h"
#define mod(x,y) (x-y*(int)(x/y))
Obstacles obstacle[4]; // struture Obstacle & attributs
Voiture voiture; // structure Voiture & caracteristiques
void init()
{
voiture.corridor = 2;
voiture.money = 0;
voiture.essence = 100;
@ -22,65 +21,51 @@ voiture.life = 1;
voiture.speed = 50;
voiture.decal_x = 15;
compteur = 0;
}
int rand(int min, int max, int seed)
for(int i = 0; i<4; i++)
{
return ((seed%33)*(seed%3)+3)%(max-min) + min;
obstacle[i].coordx = -20;
obstacle[i].num_obst = 1;
}
}
void update_essence()
{
voiture.essence -= 2;
voiture.essence -= 1;
}
void new_frame()
int main(void)
{
extern Image img_formel1;
extern Image img_obstacle;
short menu=0;
int i,j;
extern Image img_menu;
dclear();
dimage(voiture.decal_x, 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));
dline(25, 58, 25+(voiture.essence/5), 58, Color_Black);
//dimage_part(1, 1, &img_obstacle, 10*7, 0, 10, 10);
if (voiture.essence == 0)
{
voiture.life = 0;
}
if (voiture.life == 0)
while(1)
{
dclear();
dtext(10,10,"Vous etes mort");
dtext(10,20,"Appuyer sur une touche");
dupdate();
return;
}
// dessin des lignes
for(i=1;i<4;i++)
{
for(j=compteur%2;j<128;j+=4)
dimage(0, 0, &img_menu);
dreverse_area(62+16*menu,23+21*menu,108+16*menu,39+21*menu);
dupdate();
key=getkey();
switch(key)
{
dline(2*j, i*11+10, 2*j+3, i*11+10, Color_Black);
case KEY_UP : case KEY_DOWN : menu=!menu; break;
case KEY_EXE :
switch(menu)
{
case 0 : Jeu(); break;
case 1 : /*garage();*/ break;
}
break;
case KEY_EXIT : return 1;
}
}
dline(1, 10, 128, 10, Color_Black);
dline(1, 54, 128, 54, Color_Black);
dupdate();
compteur++;
}
int Jeu()
@ -109,85 +94,101 @@ while(1)
}
}
int main(void)
void new_frame()
{
short menu=0;
extern Image img_formel1;
extern Image img_obstacle;
extern Image img_menu;
int i,j;
while(1)
dclear();
dimage(voiture.decal_x, 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);
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);
}
dimage_part(obstacle[i].coordx, 11*i+11, &img_obstacle, 10*obstacle[i].num_obst, 0, 10, 10);
obstacle[i].coordx--;
}
if (voiture.essence == 0)
{
voiture.life = 0;
}
if (voiture.life == 0)
{
dclear();
dimage(0, 0, &img_menu);
dreverse_area(62+16*menu,23+21*menu,108+16*menu,39+21*menu);
dtext(10,10,"Vous etes mort");
dtext(1,20,"Appuyez sur une touche");
dupdate();
return;
}
key=getkey();
switch(key)
// dessin des lignes
for(i=1;i<4;i++)
{
for(j=compteur%2;j<128;j+=4)
{
case KEY_UP : case KEY_DOWN : menu=!menu; break;
case KEY_EXE :
switch(menu)
{
case 0 : Jeu(); break;
case 1 : /*garage();*/ break;
}
break;
case KEY_EXIT : return 1;
dline(2*j, i*11+10, 2*j+3, i*11+10, Color_Black);
}
}
dline(1, 10, 128, 10, Color_Black);
dline(1, 54, 128, 54, Color_Black);
dupdate();
compteur++;
}
/*void garage(void)
void mort()
{
unsigned char prix[5]={20,50,90,150,300};
unsigned char choice[2]={0,0};
int i;
char buffer[50];
char choix=0;
int j,k;
while(1)
{
Bdisp_AllClr_DDVRAM();
ML_bmp_or(IMG_GARAGE, 0, 0, 128, 64);
for(i=0;i<choice[0];i++)
{
ML_rectangle(58+9*i,33,62+9*i,37,1,1,2);
ML_display_vram();
dclear();
dtext(10,10,"Vous etes mort");
dupdate();
return;
}
for(i=0;i<choice[1];i++)
void generate_obstacle(char ID_corridor)
{
ML_rectangle(58+9*i,43,62+9*i,47,1,1,2);
ML_display_vram();
unsigned char alea = rand(0, 100 ,compteur);
unsigned char proba[9]={30,40,5,5,3,3,9,3,2};
unsigned char i, sum;
dprint(15, 57, "%c", alea);
sum = 0;
i = 0;
while(sum<=alea)
{
sum+=proba[i];
i++;
}
obstacle[ID_corridor].num_obst = i;
obstacle[ID_corridor].coordx = 128 + rand(0, 20 ,compteur);
return;
}
PrintMini(5,32+10*choix,"->",0);
sprintf(buffer,"argent %d prix %d" , 500, 500);
PrintMini(11,17,buffer,0);
GetKey(&key);
switch(key)
int rand(int min, int max, int seed)
{
case KEY_CTRL_UP : case KEY_CTRL_DOWN : choix=(choix== 1 ? 0 : 1); break;
case KEY_CTRL_EXE : choice[choix]++; break;
case KEY_CTRL_EXIT : return ;
return ((++seed%2)*(--seed%50)+3)%(max-min) + min;
}
}
}*/
/*int Jeu()
{
@ -301,41 +302,3 @@ score=(i%4==0 ? score+2: score);
}
return 1;
}*/
void mort()
{
dclear();
while(key!=KEY_NONE)
{
dtext(10,10,"Vous etes mort");
dupdate();
key = getkey();
}
return;
}
void init_obstacle()
{
int i=0,j=0;
char proba[10]={0,30,70,75,80,83,86,95,98,100};
while(j<9)
{
for(i=proba[j];i<proba[j+1];i++)
{
obstacles[i]=j;
}
j++;
}
//srand(RTC_getTicks());
for(i=0;i<4;i++)
{
obstacle[i].num_obst=obstacles[rand(0,100,compteur)];
obstacle[i].coordx=128+rand(30,128,compteur);
}
}