textures + nouveau bloc fragile + nouveau niveau + update coin/médailles

This commit is contained in:
Tituya 2020-07-30 01:51:06 +02:00
parent a47df461c8
commit b1fc59d976
27 changed files with 83 additions and 47 deletions

BIN
AST3.g3a

Binary file not shown.

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

Binary file not shown.

After

Width:  |  Height:  |  Size: 610 B

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

Binary file not shown.

After

Width:  |  Height:  |  Size: 607 B

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

Binary file not shown.

After

Width:  |  Height:  |  Size: 616 B

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

Binary file not shown.

After

Width:  |  Height:  |  Size: 258 B

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

Binary file not shown.

After

Width:  |  Height:  |  Size: 599 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 418 B

After

Width:  |  Height:  |  Size: 590 B

View File

@ -2,7 +2,7 @@ ids = 1
save = open("src/setlevel.c","w+")
save.write("#include \"setlevel.h\"\n#include <gint/std/string.h>\nvoid set_level(int id_level, char level[], int *startx, \
int *starty, char *gravity, char check_coin, int *appear, int *disappear){\nswitch(id_level){")
int *starty, char *gravity, int *appear, int *disappear){\nswitch(id_level){")
while 1:
try:
lv = open(f"editor/levels/{ids}.lvl","r")
@ -16,7 +16,7 @@ while 1:
except FileNotFoundError:
lv.close()
break
save.write("}if(check_coin) for (int i = 0; level[i]!='\\0' ; i++) if(level[i]=='t') level[i]='0';\n\
save.write("}\n\
set_gravity(id_level, gravity);\n\
unsigned int x = 0;\n\
unsigned int y = 0;\n\

View File

@ -91,6 +91,8 @@ def place():
fenetre.blit(pygame.transform.scale(change,(52,52)),(52*b,52*a))
if grille[a][b]=="b":
fenetre.blit(pygame.transform.scale(blackout,(52,52)),(52*b,52*a))
if grille[a][b]=="B":
fenetre.blit(pygame.transform.scale(damaged,(52,52)),(52*b,52*a))
fenetre.blit(level, (10, 10))
fenetre.blit(levelgr, (10, 60))
fenetre.blit(timeapp, (55, 10))
@ -113,7 +115,7 @@ fenetre = pygame.display.set_mode((25*52, 14*52))
font = pygame.font.SysFont('arial',25,True)
#Defini la suite des blocs pendant les changements (cliquer sur un 1 va donner un 2, cliquer sur un 11 un 0...)
suite=["0","1","d","s","e","k","3","K","a","c","m","t","l","b"]
suite=["0","1","d","s","e","k","3","K","a","c","m","t","l","b","B"]
id_level = 1
gravityid = 6
@ -134,6 +136,7 @@ dead = pygame.image.load("editor/img/dead.png").convert()
coin = pygame.image.load("editor/img/coin.png").convert_alpha()
change = pygame.image.load("editor/img/change.png").convert_alpha()
blackout = pygame.image.load("editor/img/blackout.png").convert_alpha()
damaged = pygame.image.load("editor/img/damaged.png").convert()

Binary file not shown.

Before

Width:  |  Height:  |  Size: 429 B

After

Width:  |  Height:  |  Size: 447 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 136 B

After

Width:  |  Height:  |  Size: 610 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 141 B

After

Width:  |  Height:  |  Size: 607 B

BIN
editor/img/damaged.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 616 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 322 B

After

Width:  |  Height:  |  Size: 631 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 312 B

After

Width:  |  Height:  |  Size: 590 B

View File

@ -1 +1 @@
10011111111dddd111111111100011110000000000000000000001111001111111dddd100001111111001dd000ddddd111111111111001dd0t0ddddddddd11000001001dd000ddddddddd11000001001aaaaaaaaaaaaaa110s00010010000000000000e1111100100100000000000aaa11111001001000000000ddddd1111100100100000000011111100010000010000000003000000001000001000K0000030k00010011111111111111111111116
10011111111dddd1111111111000111100000000000000000000011110011111111ddd100001111111001dd000ddddd111111111111001dd0t0ddddddddd11000001001dd000ddddddddd11000001001aaaaaaaaaaaaaa110s00010010000000000000e1111100100100000000000aaa11111001001000000000ddddd1111100100100000000011111100010000010000000003000000001000001000K0000030k00010011111111111111111111116

View File

@ -1,4 +1,4 @@
10001011111011111111111111000101dd10001111dddd11110000101dd10001000000000001111101dd1aaa1000ccccddd110s00010013331000000000011dddd110010001mmmdd00000100000000010e010t0dd00000011111100011111dddddddd1111k00000001d000111001111111111111101d00000000000111000010000100000000000000010K010000100011100000011110001000010001110000dd11110001011111011111111111117
10001011111011111111111111000101dd10001111dddd11110000101dd10001000000000001111101dd1aaa1000ccccddd110s00010013331000000000011dddd110010001mmmdd00000100000000010e010t0dd00000011111100011111d1dddddd1111k00000001d000111001111111111111101d00000000000111000010000100000000000000010K010000100011100000011110001000010001110000dd11110001011111011111111111117
4
5
7

View File

@ -1,4 +1,4 @@
0000000000000000000000000000000000000000000000000000000000000000000000000000011dd111111111111111110000100000100000010000001000011cc001s0000d00000001000010000e111dd0100110dd100001001111000d0000000dd100001000001000111d000ddd1000010000000000000000ddd1000011111111111d111111111000000000000000000000000000000000000000000000000000000000000000000000000000006
000000000000000000000000000000000000000000000000t000000000000000000000000000011dd111111111111111110000100000100000010000001000011cc001s0000d00000001000010000e111dd0100000dd100001001111000d0000000dd100001000001000111d000ddd1000010000000000000000ddd1000011111111111d111B11111000000000000000000000000000000000000000000000000000000000000000000000000000006
12
6

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

@ -0,0 +1 @@
dddddddddddddddddddddddddBBBBBBBBBBBBBBBBBBBBBBBBB1000010k10011111dt0a000011000010010010000d11a00001100001BB100100000000000013000000000010001110000000300000000001aaaaaa00000001111110000010000000011111100000000001000000001000110000000a001BBBd00a0100013000000000010001000010003300s000000010K0100001e003aaBBBBBBBBBBBBBBBBBBBaaaaddddddddddddddddddddddddd6

View File

@ -1,3 +1,3 @@
void set_level(int id_level, char level[], int *startx, int *starty, char *gravity, char check_coin, int *appear, int *disappear);
void set_level(int id_level, char level[], int *startx, int *starty, char *gravity, int *appear, int *disappear);
void set_gravity(int id_level, char *default_gravity);
void del_level(char level[]);

View File

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

View File

@ -18,7 +18,8 @@ char collide_solid(int x, int y, char level[], char gravity)
|| collide(x, y, level, gravity, '3')
|| collide(x, y, level, gravity, '4')
|| collide(x, y, level, gravity, 'c')
|| collide(x, y, level, gravity, 'C');
|| collide(x, y, level, gravity, 'C')
|| collide(x, y, level, gravity, 'B');
}
char collide_dead(int x, int y, char level[])

View File

@ -13,6 +13,11 @@ extern bopti_image_t img_end; //end of level
extern bopti_image_t img_key1; //key 1
extern bopti_image_t img_keyblock; //block link to the key1
extern bopti_image_t img_blackout; //blackout
extern bopti_image_t img_chrono1; //chronoblock
extern bopti_image_t img_chrono2; //chronoblock 2
extern bopti_image_t img_key2; //key 2
extern bopti_image_t img_key2block; //block link to the key 2
extern bopti_image_t img_damaged; //damaged block
void draw_player(int x, int y)
{
@ -47,20 +52,23 @@ void draw_level(char level[])
dimage(x,y,&img_key1);
break;
case '4': //block link to the key2
dimage(x,y,&img_keyblock);
dimage(x,y,&img_key2block);
break;
case 'K': //key2
dimage(x,y,&img_key1);
dimage(x,y,&img_key2);
break;
case 'c': //chrono blocks
dimage(x,y,&img_keyblock);
dimage(x,y,&img_chrono1);
break;
case 'C': //chrono blocks
dimage(x,y,&img_keyblock);
dimage(x,y,&img_chrono2);
break;
case 'b': //blackout blocks
dimage(x,y,&img_blackout);
break;
case 'B': //damaged block
dimage(x,y,&img_damaged);
break;
}
x+=16;
if(x==16*25)

View File

@ -49,7 +49,7 @@ void game(int *id_level, char mode)
int vert_spd = 1;
extern bopti_image_t img_speedrun;
set_level(*id_level, level, &start_x, &start_y, &gravity, check_coin, &appear, &disappear);
set_level(*id_level, level, &start_x, &start_y, &gravity, &appear, &disappear);
player_x = start_x;
player_y = start_y;
draw_level(level);
@ -89,7 +89,6 @@ void game(int *id_level, char mode)
dprint(300,140,C_GREEN,"%c",level[(int)((player_x+PLAYER_HEIGHT+1)/16)+(int)((player_y-1)/16*25)]); //top right
dprint(300,160,C_GREEN,"%c",level[(int)((player_x-1)/16)+(int)((player_y+PLAYER_HEIGHT+1)/16*25)]); //bottom left
dprint(300,180,C_GREEN,"%c",level[(int)((player_x+PLAYER_HEIGHT+1)/16)+(int)((player_y+PLAYER_HEIGHT+1)/16*25)]); //bottom right*/
dupdate();
}
@ -161,8 +160,9 @@ void game(int *id_level, char mode)
vspd = 1;
player_x = start_x;
player_y = start_y;
if(mode) check_coin = 0;
set_level(*id_level, level, &start_x, &start_y, &gravity, check_coin, &appear, &disappear);
if(check_coin) coin--;
check_coin = 0;
set_level(*id_level, level, &start_x, &start_y, &gravity, &appear, &disappear);
blackout = 0;
framelevel = 0;
}
@ -174,7 +174,7 @@ void game(int *id_level, char mode)
break;
}
check_coin = 0;
set_level(*id_level, level, &start_x, &start_y, &gravity, check_coin, &appear, &disappear);
set_level(*id_level, level, &start_x, &start_y, &gravity, &appear, &disappear);
player_x = start_x;
player_y = start_y;
blackout = 0;
@ -196,7 +196,7 @@ void game(int *id_level, char mode)
if(level[i]=='K') level[i]='0';
}
}
if(collide(player_x, player_y, level, gravity, 't')) //Collide with coin
if(collide(player_x, player_y, level, gravity, 't') && !check_coin) //Collide with coin
{
for (int i = 0; level[i]!='\0' ; i++)
{
@ -259,6 +259,19 @@ void game(int *id_level, char mode)
else gravity=0;
}
if(collide(player_x, player_y+vert_spd+2, level, gravity, 'B') && vspd>=5.0) //Damaged block
{
if(level[((player_x)/16)+((player_y+25)/16)*25]=='B') level[((player_x)/16)+((player_y+25)/16)*25]='0';
if(level[((player_x+17)/16)+((player_y+25)/16)*25]=='B' && collide_point(player_x+15, player_y+22, level, 'B')) level[((player_x+17)/16)+((player_y+25)/16)*25]='0';
vspd=1.0;
}
if(collide(player_x, player_y-vert_spd-2, level, gravity, 'B') && vspd>=5.0) //Damaged block
{
if(level[((player_x)/16)+((player_y-vert_spd-2)/16)*25]=='B') level[((player_x)/16)+((player_y-vert_spd-2)/16)*25]='0';
if(level[((player_x+17)/16)+((player_y-vert_spd-2)/16)*25]=='B' && collide_point(player_x+15, player_y-12, level, 'B')) level[((player_x+17)/16)+((player_y-vert_spd-2)/16)*25]='0';
vspd=1.0;
}
if((framelevel/FPS)>disappear) for (int i = 0; level[i]!='\0' ; i++) if(level[i]=='c') level[i]='0'; //after x seconds blocks disappear
if((framelevel/FPS)>appear) for (int i = 0; level[i]!='\0' ; i++) if(level[i]=='m') level[i]='C'; //after x seconds blocks appear
@ -330,12 +343,6 @@ int main(void)
char mode = 0;
int valeur = start_menu();
if(!valeur) //normal game
{
int id_level = 1;
mode = 0;
game(&id_level, mode);
}
else if(valeur==1)
{
int id_level = 1;
if(!speed_menu(&id_level))
@ -345,5 +352,11 @@ int main(void)
}
else main();
}
else if(valeur==1)
{
int id_level = 1;
mode = 0;
game(&id_level, mode);
}
return 0;
}

View File

@ -60,7 +60,7 @@ char speed_menu(int *id_level)
*id_level += keydown(KEY_RIGHT) - keydown(KEY_LEFT);
if (*id_level == 11) *id_level = 1;
else if (*id_level == 0) *id_level = 10;
set_level(*id_level, level, &start_x, &start_y, &gravity, check_coin, &appear, &disappear);
set_level(*id_level, level, &start_x, &start_y, &gravity, &appear, &disappear);
draw_level(level);
dimage(0,0,&img_speedrun);
dtext(340, 214, C_BLACK, "TIME");

View File

@ -1,12 +1,12 @@
#include "setlevel.h"
#include <gint/std/string.h>
void set_level(int id_level, char level[], int *startx, int *starty, char *gravity, char check_coin, int *appear, int *disappear){
void set_level(int id_level, char level[], int *startx, int *starty, char *gravity, int *appear, int *disappear){
switch(id_level){case 1:
memcpy(level,"10011111111dddd111111111100011110000000000000000000001111001111111dddd100001111111001dd000ddddd111111111111001dd0t0ddddddddd11000001001dd000ddddddddd11000001001aaaaaaaaaaaaaa110s00010010000000000000e1111100100100000000000aaa11111001001000000000ddddd1111100100100000000011111100010000010000000003000000001000001000K0000030k00010011111111111111111111116",350);
memcpy(level,"10011111111dddd1111111111000111100000000000000000000011110011111111ddd100001111111001dd000ddddd111111111111001dd0t0ddddddddd11000001001dd000ddddddddd11000001001aaaaaaaaaaaaaa110s00010010000000000000e1111100100100000000000aaa11111001001000000000ddddd1111100100100000000011111100010000010000000003000000001000001000K0000030k00010011111111111111111111116",350);
break;
case 2:
memcpy(level,"10001011111011111111111111000101dd10001111dddd11110000101dd10001000000000001111101dd1aaa1000ccccddd110s00010013331000000000011dddd110010001mmmdd00000100000000010e010t0dd00000011111100011111dddddddd1111k00000001d000111001111111111111101d00000000000111000010000100000000000000010K010000100011100000011110001000010001110000dd1111000101111101111111111111",350);
*appear=4;
memcpy(level,"10001011111011111111111111000101dd10001111dddd11110000101dd10001000000000001111101dd1aaa1000ccccddd110s00010013331000000000011dddd110010001mmmdd00000100000000010e010t0dd00000011111100011111d1dddddd1111k00000001d000111001111111111111101d00000000000111000010000100000000000000010K010000100011100000011110001000010001110000dd1111000101111101111111111111",350);
*appear=5;
*disappear=7;
break;
case 3:
@ -18,7 +18,7 @@ memcpy(level,"1dddddd100111111111111111000000000011111000000000000000000l01100c0
*disappear=1;
break;
case 5:
memcpy(level,"0000000000000000000000000000000000000000000000000000000000000000000000000000011dd111111111111111110000100000100000010000001000011cc001s0000d00000001000010000e111dd0100110dd100001001111000d0000000dd100001000001000111d000ddd1000010000000000000000ddd1000011111111111d11111111100000000000000000000000000000000000000000000000000000000000000000000000000000",350);
memcpy(level,"000000000000000000000000000000000000000000000000t000000000000000000000000000011dd111111111111111110000100000100000010000001000011cc001s0000d00000001000010000e111dd0100000dd100001001111000d0000000dd100001000001000111d000ddd1000010000000000000000ddd1000011111111111d111B1111100000000000000000000000000000000000000000000000000000000000000000000000000000",350);
*appear=12;
*disappear=6;
break;
@ -30,7 +30,10 @@ 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';
case 8:
memcpy(level,"dddddddddddddddddddddddddBBBBBBBBBBBBBBBBBBBBBBBBB1000010k10011111dt0a000011000010010010000d11a00001100001BB100100000000000013000000000010001110000000300000000001aaaaaa00000001111110000010000000011111100000000001000000001000110000000a001BBBd00a0100013000000000010001000010003300s000000010K0100001e003aaBBBBBBBBBBBBBBBBBBBaaaaddddddddddddddddddddddddd",350);
break;
}
set_gravity(id_level, gravity);
unsigned int x = 0;
unsigned int y = 0;
@ -66,6 +69,9 @@ break;
case 7:
*default_gravity = 0;
break;
case 8:
*default_gravity = 0;
break;
}}
void del_level(char level[])
{memcpy(level,"00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000",350);}

View File

@ -19,8 +19,8 @@ void check_medal(unsigned int frame_level, int id_level)
time2 = 60;
break;
case 2:
time = 9;
time2 = 36;
time = 8;
time2 = 13;
break;
case 3:
time = 6;
@ -42,18 +42,18 @@ void check_medal(unsigned int frame_level, int id_level)
time = 8;
time2 = 25;
break;
case 8:
time = 7;
time2 = 62;
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 || (frame_level/FPS <= (unsigned int)time && frame_level%FPS <= (unsigned int)time2)) dimage(380,8,&img_createur);
if(time2*2.5>=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);
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.5+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);
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.5+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);
@ -78,8 +78,8 @@ void draw_time(int id_level)
time2 = 60;
break;
case 2:
time = 9;
time2 = 36;
time = 8;
time2 = 13;
break;
case 3:
time = 6;
@ -101,12 +101,16 @@ void draw_time(int id_level)
time = 8;
time2 = 25;
break;
case 8:
time = 7;
time2 = 62;
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));
if(time2*2.5>=100) dprint(175,110,C_BLACK,"%d.%02d",(int)(time*1.05+0.5)+1, (int)(time2*2.5+0.5)-100);
else dprint(175,110,C_BLACK,"%d.%02d",(int)(time*1.05+0.5), (int)(time2*2.5+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));