diff --git a/AST3.g3a b/AST3.g3a index 3474d88..7e6bc0b 100644 Binary files a/AST3.g3a and b/AST3.g3a differ diff --git a/compile_level.py b/compile_level.py index 5a8edd4..d084d87 100644 --- a/compile_level.py +++ b/compile_level.py @@ -2,12 +2,16 @@ ids = 1 save = open("src/setlevel.c","w+") save.write("#include \"setlevel.h\"\n#include \nvoid set_level(int id_level, char level[], int *startx, \ -int *starty, char *gravity, char check_coin){\nswitch(id_level){") +int *starty, char *gravity, char check_coin, int *appear, int *disappear){\nswitch(id_level){") while 1: try: lv = open(f"editor/levels/{ids}.lvl","r") - ide = lv.read() - save.write(f"case {ids}:\nmemcpy(level,\"{ide[:-1]}\",350);\nbreak;\n") + ide = lv.readlines() + if len(ide)==1: save.write(f"case {ids}:\nmemcpy(level,\"{str(ide[0][:-1])}\",350);\nbreak;\n") + elif ide[1]!='\n': + save.write(f"case {ids}:\nmemcpy(level,\"{str(ide[0][:-2])}\",350);\n*appear={ide[1][:-1]};\n*disappear={ide[2]};\nbreak;\n") + else: + save.write(f"case {ids}:\nmemcpy(level,\"{str(ide[0][:-2])}\",350);\n*appear={ide[2][:-1]};\n*disappear={ide[3]};\nbreak;\n") ids+=1 except FileNotFoundError: lv.close() diff --git a/editor/AST3generator.py b/editor/AST3generator.py index 764b13b..1c4001d 100644 --- a/editor/AST3generator.py +++ b/editor/AST3generator.py @@ -30,9 +30,12 @@ def load(ids): global grille, gravityid try: lv = open(f"editor/levels/{ids}.lvl","r") - ide = lv.read() - gravityid=ide[350:] - ide = ide[:-1] + ide = lv.readlines() + gravityid=str(ide[0][350:]) + if len(ide)==1: + ide = str(ide[0][:-1]) + else: + ide = str(ide[0][:-2]) grille=[] for j in range(14): grille.append([]) @@ -47,6 +50,8 @@ def place(): level = font.render(str(id_level),1,(0,0,0)) if int(gravityid)==6: levelgr = font.render("↓",1,(120,0,0)) if int(gravityid)==7: levelgr = font.render("↑",1,(0,120,120)) + timeapp = font.render(str(app),1,(0,120,120)) + timedisa = font.render(str(disa),1,(0,120,120)) for a in range(14): for b in range(25): pygame.draw.rect(fenetre,(255,255,255),((52*b, 52*a), (52, 52))) @@ -82,9 +87,18 @@ def place(): fenetre.blit(pygame.transform.scale(blackout,(52,52)),(52*b,52*a)) fenetre.blit(level, (10, 10)) fenetre.blit(levelgr, (10, 60)) + fenetre.blit(timeapp, (50, 10)) + fenetre.blit(timedisa, (100, 10)) pygame.display.flip() - +def write(): + f = open(f"editor/levels/{id_level}.lvl","w+") + if not "c" in str(grille): + if not "m" in str(grille): + f.write(str(grille).replace("]","").replace("(","").replace(")","").replace("'","").replace("[","").replace(" ","").replace(",","")+f"{gravityid}") + else: f.write(str(grille).replace("]","").replace("(","").replace(")","").replace("'","").replace("[","").replace(" ","").replace(",","")+f"{gravityid}\n{app}\n{disa}") + else: f.write(str(grille).replace("]","").replace("(","").replace(")","").replace("'","").replace("[","").replace(" ","").replace(",","")+f"{gravityid}\n{app}\n{disa}") + f.close() pygame.init() pygame.mixer.quit() @@ -97,7 +111,8 @@ suite=["0","1","d","s","e","k","3","K","a","c","m","t","l","b"] id_level = 1 gravityid = 6 - +disa = 10 +app = 13 solid_0 = pygame.image.load("editor/img/solid_0.png").convert() @@ -134,14 +149,28 @@ while securite==False: if id_level!=1: id_level-=1 load(id_level) place() + if carac == "z": + app+=1 + write() + place() + if carac == "s": + app-=1 + write() + place() + if carac == "r": + disa+=1 + write() + place() + if carac == "f": + disa-=1 + write() + place() if event.key == pygame.K_LSHIFT: if gravityid=="7": gravityid="6" else: gravityid="7" - f = open(f"editor/levels/{id_level}.lvl","w+") - f.write(str(grille).replace("]","").replace("(","").replace(")","").replace("'","").replace("[","").replace(" ","").replace(",","")+f"{gravityid}") - f.close() + write() place() elif event.type == pygame.MOUSEBUTTONDOWN: if event.button == 1: @@ -172,6 +201,4 @@ while securite==False: break pygame.draw.rect(fenetre,(255,255,255),((52*x, 52*y), (55, 55))) place() - f = open(f"editor/levels/{id_level}.lvl","w+") - f.write(str(grille).replace("]","").replace("(","").replace(")","").replace("'","").replace("[","").replace(" ","").replace(",","")+f"{gravityid}") - f.close() \ No newline at end of file + write() \ No newline at end of file diff --git a/editor/levels/4.lvl b/editor/levels/4.lvl index b0ead9c..12f86cf 100644 --- a/editor/levels/4.lvl +++ b/editor/levels/4.lvl @@ -1 +1,3 @@ -1dddddd100111111111111111000000000011111000000000000000000l01100c00000000001aaaaaaa111100c00000000011dddddddddd1001aaaaaaaaa11cccccccccc1001ddddddddd1000000000001331000000aa000000000000s10e1k0000000001ccccccccc111111111113311100000000001001000000000110000000000100b0000000001100000000001t0b00000000011000K0000001111aaaaaaaaa1111111110011111ddddddddd16 \ No newline at end of file +1dddddd100111111111111111000000000011111000000000000000000l01100c00000000001aaaaaaa111100c00000000011dddddddddd1001aaaaaaaaa11cccccccccc1001ddddddddd1000000000001331000000aa000000000000s10e1k0000000001ccccccccc111111111113311100000000011001000000000110000000001100b0000000001100000000011t0b00000000011000K0000011111aaaaaaaaa1111111110011111ddddddddd16 +12 +5 \ No newline at end of file diff --git a/editor/levels/5.lvl b/editor/levels/5.lvl deleted file mode 100644 index 724cde1..0000000 --- a/editor/levels/5.lvl +++ /dev/null @@ -1 +0,0 @@ -11111111111111111111111111000000000000000000000001100000000000000000000000110ddd0ddd000d0d0d00000001100d0d0d0d0d0d0d0d0000001100d0d0d0d0d0d0ddd0000001100d0d0d0ddd0d0d0d00000011000000000000000000000001100000000000000000000000110000000000000000000000011000000000000000000000001100000000000000000000000110s0000000000000000000e0111111111111111111111111116 \ No newline at end of file diff --git a/editor/setlevel.c b/editor/setlevel.c new file mode 100644 index 0000000..8e44bda --- /dev/null +++ b/editor/setlevel.c @@ -0,0 +1,55 @@ +#include "setlevel.h" +#include +void set_level(int id_level, char level[], int *startx, int *starty, char *gravity, char check_coin, int *appear, int *disappear){ +switch(id_level){case 1: +memcpy(level,"10011111111dddd111111111100011110000000000000000000001111001111111dddd100001111111001dd000ddddd111111111111001dd0t0ddddddddd11000001001dd000ddddddddd11000001001aaaaaaaaaaaaaa110s00010010000000000000e1111100100100000000000aaa11111001001000000000ddddd1111100100100000000011111100010000010000000003000000001000001000K0000030k0001001111111111111111111111",350); +break; +case 2: +memcpy(level,"111001111111100d0d0011111100000111ddd000d0d0000001100000000000000dtd00000e1111111ddd111111111111111100000000000000000l00d0000111111111dd111110100d000110001100000000010100d0001000011000000000d0d00d00000000l0000000000d0d00d00001111dd111000000d0d00111111000011111ddd00d0d00111111000011111ddd00d0d001111110s0011111ddd00d0d0011111111001111111100d0d0011111",350); +break; +case 3: +memcpy(level,"11001111111001111111111111000111dddd000000000100013000111dddd00000000010003300000000dd11111000010e03100000000dd03a01000011111111110000dd03a01000000001100s1dd00ddt3a0100000000110001dd00dd1110100000000110001dd0Kdd00001ddd000ddd10001dd00dd00001111100ddd10001dd00dd00001000000ddd30001dd0000000010k000000330001dd0000000010000000031d00111111100111111111111",350); +break; +case 4: +memcpy(level,"1dddddd100111111111111111000000000011111000000000000000000l01100c00000000001aaaaaaa111100c00000000011dddddddddd1001aaaaaaaaa11cccccccccc1001ddddddddd1000000000001331000000aa000000000000s10e1k0000000001ccccccccc111111111113311100000000011001000000000110000000001100b0000000001100000000011t0b00000000011000K0000011111aaaaaaaaa1111111110011111ddddddddd1",350); +*appear=13; +*disappear=10; +break; +case 5: +memcpy(level,"11111111111111111111111111000000000000000000000001100000000000000000000000110000000000000000000000011000000000000000000000001100000000000000000000000110000000000000000000000011000000000000000000000001100000000000000000000000110s00000000000000000000011111c0000000000000000000110010000000000000000000011001000000000000000000e011111111111111111111111111",350); +*appear=8; +*disappear=15; +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; +unsigned int y = 0; +unsigned int i = 0; +while (i!=strlen(level)){ +switch(level[i]){ +case 's': +*startx = x; +*starty = y; +break;} +x+=16; +if(x==16*25){x=0; +y+=16;}i++;}} +void set_gravity(int id_level, char *default_gravity){ +switch(id_level){case 1: +*default_gravity = 0; +break; +case 2: +*default_gravity = 0; +break; +case 3: +*default_gravity = 1; +break; +case 4: +*default_gravity = 0; +break; +case 5: +*default_gravity = 0; +break; +}} +void del_level(char level[]) +{memcpy(level,"00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000",350);} \ No newline at end of file diff --git a/include/define.h b/include/define.h index 003b806..af1280c 100644 --- a/include/define.h +++ b/include/define.h @@ -1,3 +1,3 @@ #define PLAYER_SPEED 2 #define PLAYER_HEIGHT 11 -#define FPS 60 +#define FPS 80 diff --git a/include/setlevel.h b/include/setlevel.h index 2ac8cb2..c9320de 100644 --- a/include/setlevel.h +++ b/include/setlevel.h @@ -1,3 +1,3 @@ -void set_level(int id_level, char level[], int *startx, int *starty, char *gravity, char check_coin); +void set_level(int id_level, char level[], int *startx, int *starty, char *gravity, char check_coin, int *appear, int *disappear); void set_gravity(int id_level, char *default_gravity); void del_level(char level[]); diff --git a/src/main.c b/src/main.c index d52e933..6ae9aa4 100644 --- a/src/main.c +++ b/src/main.c @@ -26,7 +26,7 @@ int main(void) char game_loop = 1; unsigned int frame = 0; - unsigned int framelevel = 0; + int framelevel = 0; int player_x = 20, player_y = 20; char level[351]; char gravity = 0; //0 down 1 up @@ -39,10 +39,13 @@ int main(void) unsigned int coin = 0; char check_coin = 0; + int appear = 10; + int disappear = 13; + float vspd = 1.0; int vert_spd = 1; - set_level(id_level, level, &start_x, &start_y, &gravity, check_coin); + set_level(id_level, level, &start_x, &start_y, &gravity, check_coin, &appear, &disappear); player_x = start_x; player_y = start_y; draw_level(level); @@ -153,7 +156,7 @@ int main(void) vspd = 1; player_x = start_x; player_y = start_y; - set_level(id_level, level, &start_x, &start_y, &gravity, check_coin); + set_level(id_level, level, &start_x, &start_y, &gravity, check_coin, &appear, &disappear); blackout = 0; framelevel = 0; } @@ -161,7 +164,7 @@ int main(void) { id_level++; check_coin = 0; - set_level(id_level, level, &start_x, &start_y, &gravity, check_coin); + set_level(id_level, level, &start_x, &start_y, &gravity, check_coin, &appear, &disappear); player_x = start_x; player_y = start_y; blackout = 0; @@ -246,8 +249,8 @@ int main(void) else gravity=0; } - if((framelevel/FPS)>13) for (int i = 0; level[i]!='\0' ; i++) if(level[i]=='c') level[i]='0'; //after 13 seconds blocks disappear - if((framelevel/FPS)>10) for (int i = 0; level[i]!='\0' ; i++) if(level[i]=='m') level[i]='C'; //after 10 seconds blocks appear + 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 if(player_y>=212) player_y=-4; if(player_y<-6) player_y=212; diff --git a/src/setlevel.c b/src/setlevel.c index 6b0a010..956402f 100644 --- a/src/setlevel.c +++ b/src/setlevel.c @@ -1,6 +1,6 @@ #include "setlevel.h" #include -void set_level(int id_level, char level[], int *startx, int *starty, char *gravity, char check_coin){ +void set_level(int id_level, char level[], int *startx, int *starty, char *gravity, char check_coin, int *appear, int *disappear){ switch(id_level){case 1: memcpy(level,"10011111111dddd111111111100011110000000000000000000001111001111111dddd100001111111001dd000ddddd111111111111001dd0t0ddddddddd11000001001dd000ddddddddd11000001001aaaaaaaaaaaaaa110s00010010000000000000e1111100100100000000000aaa11111001001000000000ddddd1111100100100000000011111100010000010000000003000000001000001000K0000030k0001001111111111111111111111",350); break; @@ -11,10 +11,9 @@ case 3: memcpy(level,"11001111111001111111111111000111dddd000000000100013000111dddd00000000010003300000000dd11111000010e03100000000dd03a01000011111111110000dd03a01000000001100s1dd00ddt3a0100000000110001dd00dd1110100000000110001dd0Kdd00001ddd000ddd10001dd00dd00001111100ddd10001dd00dd00001000000ddd30001dd0000000010k000000330001dd0000000010000000031d00111111100111111111111",350); break; case 4: -memcpy(level,"1dddddd100111111111111111000000000011111000000000000000000l01100c00000000001aaaaaaa111100c00000000011dddddddddd1001aaaaaaaaa11cccccccccc1001ddddddddd1000000000001331000000aa000000000000s10e1k0000000001ccccccccc111111111113311100000000001001000000000110000000000100b0000000001100000000001t0b00000000011000K0000001111aaaaaaaaa1111111110011111ddddddddd1",350); -break; -case 5: -memcpy(level,"11111111111111111111111111000000000000000000000001100000000000000000000000110ddd0ddd000d0d0d00000001100d0d0d0d0d0d0d0d0000001100d0d0d0d0d0d0ddd0000001100d0d0d0ddd0d0d0d00000011000000000000000000000001100000000000000000000000110000000000000000000000011000000000000000000000001100000000000000000000000110s0000000000000000000e011111111111111111111111111",350); +memcpy(level,"1dddddd100111111111111111000000000011111000000000000000000l01100c00000000001aaaaaaa111100c00000000011dddddddddd1001aaaaaaaaa11cccccccccc1001ddddddddd1000000000001331000000aa000000000000s10e1k0000000001ccccccccc111111111113311100000000011001000000000110000000001100b0000000001100000000011t0b00000000011000K0000011111aaaaaaaaa1111111110011111ddddddddd1",350); +*appear=12; +*disappear=5; break; }if(check_coin) for (int i = 0; level[i]!='\0' ; i++) if(level[i]=='t') level[i]='0'; set_gravity(id_level, gravity); @@ -43,9 +42,6 @@ break; case 4: *default_gravity = 0; break; -case 5: -*default_gravity = 0; -break; }} void del_level(char level[]) {memcpy(level,"00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000",350);} \ No newline at end of file