ca avance
Before Width: | Height: | Size: 875 B |
BIN
images/Mort.png
Before Width: | Height: | Size: 553 B |
Before Width: | Height: | Size: 338 B |
Before Width: | Height: | Size: 354 B |
Before Width: | Height: | Size: 359 B |
BIN
images/Thumbs.db
Before Width: | Height: | Size: 460 B |
BIN
images/boost.png
Before Width: | Height: | Size: 205 B |
Before Width: | Height: | Size: 209 B |
BIN
images/f1.png
Before Width: | Height: | Size: 452 B |
Before Width: | Height: | Size: 225 B |
BIN
images/menu.png
Before Width: | Height: | Size: 1.9 KiB |
Before Width: | Height: | Size: 2.7 KiB |
Before Width: | Height: | Size: 206 B |
Before Width: | Height: | Size: 209 B |
Before Width: | Height: | Size: 204 B |
Before Width: | Height: | Size: 210 B |
BIN
images/stop.png
Before Width: | Height: | Size: 202 B |
BIN
images/vide.png
Before Width: | Height: | Size: 161 B |
BIN
images/vie.png
Before Width: | Height: | Size: 201 B |
|
@ -3,6 +3,7 @@
|
|||
|
||||
unsigned int key;
|
||||
char decal=1;
|
||||
char anim=0;
|
||||
|
||||
char obstacles[100]; // permet d'avoir de l'aléatoire pondéré pour les obstacles/bonus
|
||||
|
||||
|
|
BIN
lib/libfx.a
320
src/voiture.c
|
@ -10,34 +10,47 @@ Obstacles obstacle[4];
|
|||
|
||||
void new_frame()
|
||||
{
|
||||
extern Image img_formel1;
|
||||
extern Image img_obstacle;
|
||||
|
||||
extern Image img_formel1;
|
||||
extern Image img_obstacle;
|
||||
int i,j;
|
||||
|
||||
dclear();
|
||||
dclear();
|
||||
// dessin des lignes
|
||||
for(i=1;i<4;i++)
|
||||
{
|
||||
for(j=anim;j<128;j+=4)
|
||||
{
|
||||
dline(2*j, i*11+10, 2*j+3, i*11+10, Color_Black);
|
||||
}
|
||||
}
|
||||
|
||||
dimage(19, 11*decal, &img_formel1);
|
||||
dimage(1, 1, &img_obstacle);
|
||||
anim=(anim==0 ? 1 : 0);
|
||||
|
||||
dupdate();
|
||||
dline(1, 10, 128, 10, Color_Black);
|
||||
dline(1, 54, 128, 54, Color_Black);
|
||||
|
||||
dimage(19, 11*decal, &img_formel1);
|
||||
|
||||
dimage_part(1, 1, &img_obstacle, 10*7, 0, 10, 10);
|
||||
|
||||
dupdate();
|
||||
}
|
||||
|
||||
int Jeu()
|
||||
{
|
||||
while(1)
|
||||
while(1)
|
||||
{
|
||||
timer_start(TIMER_USER, 25, Clock_Hz, new_frame, 0);
|
||||
timer_start(TIMER_USER, 15, Clock_Hz, new_frame, 0);
|
||||
while(1)
|
||||
{
|
||||
key = getkey();
|
||||
|
||||
switch(key)
|
||||
{
|
||||
case KEY_UP : decal=(decal<=1 ? 1 : decal-1); break;
|
||||
case KEY_DOWN : decal=(decal>=4 ? 4 : decal+1); break;
|
||||
case KEY_EXIT : timer_stop(TIMER_USER); return 1;
|
||||
case KEY_UP : decal=(decal<=1 ? 1 : decal-1); break;
|
||||
case KEY_DOWN : decal=(decal>=4 ? 4 : decal+1); break;
|
||||
case KEY_EXIT : timer_stop(TIMER_USER); return 1;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -46,37 +59,37 @@ int Jeu()
|
|||
|
||||
int main(void)
|
||||
{
|
||||
short menu=0;
|
||||
short menu=0;
|
||||
|
||||
extern Image img_menu;
|
||||
extern Image img_menu;
|
||||
|
||||
while(1)
|
||||
while(1)
|
||||
{
|
||||
dclear();
|
||||
|
||||
dimage(0, 0, &img_menu);
|
||||
|
||||
dreverse_area(62+16*menu,23+21*menu,108+16*menu,39+21*menu);
|
||||
|
||||
dupdate();
|
||||
|
||||
key=getkey();
|
||||
|
||||
switch(key)
|
||||
{
|
||||
dclear();
|
||||
case KEY_UP : case KEY_DOWN : menu=!menu; break;
|
||||
case KEY_EXE :
|
||||
|
||||
dimage(0, 0, &img_menu);
|
||||
|
||||
dreverse_area(62+16*menu,23+21*menu,108+16*menu,39+21*menu);
|
||||
|
||||
dupdate();
|
||||
|
||||
key=getkey();
|
||||
|
||||
switch(key)
|
||||
switch(menu)
|
||||
{
|
||||
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;
|
||||
case 0 : Jeu(); break;
|
||||
case 1 : /*garage();*/ break;
|
||||
}
|
||||
}
|
||||
break;
|
||||
|
||||
case KEY_EXIT : return 1;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/*void garage(void)
|
||||
|
@ -95,32 +108,32 @@ 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();
|
||||
}
|
||||
for(i=0;i<choice[0];i++)
|
||||
{
|
||||
ML_rectangle(58+9*i,33,62+9*i,37,1,1,2);
|
||||
ML_display_vram();
|
||||
}
|
||||
|
||||
for(i=0;i<choice[1];i++)
|
||||
{
|
||||
ML_rectangle(58+9*i,43,62+9*i,47,1,1,2);
|
||||
ML_display_vram();
|
||||
}
|
||||
for(i=0;i<choice[1];i++)
|
||||
{
|
||||
ML_rectangle(58+9*i,43,62+9*i,47,1,1,2);
|
||||
ML_display_vram();
|
||||
}
|
||||
|
||||
PrintMini(5,32+10*choix,"->",0);
|
||||
|
||||
sprintf(buffer,"argent %d prix %d" , 500, 500);
|
||||
PrintMini(11,17,buffer,0);
|
||||
|
||||
GetKey(&key);
|
||||
GetKey(&key);
|
||||
|
||||
switch(key)
|
||||
{
|
||||
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 ;
|
||||
}
|
||||
}
|
||||
switch(key)
|
||||
{
|
||||
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 ;
|
||||
}
|
||||
}
|
||||
}*/
|
||||
|
||||
/*int Jeu()
|
||||
|
@ -144,95 +157,95 @@ short essence=100;
|
|||
init_obstacle();
|
||||
|
||||
while(1)
|
||||
{
|
||||
dclear();
|
||||
speed=(score%5==0 ? speed+1: speed);
|
||||
draw_lines(i);
|
||||
{
|
||||
dclear();
|
||||
speed=(score%5==0 ? speed+1: speed);
|
||||
draw_lines(i);
|
||||
|
||||
dimage(decalx_car-19, 11*decal, &img_formel1);
|
||||
dimage(decalx_car-19, 11*decal, &img_formel1);
|
||||
|
||||
for(j=0;j<4;j++)
|
||||
{
|
||||
obstacle[j].coordx-=2+speed/25;
|
||||
{
|
||||
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);
|
||||
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[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].coordx<decalx_car && obstacle[decal-1].coordx>decalx_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(obstacle[decal-1].coordx<decalx_car && obstacle[decal-1].coordx>decalx_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;
|
||||
// }
|
||||
// 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
|
||||
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);
|
||||
//dupdate();
|
||||
dprint(1, 1, "metre : %d vie : %d", score, vie);
|
||||
|
||||
dprint(1,56,"essence %d/%d Argent %d ", essence, max, money);
|
||||
dprint(1,56,"essence %d/%d Argent %d ", essence, max, money);
|
||||
|
||||
timer_start(TIMER_USER, 80, Clock_Hz, vide, 0);
|
||||
timer_start(TIMER_USER, 80, Clock_Hz, vide, 0);
|
||||
|
||||
//while(1) {
|
||||
//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;
|
||||
}
|
||||
//}
|
||||
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);
|
||||
}
|
||||
i+=3;
|
||||
score=(i%4==0 ? score+2: score);
|
||||
}
|
||||
return 1;
|
||||
}*/
|
||||
|
||||
|
@ -243,15 +256,13 @@ int key=0;
|
|||
dclear();
|
||||
|
||||
while(key == KEY_NONE)
|
||||
{
|
||||
|
||||
{
|
||||
dtext(10,10,"Vous etes mort");
|
||||
|
||||
key = getkey();
|
||||
}
|
||||
|
||||
key = getkey();
|
||||
}
|
||||
|
||||
return;
|
||||
return;
|
||||
}
|
||||
|
||||
void init_obstacle()
|
||||
|
@ -260,37 +271,36 @@ 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++;
|
||||
}
|
||||
{
|
||||
for(i=proba[j];i<proba[j+1];i++)
|
||||
{
|
||||
obstacles[i]=j;
|
||||
}
|
||||
j++;
|
||||
}
|
||||
|
||||
//srand(RTC_getTicks());
|
||||
//srand(RTC_getTicks());
|
||||
|
||||
for(i=0;i<4;i++)
|
||||
{
|
||||
obstacle[i].num_obst=obstacles[rand()%100];
|
||||
obstacle[i].coordx=128+rand() % (128 - 30) + 30;
|
||||
}
|
||||
{
|
||||
obstacle[i].num_obst=obstacles[rand()%100];
|
||||
obstacle[i].coordx=128+rand() % (128 - 30) + 30;
|
||||
}
|
||||
}
|
||||
|
||||
void draw_lines(int decalx)
|
||||
{
|
||||
int i,j;
|
||||
for(i=1;i<4;i++)
|
||||
{
|
||||
for(j=0;j<128;j+=4)
|
||||
{
|
||||
dline(2*j-(decalx%4), i*11+10, 2*j+3-(decalx%4), i*11+10, Color_Black);
|
||||
{
|
||||
for(j=0;j<128;j+=4)
|
||||
{
|
||||
dline(2*j-(decalx%4), i*11+10, 2*j+3-(decalx%4), i*11+10, Color_Black);
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
dline(1, 10, 128, 10, Color_Black);
|
||||
dline(1, 54, 128, 54, Color_Black);
|
||||
dline(1, 10, 128, 10, Color_Black);
|
||||
dline(1, 54, 128, 54, Color_Black);
|
||||
|
||||
dupdate();
|
||||
}
|
||||
|
|