menu + nouvelle carte + temps calculés + textures

This commit is contained in:
Tituya 2020-07-27 01:32:44 +02:00
parent fd6f92c084
commit a47df461c8
17 changed files with 156 additions and 42 deletions

BIN
AST3.g3a

Binary file not shown.

Binary file not shown.

Before

Width:  |  Height:  |  Size: 102 B

After

Width:  |  Height:  |  Size: 406 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 116 B

After

Width:  |  Height:  |  Size: 418 B

BIN
assets-cg/img/menu.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 21 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 116 B

After

Width:  |  Height:  |  Size: 460 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 102 B

After

Width:  |  Height:  |  Size: 406 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 116 B

After

Width:  |  Height:  |  Size: 461 B

View File

@ -1 +1,4 @@
111001111111100d0d0011111100000111ddd000d0d0000001100000000000000dtd00000e1111111ddd111111111111111100000000000000000l00d0000111111111dd111110100d000110001100000000010100d0001000011000000000d0d00d00000000l0000000000d0d00d00001111dd111000000d0d00111111000011111ddd00d0d00111111000011111ddd00d0d001111110s0011111ddd00d0d0011111111001111111100d0d00111116
10001011111011111111111111000101dd10001111dddd11110000101dd10001000000000001111101dd1aaa1000ccccddd110s00010013331000000000011dddd110010001mmmdd00000100000000010e010t0dd00000011111100011111dddddddd1111k00000001d000111001111111111111101d00000000000111000010000100000000000000010K010000100011100000011110001000010001110000dd11110001011111011111111111117
4
7

View File

@ -1,4 +1,3 @@
1dddddd100111111111111111000000000011111000000000000000000l01100c00000000001aaaaaaa111100c00000000011dddddddddd1001aaaaaaaaa11cccccccccc1001ddddddddd1000000000001331000000aa000000000000s10e1k0000000001ccccccccc111111111113311100000000011001000000000110000000001100b0000000001100000000011t0b00000000011000K0000011111aaaaaaaaa1111111110011111ddddddddd16
12
1

View File

@ -1,4 +1,4 @@
11111111111011111dddd1111100001dd0000dd100000000011s0001dd0d11dd10000000001111001dd0d1111100111100011dd001dt0d10000001dd100011dd001d11d10000001dd100011dd00dd11110011111dd100011dd00000000001dddddd100011dd1111dbd1111ddd111100011ddddddd0dd1d1ddd100000011ddddddd0000d1ddd1e0000011ddddddd1110d1ddd111cccc11dddddddddd0d1ddd111dddd111111111111011111111111116
11111111111011111dddd1111100001dd0000dd100000000011s0001dd0d11dd10000000001111001dd0d111dd00111100011dd001dt0d10000001dd100011dd001d11d10000001dd100011dd00dd11110011111dd100011dd00000000001dddddd100011dd1111dbd1111ddd111100011ddddddd0dd1d1ddd100000011ddddddd0000d1ddd1e0000011ddddddd1110d1ddd111cccc11dddddddddd0d1ddd111dddd111111111111011111111111116
12
7

1
editor/levels/7.lvl Normal file
View File

@ -0,0 +1 @@
111001111111100d0d0011111100000111ddd000d0d0000001100000000000000dtd00000e1111111ddd111111111111111100000000000000000l00d0000111111111dd111110100d000110001100000000010100d0001000011000000000d0d00d00000000l0000000000d0d00d00001111dd111000000d0d00111111000011111ddd00d0d00111111000011111ddd00d0d001111110s0011111ddd00d0d0011111111001111111100d0d00111116

View File

@ -1 +1,2 @@
void check_medal(unsigned int frame_level, int id_level);
void draw_time(int id_level);

View File

@ -84,4 +84,5 @@ LDFLAGS_CG += -Wl,-Map=build-cg/map
#
# FONT.hexa.png = charset:print grid.size:3x5 grid.padding:1
IMG.speedrun.png = profile:p4
IMG.speedrun.png = profile:p2
IMG.menu.png = profile:p4

View File

@ -14,6 +14,8 @@
#define ACCELERATION 0.2
#define MAX_VSPD 9.0
int main(void);
int callback(volatile int *frame_elapsed)
{
*frame_elapsed = 1;
@ -45,6 +47,7 @@ void game(int *id_level, char mode)
float vspd = 1.0;
int vert_spd = 1;
extern bopti_image_t img_speedrun;
set_level(*id_level, level, &start_x, &start_y, &gravity, check_coin, &appear, &disappear);
player_x = start_x;
@ -65,7 +68,7 @@ void game(int *id_level, char mode)
if(!mode) draw_timer(frame);
else draw_timer(framelevel);
if(*id_level==1)
if(*id_level==1 && !mode)
{
dprint(85,180,C_RGB(245,245,0),"SHIFT");
dprint(167,19,C_RGB(110,110,110),"Ne touchez pas ces blocs !");
@ -75,7 +78,7 @@ void game(int *id_level, char mode)
}
dprint(150,100,C_GREEN,"%d",player_x);
dprint(150,120,C_GREEN,"%d",player_y);
dprint_opt(340, 0, C_RGB(255,190,0), C_BLACK, DTEXT_LEFT, DTEXT_TOP, "Coin : %d", coin);
if(!mode) dprint_opt(340, 0, C_RGB(255,190,0), C_BLACK, DTEXT_LEFT, DTEXT_TOP, "Coin : %d", coin);
/*dprint(320,120,C_GREEN,"%d",collide_solid(player_x+1, player_y, level, gravity));
dprint(320,140,C_GREEN,"%d",collide_solid(player_x-1, player_y, level, gravity));
dprint(320,160,C_GREEN,"%d",collide_solid(player_x, player_y+1, level, gravity));
@ -266,19 +269,23 @@ void game(int *id_level, char mode)
{
char menu_loop = 1;
char selected = 0;
int Y_POS = 90;
int Y_POS = 18;
while(menu_loop)
{
clearevents();
dclear(C_WHITE);
draw_level(level);
draw_player(player_x,player_y);
dimage(0,0,&img_speedrun);
selected += keydown(KEY_DOWN) - keydown(KEY_UP);
if (selected == 2) selected = 0;
else if (selected == -1) selected = 1;
dtext(32, Y_POS, C_BLACK, "CONTINUE");
dtext(32, Y_POS + 12, C_BLACK, "EXIT GAME");
if(!mode) dtext(32, Y_POS + 12, C_BLACK, "MENU");
else dtext(32, Y_POS + 12, C_BLACK, "SPEEDRUN MENU");
dtext(16, Y_POS + (selected * 12), C_BLACK, ">");
dprint(32, Y_POS + 36, C_RGB(83,255,0), "LEVEL : %d", *id_level);
dprint(32, Y_POS + 48, C_RGB(255,178,0), "COIN : %d", coin);
dprint(180, 45, C_RGB(83,255,0), "LEVEL : %d", *id_level);
dprint(320, 8, C_RGB(255,178,0), "COIN : %d", coin);
dupdate();
if (keydown_any(KEY_SHIFT, KEY_EXE, 0))
{
@ -300,17 +307,22 @@ void game(int *id_level, char mode)
timer_stop(timer);
if(mode)
{
dclear(C_WHITE);
dprint_opt(198, 112, C_WHITE, C_BLACK, DTEXT_LEFT, DTEXT_TOP, "%u.%02u",(framelevel)/FPS, (framelevel)%FPS);
check_medal(framelevel, *id_level);
dupdate();
getkey();
if(game_loop)
{
dclear(C_WHITE);
dprint_opt(198, 112, C_WHITE, C_BLACK, DTEXT_LEFT, DTEXT_TOP, "%u.%02u",(framelevel)/FPS, (framelevel)%FPS);
check_medal(framelevel, *id_level);
dupdate();
sleep_ms(5000);
}
if(!speed_menu(id_level))
{
mode = 1;
game(id_level, mode);
}
else main();
}
if(!mode) main();
}
int main(void)
@ -331,6 +343,7 @@ int main(void)
mode = 1;
game(&id_level, mode);
}
else main();
}
return 0;
}

View File

@ -2,36 +2,37 @@
#include <gint/display.h>
#include <gint/keyboard.h>
#include "setlevel.h"
#include "times.h"
char start_menu()
{
extern bopti_image_t img_menu;
char menu_loop = 1;
char selection = 0;
char buffer = 1;
char buffer2 = 1;
int Y_POS = 90;
while(menu_loop)
{
clearevents();
dclear(C_WHITE);
dimage(0,0,&img_menu);
selection += keydown(KEY_DOWN) - keydown(KEY_UP);
if (selection == 2) selection = 0;
else if (selection == -1) selection = 1;
if (selection == 3) selection = 0;
else if (selection == -1) selection = 2;
dtext(32, Y_POS, C_BLACK, "PLAY");
dtext(32, Y_POS + 12, C_BLACK, "SPEEDRUN MODE");
dtext(32, Y_POS + 24, C_BLACK, "EXIT GAME");
dtext(16, Y_POS + (selection * 12), C_BLACK, ">");
dupdate();
if (keydown_any(KEY_SHIFT, KEY_EXE, 0))
{
switch (selection)
{
case 0:
return selection;
break;
case 1:
return selection;
break;
}
if (keydown_any(KEY_SHIFT, KEY_EXE, 0)) {
if(!buffer2) return selection;
}
if(keydown_any(KEY_EXIT, KEY_MENU, 0)) return -1;
else buffer2 = 0;
if(keydown_any(KEY_EXIT, KEY_MENU, 0)) {
if(!buffer) return -1;
}
else buffer = 0;
while (keydown_any(KEY_UP, KEY_DOWN, 0)) clearevents();
}
return selection;
@ -62,7 +63,7 @@ char speed_menu(int *id_level)
set_level(*id_level, level, &start_x, &start_y, &gravity, check_coin, &appear, &disappear);
draw_level(level);
dimage(0,0,&img_speedrun);
dtext(340, 214, C_GREEN, "< PLAY >");
dtext(340, 214, C_BLACK, "TIME");
dtext(190, 45, C_BLACK, "Time : ");
dprint(80,20,C_BLACK,"Level : %d",*id_level);
dupdate();
@ -75,6 +76,10 @@ char speed_menu(int *id_level)
}
}
else check = 0;
if (keydown(KEY_F6))
{
draw_time(*id_level);
}
if(keydown_any(KEY_EXIT, KEY_MENU, 0)) return 1;
while (keydown_any(KEY_RIGHT, KEY_LEFT, 0)) clearevents();
}

View File

@ -5,7 +5,9 @@ switch(id_level){case 1:
memcpy(level,"10011111111dddd111111111100011110000000000000000000001111001111111dddd100001111111001dd000ddddd111111111111001dd0t0ddddddddd11000001001dd000ddddddddd11000001001aaaaaaaaaaaaaa110s00010010000000000000e1111100100100000000000aaa11111001001000000000ddddd1111100100100000000011111100010000010000000003000000001000001000K0000030k00010011111111111111111111116",350);
break;
case 2:
memcpy(level,"111001111111100d0d0011111100000111ddd000d0d0000001100000000000000dtd00000e1111111ddd111111111111111100000000000000000l00d0000111111111dd111110100d000110001100000000010100d0001000011000000000d0d00d00000000l0000000000d0d00d00001111dd111000000d0d00111111000011111ddd00d0d00111111000011111ddd00d0d001111110s0011111ddd00d0d0011111111001111111100d0d00111116",350);
memcpy(level,"10001011111011111111111111000101dd10001111dddd11110000101dd10001000000000001111101dd1aaa1000ccccddd110s00010013331000000000011dddd110010001mmmdd00000100000000010e010t0dd00000011111100011111dddddddd1111k00000001d000111001111111111111101d00000000000111000010000100000000000000010K010000100011100000011110001000010001110000dd1111000101111101111111111111",350);
*appear=4;
*disappear=7;
break;
case 3:
memcpy(level,"11001111111001111111111111000111dddd000000000100013000111dddd00000000010003300000000dd11111000010e03100000000dd03a01000011111111110000dd03a01000000001100s1dd00ddt3a0100000000110001dd00dd1110100000000110001dd0Kdd00001ddd000ddd10001dd00dd00001111100ddd10001dd00dd00001000000ddd30001dd0000000010k000000330001dd0000000010000000031d001111111001111111111117",350);
@ -21,10 +23,13 @@ memcpy(level,"000000000000000000000000000000000000000000000000000000000000000000
*disappear=6;
break;
case 6:
memcpy(level,"11111111111011111dddd1111100001dd0000dd100000000011s0001dd0d11dd10000000001111001dd0d1111100111100011dd001dt0d10000001dd100011dd001d11d10000001dd100011dd00dd11110011111dd100011dd00000000001dddddd100011dd1111dbd1111ddd111100011ddddddd0dd1d1ddd100000011ddddddd0000d1ddd1e0000011ddddddd1110d1ddd111cccc11dddddddddd0d1ddd111dddd11111111111101111111111111",350);
memcpy(level,"11111111111011111dddd1111100001dd0000dd100000000011s0001dd0d11dd10000000001111001dd0d111dd00111100011dd001dt0d10000001dd100011dd001d11d10000001dd100011dd00dd11110011111dd100011dd00000000001dddddd100011dd1111dbd1111ddd111100011ddddddd0dd1d1ddd100000011ddddddd0000d1ddd1e0000011ddddddd1110d1ddd111cccc11dddddddddd0d1ddd111dddd11111111111101111111111111",350);
*appear=12;
*disappear=7;
break;
case 7:
memcpy(level,"111001111111100d0d0011111100000111ddd000d0d0000001100000000000000dtd00000e1111111ddd111111111111111100000000000000000l00d0000111111111dd111110100d000110001100000000010100d0001000011000000000d0d00d00000000l0000000000d0d00d00001111dd111000000d0d00111111000011111ddd00d0d00111111000011111ddd00d0d001111110s0011111ddd00d0d0011111111001111111100d0d00111116",350);
break;
}if(check_coin) for (int i = 0; level[i]!='\0' ; i++) if(level[i]=='t') level[i]='0';
set_gravity(id_level, gravity);
unsigned int x = 0;
@ -44,7 +49,7 @@ switch(id_level){case 1:
*default_gravity = 0;
break;
case 2:
*default_gravity = 0;
*default_gravity = 1;
break;
case 3:
*default_gravity = 1;
@ -58,6 +63,9 @@ break;
case 6:
*default_gravity = 0;
break;
case 7:
*default_gravity = 0;
break;
}}
void del_level(char level[])
{memcpy(level,"00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000",350);}

View File

@ -1,6 +1,8 @@
#include "times.h"
#include "define.h"
#include <gint/display.h>
#include <gint/clock.h>
#include <gint/keyboard.h>
extern bopti_image_t img_bronze;
extern bopti_image_t img_argent;
@ -9,27 +11,108 @@ extern bopti_image_t img_createur;
void check_medal(unsigned int frame_level, int id_level)
{
int time=1, time2=1;
switch(id_level)
{
case 1:
{
unsigned int time = 6;
unsigned int time2 = 5;
if(frame_level/FPS < time || (frame_level/FPS <= time && frame_level%FPS <= time2)) dimage(380,8,&img_createur);
if(frame_level/FPS < time*1.05 || (frame_level/FPS <= time*1.05 && frame_level%FPS <= time2*1.05)) dimage(360,8,&img_or);
if(frame_level/FPS < time*1.2 || (frame_level/FPS <= time*1.2 && frame_level%FPS <= time2*1.2)) dimage(340,8,&img_argent);
if(frame_level/FPS < time*1.5|| (frame_level/FPS <= time*1.5 && frame_level%FPS <= time2*1.5)) dimage(320,8,&img_bronze);
time = 5;
time2 = 60;
break;
}
case 2:
time = 9;
time2 = 36;
break;
case 3:
time = 6;
time2 = 12;
break;
case 4:
time = 8;
time2 = 57;
break;
case 5:
time = 4;
time2 = 15;
break;
case 6:
break;
time = 3;
time2 = 62;
break;
case 7:
time = 8;
time2 = 25;
break;
}
/*if(frame_level/FPS < time || (frame_level/FPS <= time && frame_level%FPS <= time2)) dimage(380,8,&img_createur);
if(frame_level/FPS < (int)(time*1.05+0.5) || (frame_level/FPS <= (int)(time*1.05+0.5) && frame_level%FPS <= (int)(time2*1.8+0.5))) dimage(360,8,&img_or);
if(frame_level/FPS < (int)(time*1.2+0.5) || (frame_level/FPS <= (int)(time*1.2+0.5) && frame_level%FPS <= (int)(time2*1.2+0.5))) dimage(340,8,&img_argent);
if(frame_level/FPS < (int)(time*1.5+0.5) || (frame_level/FPS <= (int)(time*1.5+0.5) && frame_level%FPS <= (int)(time2*1.5+0.5))) dimage(320,8,&img_bronze);*/
if(time2*1.8>=100)
{
if(frame_level/FPS < (unsigned int)(time*1.05+0.5+1) || (frame_level/FPS <= (unsigned int)(time*1.05+0.5+1) && frame_level%FPS <= (unsigned int)(time2*2+0.5-100))) dimage(360,8,&img_or);
}
else if(frame_level/FPS < (unsigned int)(time*1.05+0.5) || (frame_level/FPS <= (unsigned int)(time*1.05+0.5) && frame_level%FPS <= (unsigned int)(time2*2+0.5))) dimage(360,8,&img_or);
if(time2*1.2>=100)
{
if(frame_level/FPS < (unsigned int)(time*1.2+0.5)+1 || (frame_level/FPS <= (unsigned int)(time*1.2+0.5)+1 && frame_level%FPS <= (unsigned int)(time2*1.2+0.5)-100)) dimage(340,8,&img_argent);
}
else if(frame_level/FPS < (unsigned int)(time*1.2+0.5) || (frame_level/FPS <= (unsigned int)(time*1.2+0.5) && frame_level%FPS <= (unsigned int)(time2*1.2+0.5))) dimage(340,8,&img_argent);
if(time2*1.5>=100)
{
if(frame_level/FPS < (unsigned int)(time*1.5+0.5)+1 || (frame_level/FPS <= (unsigned int)(time*1.5+0.5)+1 && frame_level%FPS <= (unsigned int)(time2*1.5+0.5)-100)) dimage(320,8,&img_bronze);
}
else if(frame_level/FPS < (unsigned int)(time*1.5+0.5) || (frame_level/FPS <= (unsigned int)(time*1.5+0.5) && frame_level%FPS <= (unsigned int)(time2*1.5+0.5))) dimage(320,8,&img_bronze);
}
void draw_time(int id_level)
{
dclear(C_WHITE);
int time=1, time2=1;
switch(id_level)
{
case 1:
time = 5;
time2 = 60;
break;
case 2:
time = 9;
time2 = 36;
break;
case 3:
time = 6;
time2 = 12;
break;
case 4:
time = 8;
time2 = 57;
break;
case 5:
time = 4;
time2 = 15;
break;
case 6:
time = 3;
time2 = 62;
break;
case 7:
time = 8;
time2 = 25;
break;
}
dimage(160,90,&img_createur);
dprint(175,90,C_BLACK,"%d.%02d",time,time2);
dimage(160,110,&img_or);
if(time2*1.8>=100) dprint(175,110,C_BLACK,"%d.%02d",(int)(time*1.05+0.5)+1, (int)(time2*2+0.5)-100);
else dprint(175,110,C_BLACK,"%d.%02d",(int)(time*1.05+0.5), (int)(time2*2+0.5));
dimage(160,130,&img_argent);
if(time2*1.2>=100) dprint(175,110,C_BLACK,"%d.%02d",(int)(time*1.05+0.5)+1, (int)(time2*1.2+0.5)-100);
else dprint(175,130,C_BLACK,"%d.%02d",(int)(time*1.2+0.5), (int)(time2*1.2+0.5));
dimage(160,150,&img_bronze);
if(time2*1.5>=100) dprint(175,110,C_BLACK,"%d.%02d",(int)(time*1.05+0.5)+1, (int)(time2*1.5+0.5)-100);
else dprint(175,150,C_BLACK,"%d.%02d",(int)(time*1.5+0.5), (int)(time2*1.5+0.5));
dupdate();
getkey();
}