From 81f73656bf281fc0598670cbed4867551ffb6ed1 Mon Sep 17 00:00:00 2001 From: Tituya Date: Fri, 30 Apr 2021 17:32:49 +0200 Subject: [PATCH 1/4] dirty fix but it's AST3 so it's ok --- compile_levels.py | 3 +-- editor/AST3generator.py | 7 +++++-- editor/levels/0.lvl | 2 +- editor/levels/1.lvl | 4 ++-- editor/levels/10.lvl | 2 +- editor/levels/11.lvl | 2 +- editor/levels/12.lvl | 2 +- editor/levels/13.lvl | 2 +- editor/levels/14.lvl | 2 +- editor/levels/15.lvl | 2 +- editor/levels/16.lvl | 2 +- editor/levels/17.lvl | 2 +- editor/levels/18.lvl | 4 ++++ editor/levels/2.lvl | 2 +- editor/levels/3.lvl | 2 +- editor/levels/4.lvl | 2 +- editor/levels/5.lvl | 2 +- editor/levels/6.lvl | 2 +- editor/levels/7.lvl | 2 +- editor/levels/8.lvl | 2 +- editor/levels/9.lvl | 2 +- src/main.c | 8 +++----- 22 files changed, 32 insertions(+), 28 deletions(-) create mode 100644 editor/levels/18.lvl diff --git a/compile_levels.py b/compile_levels.py index 74bbb85..2a1d275 100755 --- a/compile_levels.py +++ b/compile_levels.py @@ -7,8 +7,7 @@ while 1: try: lv = open(f"editor/levels/{ids}.lvl","r") ide = lv.readlines() - if ide[1]!='\n': - save.write(f"case {ids}:\nmemcpy(level,\"{str(ide[0][:-2])}\",350);\n*appear={ide[1][:-1]};\n*disappear={ide[2]};\n*nbswitch={ide[3]};\nbreak;\n") + save.write(f"case {ids}:\nmemcpy(level,\"{str(ide[0][:-2])}\",350);\n*appear={ide[1][:-1]};\n*disappear={ide[2][:-1]};\n*nbswitch={ide[3]};\nbreak;\n") ids+=1 except FileNotFoundError: lv.close() diff --git a/editor/AST3generator.py b/editor/AST3generator.py index 9d0959b..370b7fe 100755 --- a/editor/AST3generator.py +++ b/editor/AST3generator.py @@ -107,12 +107,15 @@ def place(): fenetre.blit(levelgr, (10, 60)) fenetre.blit(timeapp, (55, 10)) fenetre.blit(timedisa, (140, 10)) - fenetre.blit(nbswitchfont, (370, 10)) + if "z" in str(grille): + fenetre.blit(nbswitchfont, (370, 10)) if id_level==0 : fenetre.blit(font.render("NIVEAU DE TEST",1,(0,180,255)), (600,10)) pygame.display.flip() def write(): + global nbswitch f = open(f"editor/levels/{id_level}.lvl","w+") + if "z" not in str(grille): nbswitch = 1 f.write(str(grille).replace("]","").replace("(","").replace(")","").replace("'","").replace("[","").replace(" ","").replace(",","")+f"{gravityid}\n{app}\n{disa}\n{nbswitch}") f.close() @@ -130,7 +133,7 @@ id_level = 0 gravityid = 6 disa = 10 app = 13 -nbswitch = -1 +nbswitch = 1 lock="" tab = 0 diff --git a/editor/levels/0.lvl b/editor/levels/0.lvl index e739900..8e71bbc 100755 --- a/editor/levels/0.lvl +++ b/editor/levels/0.lvl @@ -1,4 +1,4 @@ 11111111111111111111000111000000000000000000000001100000000000000000000000110e00000b0000l000S000000111111aaaaaaa11111111111111ddd1ddddddd1mmm1000000011ddd111111111mmm1000000011ddd111111111ccc101BB00011ddd1ddddddd1ccc10i00000111111aaaaaaa111110i000001100000000000030010i0000011000000000000300h0i1BBB111s000K00000k0300h0i0000011111111ddd1111111111000116 13 10 --1 \ No newline at end of file +1 \ No newline at end of file diff --git a/editor/levels/1.lvl b/editor/levels/1.lvl index bceeb37..dad93ab 100755 --- a/editor/levels/1.lvl +++ b/editor/levels/1.lvl @@ -1,4 +1,4 @@ 10011111111dddd1111111111000111100000000000000000000011110011111111ddd100001111111001dd000ddddd111111111111001dd0t0ddddddddd11000001001dd000ddddddddd11000001001aaaaaaaaaaaaaa110s00010010000000000000e11d1100100100000000000aaa11111001001000000000ddddd1111100100100000000011111100010000010000000003000000001000001000K0000030k00010011111111111111111111116 -13 +11 10 --1 \ No newline at end of file +1 \ No newline at end of file diff --git a/editor/levels/10.lvl b/editor/levels/10.lvl index b5bd444..42b8a2c 100755 --- a/editor/levels/10.lvl +++ b/editor/levels/10.lvl @@ -1,4 +1,4 @@ 11111111t133111111100011111111111133311111110K01111100000100111111111000111110s00010i11111100000001111d110K10i11111d000000011111110K10i1111a001BBBBB11110000010i111d0a010000011110000010i11a03011d0ddd1111001ddd0i1d0a0d110000011110000000i0a30111100e00111100000k0130ad11110aa001111dd000001031111111ddd11111111111B1001111111aaa11111111111010011111110001116 13 10 --1 \ No newline at end of file +1 \ No newline at end of file diff --git a/editor/levels/11.lvl b/editor/levels/11.lvl index b9ebdbe..8602403 100755 --- a/editor/levels/11.lvl +++ b/editor/levels/11.lvl @@ -1,4 +1,4 @@ 1ddddddddddd11dddddddddd11dddddddddd00000dd3aaa11i1dd111100000000000030000i1dd000000000001110003000i1d000001111100K000003000i1d00000S00k0000000003aBB110s000100000ddd011103atl11111331ddddddddddddddd1111ddd001dddddddd11d0S0ddd11ddd00d1dd11d000300000dd11ddd000000000000300000dd11dddaaa00000000d3S00e0dd11dddddd00S0d111d3d000ddd11ddddddddddddddddddddddd16 13 10 --1 \ No newline at end of file +1 \ No newline at end of file diff --git a/editor/levels/12.lvl b/editor/levels/12.lvl index 275fdc9..a347bcc 100755 --- a/editor/levels/12.lvl +++ b/editor/levels/12.lvl @@ -1,4 +1,4 @@ 1111111111010001dd11111110000001000013331001000000000000100t01000h0010000001111iB111111000h0013311111e00ik11d111000300300000d10ddi011d0010003003000s0d10aai01000010001hh1hh11111000i01h1h1100010010000011dd0i000000h00010010001a11aa01dd0dd110001001000h0110001dd1d1110S0100100010110000S0S0001ddd100h0001Kd100000S0S001111100h00011111111dddd10h00011111111116 13 10 --1 \ No newline at end of file +1 \ No newline at end of file diff --git a/editor/levels/13.lvl b/editor/levels/13.lvl index 3b4ff32..8e1b788 100755 --- a/editor/levels/13.lvl +++ b/editor/levels/13.lvl @@ -1,4 +1,4 @@ 11111111111111111111111111ddddddddd0S00ddddddddddd1ddddaaaaa000000ddddddddd1ddd00S000000e0ddd0dddddd1dd000000ddddddd00000dddd1daaaa00dd11100S00S000ddd10000000d00000000000S00dd10K000h0d00001100000000dd1111000ddd000000S0d0h00dd1ddd000dd000dd000ddd000dd1dddhhdd000ddddddddd000dd1ddb00S0000100000dd0000dd1dtb00000011s000000000ddd111111d11111111111111dddd6 13 10 --1 \ No newline at end of file +1 \ No newline at end of file diff --git a/editor/levels/14.lvl b/editor/levels/14.lvl index 74a3c39..08988b6 100755 --- a/editor/levels/14.lvl +++ b/editor/levels/14.lvl @@ -1,4 +1,4 @@ 1111111111111ddd11iK1d00100000d111000000011it1d00000000d100000000011i31110011100d13331110e011ihhh11100000d100011111111i00000000000d100000011111i00111011100d1000000000011000s111111111000000000011dd0001hk001111i00Sddd001dddd00hh0000001i000111000aad1ddhddd0000000001110000001111111dd0000000111000000001111111dd000011110000000001111111111111111ddd13100017 13 10 --1 \ No newline at end of file +1 \ No newline at end of file diff --git a/editor/levels/15.lvl b/editor/levels/15.lvl index e2e480f..4d25a33 100755 --- a/editor/levels/15.lvl +++ b/editor/levels/15.lvl @@ -1,4 +1,4 @@ i011100dd1111dddm111ddmd1i01d1000000010S0011100S01i01d100000001000000000001i01d1cc111001hh1c11111001i01ddddddi00i000bddd00001i01dd1133i00i000lddd000K1100000000i00i00001d110011300000000i00100331d100003300000010i001s03t1d1000031111100hki0011111ddd1BB1110S01hh11100m0000aaa0000110001001d100m000000000001100e1001d100m0aaa000aaa0110d11001111111ddddddddd116 13 10 --1 \ No newline at end of file +1 \ No newline at end of file diff --git a/editor/levels/16.lvl b/editor/levels/16.lvl index 6a13da1..1de4975 100755 --- a/editor/levels/16.lvl +++ b/editor/levels/16.lvl @@ -1,4 +1,4 @@ 11111dddd100d110111111331000000000000d1d0000dd10s0111d00000000K1d10000d11111ddddd11ddhh1dddd000dddd11100Sh00dd00000dd00000001i0000000dd000000d0000S001i01100d0dd00d000dd0000001i0d00Sd0dd00dd10ddhh00l01i0ddddd0dd00ddi0d00000001iBBBdd0011aaddi0d0S00d0011000dd000300ddi0d0000d00110mmdd000d00ddi0dd00dd0011emtdddddd00ddi0ddddddkk1111111111100111Bdddd110016 13 10 --1 \ No newline at end of file +1 \ No newline at end of file diff --git a/editor/levels/17.lvl b/editor/levels/17.lvl index 89884d0..977b885 100644 --- a/editor/levels/17.lvl +++ b/editor/levels/17.lvl @@ -1,4 +1,4 @@ 101111110111111111100111110dS00d00000001111100111110aaa0d00000K010000001111100h00d0S0000010ddaaa1111100000ddd1111110ddddd1111111a00000S1e3s00100S0111100z0000000111dda100k0100000z000000000ddddd00001000111ddaaaaa000000000101001100Saddddd0000000001010011000000aa11111111111110011000a000003000000010000011000a0a0003010000t100000110111111011111111110011117 13 10 -18 \ No newline at end of file +19 \ No newline at end of file diff --git a/editor/levels/18.lvl b/editor/levels/18.lvl new file mode 100644 index 0000000..4c84c77 --- /dev/null +++ b/editor/levels/18.lvl @@ -0,0 +1,4 @@ +11111111111111111111111111000000000000000000000001100000000000000000000000110ddd0d0ddd0d0d0d0d0ddd01100d00d00d00d0d00d00d0d01100d00d00d00d0d00d00ddd01100d00d00d00ddd00d00d0d011000000000000000000000001100000000000000000000000110000000111111111111111111000000000000010001000001100000000000000000000000110s0000z00001000100000e0111111111111111111111111116 +13 +10 +5 \ No newline at end of file diff --git a/editor/levels/2.lvl b/editor/levels/2.lvl index 2690b13..d85cfee 100755 --- a/editor/levels/2.lvl +++ b/editor/levels/2.lvl @@ -1,4 +1,4 @@ 1dddddd100111111111111111000000000011111000000000000000000l01100c00000000001aaaaaaa111100c00000000011dddddddddd1001aaaaaaaaa11cccccccccc1001ddddddddd1000000000001331000000aa000000000000s10e1k0000000001ccccccccc111111111113311100000000011001000000000110000000001100b0000000001100000000011t0b00000000011000K0000011111aaaaaaaaa1111111110011111ddddddddd16 13 10 --1 \ No newline at end of file +1 \ No newline at end of file diff --git a/editor/levels/3.lvl b/editor/levels/3.lvl index adf6609..65da0ed 100755 --- a/editor/levels/3.lvl +++ b/editor/levels/3.lvl @@ -1,4 +1,4 @@ 11001111111001111111111111000111dddd000000000100013000111dddd00000000010003300000000dd11111000010e03100000000dd03a01000011111111110000dd03a01000000001100s1dd00ddt3a0100000000110001dd00dd1110100000000110001dd0Kdd00001ddd000ddd10001dd00dd00001111100ddd10001dd00dd00001000000ddd30001dd0000000010k000000330001dd0000000010000000031d001111111001111111111117 13 10 --1 \ No newline at end of file +1 \ No newline at end of file diff --git a/editor/levels/4.lvl b/editor/levels/4.lvl index a98c35c..33d1770 100755 --- a/editor/levels/4.lvl +++ b/editor/levels/4.lvl @@ -1,4 +1,4 @@ 11111111111011111dddd1111100001dd0000dd100000000011s0001dd0d11dd10000000001111001dd0d111dd00111100011dd001dt0d10000001dd100011dd001d11d10000001dd100011dd00dd11110011111dd100011dd00000000001dddddd100011dd1111dbd1111ddd111100011ddddddd0dd1d1ddd100000011ddddddd0000d1ddd1e0000011ddddddd1110d1ddd111cccc11dddddddddd0d1ddd111dddd111111111111011111111111116 13 10 --1 \ No newline at end of file +1 \ No newline at end of file diff --git a/editor/levels/5.lvl b/editor/levels/5.lvl index d376b0c..8f20cc4 100755 --- a/editor/levels/5.lvl +++ b/editor/levels/5.lvl @@ -1,4 +1,4 @@ 000000000000000000000000000000000000000000000000t000000000000000000000000000011dd111111111111111110000100000100000010000001000011cc001s0000d00000001000010000e111dd0100000dd100001001111000d0000000dd100001000001000111d000ddd1000010000000000000000ddd1000011111111111d111B11111000000000000000000000000000000000000000000000000000000000000000000000000000006 13 10 --1 \ No newline at end of file +1 \ No newline at end of file diff --git a/editor/levels/6.lvl b/editor/levels/6.lvl index 7fcc797..c0c3263 100755 --- a/editor/levels/6.lvl +++ b/editor/levels/6.lvl @@ -1,4 +1,4 @@ 10001011111011111111111111000101dd10001111dddd11110000101dd10001000000000001111101dd1aaa1000ccccddd110s00010013331000000000011dddd110010001mmmdd00000100000000010e010t0dd00000011111100011111d1dddddd1111k00000001d000111001111111111111101d00000000000111000010000100000000000000010K010000100011100000011110001000010001110000dd11110001011111011111111111117 13 10 --1 \ No newline at end of file +1 \ No newline at end of file diff --git a/editor/levels/7.lvl b/editor/levels/7.lvl index a45bc7b..4c98595 100755 --- a/editor/levels/7.lvl +++ b/editor/levels/7.lvl @@ -1,4 +1,4 @@ 111001111111100i0d0011111100000111ddd000i0d0000001100000000000000itd00000e1111111ddd111111111111111100000000000000000h00d0000111111111dd111110100d000110001100000000010100d0001000011000000000i0d00d0000000000000000000i0d00d00001111dd111100000ild00111111000011111ddd00i0d0011111d000011111ddd00i0d0011111d0s0011111ddd00i0d0011111111001111111100i0d00111116 13 10 --1 \ No newline at end of file +1 \ No newline at end of file diff --git a/editor/levels/8.lvl b/editor/levels/8.lvl index 438149e..15d0ae4 100755 --- a/editor/levels/8.lvl +++ b/editor/levels/8.lvl @@ -1,4 +1,4 @@ dddddddddddddddddddddddddBBBBBBBBBBBBBBBBBBBBBBBBB100001kk10011111dt0a000011000010010010000d11a00001100001BB100100000000000013000000000010001110000000300000000001aaaaaa0000000111111000001000000001111110dd00000001000000001000110000000a001BBBd00a0100013000000000010001000010003300s000000010K0100001e003aaBBBBBBBBBBBBBBBBBBBaaaaddddddddddddddddddddddddd6 13 10 --1 \ No newline at end of file +1 \ No newline at end of file diff --git a/editor/levels/9.lvl b/editor/levels/9.lvl index 1374d7f..55230eb 100755 --- a/editor/levels/9.lvl +++ b/editor/levels/9.lvl @@ -1,4 +1,4 @@ 00000ddddddd100000000000011111111111111111110011111000000dd1111ddd0K10000b1100111000000100000100000110000100000010000010010011000k111dd101dd00d10000011000110000001000001BBBB011000100011dd1000001dddd01100010ddd1dd1d00dd1011001133310ddd1dd1BBBBB1t00001100000ddd1dd1000001ddd1111s0000ddd1dd10000011111111BBB111aaaaa110001111111100000000000e10000000000006 13 10 --1 \ No newline at end of file +1 \ No newline at end of file diff --git a/src/main.c b/src/main.c index 2945aac..a8f66ab 100644 --- a/src/main.c +++ b/src/main.c @@ -69,7 +69,6 @@ void game(int *id_level, char mode, char *type) &disappear, &nbswitch); player_x = start_x; player_y = start_y; - draw_level(level); while (game_loop) { while (!frame_elapsed) sleep(); @@ -149,7 +148,7 @@ void game(int *id_level, char mode, char *type) hspd = 0; // Action key if (keydown(KEY_SHIFT) && !check && - (nbswitch > 0 || nbswitch == -1) && + nbswitch > 0 && ((collide_solid(player_x, player_y - 1, level) && gravity) || (collide_solid(player_x, player_y + 1, level) && @@ -159,7 +158,7 @@ void game(int *id_level, char mode, char *type) gravity = 1; else gravity = 0; - if (check_nbswitch && nbswitch != 0) { + if (check_nbswitch && nbswitch > 0) { nbswitch -= 1; } check = 1; @@ -236,6 +235,7 @@ void game(int *id_level, char mode, char *type) &gravity, &appear, &disappear, &nbswitch); player_x = start_x; player_y = start_y; + check_nbswitch = 0; blackout = 0; double_check = 1; framelevel = 0; @@ -487,8 +487,6 @@ void game(int *id_level, char mode, char *type) if (mode) { if (*id_level == 0) { game_loop = 0; - draw_end(framelevel, *id_level, 0); - sleep_ms(2500); *id_level = 1; } if (game_loop) // end of a level with level selection From ebb61f89d0449b584340724e065ac63b77d58242 Mon Sep 17 00:00:00 2001 From: Tituya Date: Fri, 30 Apr 2021 18:24:59 +0200 Subject: [PATCH 2/4] fix time + level 18 --- editor/AST3generator.py | 6 +++--- editor/levels/0.lvl | 4 ++-- editor/levels/15.lvl | 4 ++-- editor/levels/16.lvl | 2 +- editor/levels/18.lvl | 6 +++--- editor/levels/2.lvl | 2 +- editor/levels/4.lvl | 2 +- editor/levels/5.lvl | 2 +- editor/levels/6.lvl | 4 ++-- times.lvl | 1 + 10 files changed, 17 insertions(+), 16 deletions(-) diff --git a/editor/AST3generator.py b/editor/AST3generator.py index 370b7fe..40296d0 100755 --- a/editor/AST3generator.py +++ b/editor/AST3generator.py @@ -193,12 +193,12 @@ while securite==False: disa-=1 write() place() - if carac == "t": + if carac == "t" and "z" in str(grille): nbswitch+=1 write() place() - if carac == "g": - if nbswitch >= 0: nbswitch-=1 + if carac == "g" and "z" in str(grille): + if nbswitch > 0: nbswitch-=1 write() place() if carac == "a": diff --git a/editor/levels/0.lvl b/editor/levels/0.lvl index 8e71bbc..f64b70d 100755 --- a/editor/levels/0.lvl +++ b/editor/levels/0.lvl @@ -1,4 +1,4 @@ 11111111111111111111000111000000000000000000000001100000000000000000000000110e00000b0000l000S000000111111aaaaaaa11111111111111ddd1ddddddd1mmm1000000011ddd111111111mmm1000000011ddd111111111ccc101BB00011ddd1ddddddd1ccc10i00000111111aaaaaaa111110i000001100000000000030010i0000011000000000000300h0i1BBB111s000K00000k0300h0i0000011111111ddd1111111111000116 -13 -10 +6 +9 1 \ No newline at end of file diff --git a/editor/levels/15.lvl b/editor/levels/15.lvl index 4d25a33..cacb12e 100755 --- a/editor/levels/15.lvl +++ b/editor/levels/15.lvl @@ -1,4 +1,4 @@ i011100dd1111dddm111ddmd1i01d1000000010S0011100S01i01d100000001000000000001i01d1cc111001hh1c11111001i01ddddddi00i000bddd00001i01dd1133i00i000lddd000K1100000000i00i00001d110011300000000i00100331d100003300000010i001s03t1d1000031111100hki0011111ddd1BB1110S01hh11100m0000aaa0000110001001d100m000000000001100e1001d100m0aaa000aaa0110d11001111111ddddddddd116 -13 -10 +4 +7 1 \ No newline at end of file diff --git a/editor/levels/16.lvl b/editor/levels/16.lvl index 1de4975..4ac0d65 100755 --- a/editor/levels/16.lvl +++ b/editor/levels/16.lvl @@ -1,4 +1,4 @@ 11111dddd100d110111111331000000000000d1d0000dd10s0111d00000000K1d10000d11111ddddd11ddhh1dddd000dddd11100Sh00dd00000dd00000001i0000000dd000000d0000S001i01100d0dd00d000dd0000001i0d00Sd0dd00dd10ddhh00l01i0ddddd0dd00ddi0d00000001iBBBdd0011aaddi0d0S00d0011000dd000300ddi0d0000d00110mmdd000d00ddi0dd00dd0011emtdddddd00ddi0ddddddkk1111111111100111Bdddd110016 -13 +14 10 1 \ No newline at end of file diff --git a/editor/levels/18.lvl b/editor/levels/18.lvl index 4c84c77..f670ad6 100644 --- a/editor/levels/18.lvl +++ b/editor/levels/18.lvl @@ -1,4 +1,4 @@ -11111111111111111111111111000000000000000000000001100000000000000000000000110ddd0d0ddd0d0d0d0d0ddd01100d00d00d00d0d00d00d0d01100d00d00d00d0d00d00ddd01100d00d00d00ddd00d00d0d011000000000000000000000001100000000000000000000000110000000111111111111111111000000000000010001000001100000000000000000000000110s0000z00001000100000e0111111111111111111111111116 -13 +111111110011ddd111111111110000001000S000S0d000000110000001000000000d0000s0111mmm101aaa000000d00BBB31100m01010a0000000d00B0Bb1100m01h10a00dKdhi0i0BBB011d0m01h10a00d0d00i00B0B011d0001h10000dSd00i00d00011d00d1h10000ddd00iBBd0t01h000d101dddd11100000d000h1000d1011111111331111111130000100000ddd000000100003000110000000000000k10e00111111110011111ddd11111116 +8 10 -5 \ No newline at end of file +1 \ No newline at end of file diff --git a/editor/levels/2.lvl b/editor/levels/2.lvl index d85cfee..1feac14 100755 --- a/editor/levels/2.lvl +++ b/editor/levels/2.lvl @@ -1,4 +1,4 @@ 1dddddd100111111111111111000000000011111000000000000000000l01100c00000000001aaaaaaa111100c00000000011dddddddddd1001aaaaaaaaa11cccccccccc1001ddddddddd1000000000001331000000aa000000000000s10e1k0000000001ccccccccc111111111113311100000000011001000000000110000000001100b0000000001100000000011t0b00000000011000K0000011111aaaaaaaaa1111111110011111ddddddddd16 13 -10 +1 1 \ No newline at end of file diff --git a/editor/levels/4.lvl b/editor/levels/4.lvl index 33d1770..8b384f5 100755 --- a/editor/levels/4.lvl +++ b/editor/levels/4.lvl @@ -1,4 +1,4 @@ 11111111111011111dddd1111100001dd0000dd100000000011s0001dd0d11dd10000000001111001dd0d111dd00111100011dd001dt0d10000001dd100011dd001d11d10000001dd100011dd00dd11110011111dd100011dd00000000001dddddd100011dd1111dbd1111ddd111100011ddddddd0dd1d1ddd100000011ddddddd0000d1ddd1e0000011ddddddd1110d1ddd111cccc11dddddddddd0d1ddd111dddd111111111111011111111111116 13 -10 +13 1 \ No newline at end of file diff --git a/editor/levels/5.lvl b/editor/levels/5.lvl index 8f20cc4..4954ca5 100755 --- a/editor/levels/5.lvl +++ b/editor/levels/5.lvl @@ -1,4 +1,4 @@ 000000000000000000000000000000000000000000000000t000000000000000000000000000011dd111111111111111110000100000100000010000001000011cc001s0000d00000001000010000e111dd0100000dd100001001111000d0000000dd100001000001000111d000ddd1000010000000000000000ddd1000011111111111d111B11111000000000000000000000000000000000000000000000000000000000000000000000000000006 13 -10 +6 1 \ No newline at end of file diff --git a/editor/levels/6.lvl b/editor/levels/6.lvl index c0c3263..0998bf8 100755 --- a/editor/levels/6.lvl +++ b/editor/levels/6.lvl @@ -1,4 +1,4 @@ 10001011111011111111111111000101dd10001111dddd11110000101dd10001000000000001111101dd1aaa1000ccccddd110s00010013331000000000011dddd110010001mmmdd00000100000000010e010t0dd00000011111100011111d1dddddd1111k00000001d000111001111111111111101d00000000000111000010000100000000000000010K010000100011100000011110001000010001110000dd11110001011111011111111111117 -13 -10 +5 +9 1 \ No newline at end of file diff --git a/times.lvl b/times.lvl index 285c365..87ac474 100755 --- a/times.lvl +++ b/times.lvl @@ -15,3 +15,4 @@ 7.45 10.53 17.95 +9.54 From 38265a910ec43dcf985bd896cd114836994c8ee1 Mon Sep 17 00:00:00 2001 From: KikooDX Date: Sat, 1 May 2021 12:12:14 +0200 Subject: [PATCH 3/4] Reorganized a bit of code Mainly menu and main code organisation, also created an util.{c,h} for reusable general purpous functions. --- CMakeLists.txt | 1 + include/menu.h | 7 ++-- include/util.h | 3 ++ src/main.c | 98 ++++++++++++++++++++++++++------------------------ src/menu.c | 10 +++--- src/util.c | 6 ++++ 6 files changed, 70 insertions(+), 55 deletions(-) create mode 100644 include/util.h create mode 100644 src/util.c diff --git a/CMakeLists.txt b/CMakeLists.txt index 14c5f0e..79062ee 100755 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -51,6 +51,7 @@ set(SOURCES src/main.c src/menu.c src/save.c + src/util.c generated/setlevel.c generated/times.c) diff --git a/include/menu.h b/include/menu.h index cd6e13d..bbb987d 100755 --- a/include/menu.h +++ b/include/menu.h @@ -1,3 +1,6 @@ -char start_menu(); +#pragma once + +enum MenuCode { MenuLevelSel, MenuAllMode, MenuTutorial, MenuExit }; + +enum MenuCode start_menu(); char speed_menu(int *id_level); -int round(float num); diff --git a/include/util.h b/include/util.h new file mode 100644 index 0000000..4b0ba63 --- /dev/null +++ b/include/util.h @@ -0,0 +1,3 @@ +#pragma once + +int round(float num); diff --git a/src/main.c b/src/main.c index a8f66ab..9519e0c 100644 --- a/src/main.c +++ b/src/main.c @@ -4,10 +4,10 @@ #include #include #include - #include "collide.h" #include "define.h" #include "drawlevel.h" +#include "util.h" #include "menu.h" #include "save.h" #include "setlevel.h" @@ -18,18 +18,62 @@ #define MAX_VSPD 9.0 #define FRICTION 0.2 -int main(void); -void end(unsigned int frame); +static int callback(volatile int *frame_elapsed); +static void end(unsigned int frame); +static void game(int *id_level, char mode, char *type); -char run = 0; +int main(void) +{ + static int run = 0; + if (!run) { + gint_world_switch(GINT_CALL(restore)); + run = 1; + } -int callback(volatile int *frame_elapsed) + char mode = 0; + char type = 1; + const enum MenuCode valeur = start_menu(&type); + + switch (valeur) { + case MenuLevelSel: { + int id_level = 1; + if (!speed_menu(&id_level)) { + mode = 1; + game(&id_level, mode, &type); + } else + main(); + } break; + case MenuAllMode: { + int id_level = 1; + mode = 0; + game(&id_level, mode, &type); + } break; + case MenuTutorial: { + int id_level = 0; + mode = 1; + game(&id_level, mode, &type); + } break; + case MenuExit: + gint_world_switch(GINT_CALL(savefile)); + break; + } + return 0; +} + +static int callback(volatile int *frame_elapsed) { *frame_elapsed = 1; return TIMER_CONTINUE; } -void game(int *id_level, char mode, char *type) +static void end(unsigned int frame) +{ + draw_end((int)frame, 15, 2); + sleep_ms(7000); + main(); +} + +static void game(int *id_level, char mode, char *type) { volatile int frame_elapsed = 1; int timer = timer_configure(TIMER_ANY, 1000000 / FPS, @@ -147,8 +191,7 @@ void game(int *id_level, char mode, char *type) } else hspd = 0; // Action key - if (keydown(KEY_SHIFT) && !check && - nbswitch > 0 && + if (keydown(KEY_SHIFT) && !check && nbswitch > 0 && ((collide_solid(player_x, player_y - 1, level) && gravity) || (collide_solid(player_x, player_y + 1, level) && @@ -505,42 +548,3 @@ void game(int *id_level, char mode, char *type) } else main(); } - -void end(unsigned int frame) -{ - draw_end((int)frame, 15, 2); - sleep_ms(7000); - main(); -} - -int main(void) -{ - if (!run) { - gint_world_switch(GINT_CALL(restore)); - run = 1; - } - char mode = 0; - char type = 1; - char valeur = start_menu(&type); - if (!valeur) // normal game (level selection) - { - int id_level = 1; - if (!speed_menu(&id_level)) { - mode = 1; - game(&id_level, mode, &type); - } else - main(); - } else if (valeur == 1) // all mode - { - int id_level = 1; - mode = 0; - game(&id_level, mode, &type); - } else if (valeur == 2) // tutorial - { - int id_level = 0; - mode = 1; - game(&id_level, mode, &type); - } else if (valeur == 3) // exit - gint_world_switch(GINT_CALL(savefile)); - return 0; -} diff --git a/src/menu.c b/src/menu.c index 6f7e0a6..cf9e2dc 100644 --- a/src/menu.c +++ b/src/menu.c @@ -1,4 +1,6 @@ +#include "menu.h" #include "define.h" +#include "util.h" #include "drawlevel.h" #include "save.h" #include "setlevel.h" @@ -7,12 +9,7 @@ #include #include -int round(float num) // round(2.5) = 3 round(-3.2) = -3 -{ - return num < 0 ? num - 0.5 : num + 0.5; -} - -char start_menu(char *type) +enum MenuCode start_menu(char *type) { extern bopti_image_t img_menu; char menu_loop = 1; @@ -112,3 +109,4 @@ char speed_menu(int *id_level) } return 0; } + diff --git a/src/util.c b/src/util.c new file mode 100644 index 0000000..f1430b0 --- /dev/null +++ b/src/util.c @@ -0,0 +1,6 @@ +#include "util.h" + +int round(float num) +{ + return (num < 0) ? (num - 0.5) : (num + 0.5); +} From f1dd20fe1482448f61b1a5edfba19643b53d198c Mon Sep 17 00:00:00 2001 From: Tituya Date: Sun, 2 May 2021 16:25:22 +0200 Subject: [PATCH 4/4] cleanup but load fail --- CMakeLists.txt | 6 +- compile_levels.py | 4 +- editor/levels/19.lvl | 4 + editor/levels/2.lvl | 2 +- editor/levels/4.lvl | 2 +- include/collide.h | 1 + include/replace.h | 2 + include/setlevel.h | 4 +- src/collide.c | 8 ++ src/main.c | 183 +++++++++++++++++++------------------------ src/menu.c | 3 +- src/replace.c | 12 +++ 12 files changed, 122 insertions(+), 109 deletions(-) create mode 100644 editor/levels/19.lvl create mode 100644 include/replace.h create mode 100644 src/replace.c diff --git a/CMakeLists.txt b/CMakeLists.txt index 79062ee..1edaf91 100755 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -26,6 +26,7 @@ add_custom_command( COMMAND mkdir -p generated/include && sh update_levels.sh WORKING_DIRECTORY ${CMAKE_CURRENT_LIST_DIR} DEPENDS update_levels.sh compile_levels.py + editor/levels/ editor/levels/0.lvl editor/levels/1.lvl editor/levels/2.lvl @@ -43,7 +44,9 @@ add_custom_command( editor/levels/14.lvl editor/levels/15.lvl editor/levels/16.lvl - editor/levels/17.lvl) + editor/levels/17.lvl + editor/levels/18.lvl + editor/levels/19.lvl) set(SOURCES src/collide.c @@ -52,6 +55,7 @@ set(SOURCES src/menu.c src/save.c src/util.c + src/replace.c generated/setlevel.c generated/times.c) diff --git a/compile_levels.py b/compile_levels.py index 2a1d275..34a4e2f 100755 --- a/compile_levels.py +++ b/compile_levels.py @@ -29,12 +29,12 @@ y+=16;}i++;}}\n\ void set_gravity(int id_level, char *default_gravity){\n\ switch(id_level){") ids = 0 -gravity = 0 +gravity = -1 while 1: try: lv = open(f"editor/levels/{ids}.lvl","r") ide = lv.read() - if ide[350]=="6": gravity=0 + if ide[350]=="6": gravity=-1 else: gravity = 1 save.write(f"case {ids}:\n*default_gravity = {gravity};\nbreak;\n") ids+=1 diff --git a/editor/levels/19.lvl b/editor/levels/19.lvl new file mode 100644 index 0000000..acb5a4c --- /dev/null +++ b/editor/levels/19.lvl @@ -0,0 +1,4 @@ +11111111111111111111111111000000000000000000000001i000000000000000000000001i0000iiiii11i11iiiii00001i000000000000000000000001i00S000000000000000000001i000000000000000000000001i000011111111111111100001i000000000000000000000001i000000000000000000000001i0000iiiiiiiiiiiiiii00001i000000000000000000000001i00s00000000000000000e00111111iiiiiiiiiiiiiii111116 +8 +10 +1 \ No newline at end of file diff --git a/editor/levels/2.lvl b/editor/levels/2.lvl index 1feac14..b4485cb 100755 --- a/editor/levels/2.lvl +++ b/editor/levels/2.lvl @@ -1,4 +1,4 @@ 1dddddd100111111111111111000000000011111000000000000000000l01100c00000000001aaaaaaa111100c00000000011dddddddddd1001aaaaaaaaa11cccccccccc1001ddddddddd1000000000001331000000aa000000000000s10e1k0000000001ccccccccc111111111113311100000000011001000000000110000000001100b0000000001100000000011t0b00000000011000K0000011111aaaaaaaaa1111111110011111ddddddddd16 13 -1 +2 1 \ No newline at end of file diff --git a/editor/levels/4.lvl b/editor/levels/4.lvl index 8b384f5..7708628 100755 --- a/editor/levels/4.lvl +++ b/editor/levels/4.lvl @@ -1,4 +1,4 @@ 11111111111011111dddd1111100001dd0000dd100000000011s0001dd0d11dd10000000001111001dd0d111dd00111100011dd001dt0d10000001dd100011dd001d11d10000001dd100011dd00dd11110011111dd100011dd00000000001dddddd100011dd1111dbd1111ddd111100011ddddddd0dd1d1ddd100000011ddddddd0000d1ddd1e0000011ddddddd1110d1ddd111cccc11dddddddddd0d1ddd111dddd111111111111011111111111116 13 -13 +7 1 \ No newline at end of file diff --git a/include/collide.h b/include/collide.h index 4444f13..b732a11 100755 --- a/include/collide.h +++ b/include/collide.h @@ -4,3 +4,4 @@ char collide_dead(int x, int y, char level[]); char collide_point(int x, int y, char level[], char block); char collide_end(int x, int y, char level[]); void collide_replace(int x, int y, char level[], char collide, char replace); +char collide_center(int x, int y, char level[], char block); diff --git a/include/replace.h b/include/replace.h new file mode 100644 index 0000000..c3d903a --- /dev/null +++ b/include/replace.h @@ -0,0 +1,2 @@ +void replace_all_block(char a, char b, char level[]); +void replace_xy_block(int x, int y, char block, char level[]); \ No newline at end of file diff --git a/include/setlevel.h b/include/setlevel.h index d054c5f..6803339 100644 --- a/include/setlevel.h +++ b/include/setlevel.h @@ -1,4 +1,4 @@ -void set_level(int id_level, char level[], int *startx, int *starty, - char *gravity, int *appear, int *disappear, int *nbswitch); +void set_level(int id_level, char level[], int *startx, int *starty, char *gravity, + int *appear, int *disappear, int *nbswitch); void set_gravity(int id_level, char *default_gravity); void del_level(char level[]); diff --git a/src/collide.c b/src/collide.c index 0eb39f8..2619e64 100644 --- a/src/collide.c +++ b/src/collide.c @@ -69,3 +69,11 @@ void collide_replace(int x, int y, char level[], char collide, char replace) ((y + PLAYER_HEIGHT) / 16) * 25] = replace; } } + +char collide_center(int x, int y, char level[], char block) { + if(level[(int)((x + 6) / 16) + + (int)((y + 6) / 16) * 25] == block) { + return 1; + } + return 0; +} \ No newline at end of file diff --git a/src/main.c b/src/main.c index 9519e0c..4d9eabe 100644 --- a/src/main.c +++ b/src/main.c @@ -12,6 +12,7 @@ #include "save.h" #include "setlevel.h" #include "times.h" +#include "replace.h" #define VACCELERATION 0.2 #define HACCELERATION 0.4 @@ -85,7 +86,7 @@ static void game(int *id_level, char mode, char *type) int framelevel = 0; int player_x = 20, player_y = 20; char level[351]; - char gravity = 0; // 0 down 1 up + char gravity = -1; // -1 down 1 up char check = 1; char blackout = 0; int start_x; @@ -104,6 +105,7 @@ static void game(int *id_level, char mode, char *type) char check_nbswitch = 0; float vspd = 1.0; float hspd = 0.0; + if (*id_level == 10 && *type != 3) *type = 2; else if (*type != 3) @@ -111,8 +113,6 @@ static void game(int *id_level, char mode, char *type) extern bopti_image_t img_speedrun; set_level(*id_level, level, &start_x, &start_y, &gravity, &appear, &disappear, &nbswitch); - player_x = start_x; - player_y = start_y; while (game_loop) { while (!frame_elapsed) sleep(); @@ -153,62 +153,61 @@ static void game(int *id_level, char mode, char *type) coin); if (check_nbswitch) draw_nbswitch(nbswitch); + dprint_opt(330, 0, C_RGB(255, 190, 0), C_BLACK, + DTEXT_LEFT, DTEXT_TOP, "%d", + (int)(hspd*100)); dupdate(); } pollevent(); if (keydown(KEY_OPTN)) { - level[((player_x + 6) / 16) + - ((player_y + 6) / 16) * 25] = 'd'; + replace_xy_block(player_x + 6, player_y + 6, 'd', level); death_count--; } - // Right collision - if (keydown(KEY_RIGHT)) { + + //right and left collision + if(keydown_any(KEY_RIGHT, KEY_LEFT)) { + float hbuff = 0.0; + char signe = (keydown(KEY_RIGHT) - keydown(KEY_LEFT)); + if(collide(player_x, player_y-1, level, 'i') || + collide(player_x, player_y+1, level, 'i')) { + hbuff += 0.12; + } hspd *= 1 - FRICTION; - hspd += (keydown(KEY_RIGHT) - keydown(KEY_LEFT)) * - HACCELERATION; - if (!collide_solid(player_x + round(hspd) + 1, player_y, + hspd += signe * (HACCELERATION+hbuff); + if (!collide_solid(player_x + round(hspd) + signe*1, player_y, level)) player_x += round(hspd); - else if (!collide_solid(player_x + 1, player_y, level)) - player_x += 1; + else if (!collide_solid(player_x + signe*1, player_y, level)) + player_x += signe*1; if (player_x >= 388) player_x = -4; - } - // Left collision - else if (keydown(KEY_LEFT)) { - hspd *= 1 - FRICTION; - hspd += (keydown(KEY_RIGHT) - keydown(KEY_LEFT)) * - HACCELERATION; - if (!collide_solid(player_x + round(hspd) - 1, player_y, - level)) - player_x += round(hspd); - else if (!collide_solid(player_x - 1, player_y, level)) - player_x -= 1; if (player_x < -9) player_x = 384; } else hspd = 0; + // Action key - if (keydown(KEY_SHIFT) && !check && nbswitch > 0 && + /*if (keydown(KEY_SHIFT) && !check && nbswitch > 0 && ((collide_solid(player_x, player_y - 1, level) && gravity) || (collide_solid(player_x, player_y + 1, level) && - !gravity))) { + gravity == -1))) { vspd = 1; - if (!gravity) + if (gravity == -1) gravity = 1; else - gravity = 0; + gravity = -1; if (check_nbswitch && nbswitch > 0) { nbswitch -= 1; } check = 1; } else if (!keydown(KEY_SHIFT) && check) - check = 0; + check = 0;*/ + /* // Gravity - if (!gravity) { + if (gravity == -1) { if (!collide_solid(player_x, player_y + (int)vspd + 1, level)) { if (vspd < MAX_VSPD) @@ -248,7 +247,24 @@ static void game(int *id_level, char mode, char *type) player_y -= 1; } else vspd = 1; - } + }*/ + + /*if (!collide_solid(player_x, player_y + (int)vspd + gravity, level)) { + if (vspd < MAX_VSPD) + vspd += VACCELERATION; + if (collide(player_x + 1, player_y, level, 'i') || + collide(player_x - 1, player_y, level, 'i')) + vspd += 0.15; + player_y += ((int)vspd) * gravity; + } else if (!collide_solid(player_x, player_y + (int)vspd + gravity, level)) { + vspd -= VACCELERATION; + player_y += ((int)vspd) * gravity; + } else if (!collide_solid(player_x, player_y + gravity, level)) { + vspd = 1; + player_y += 1 * gravity; + } else + vspd = 1;*/ + // Collide with red block if (collide_dead(player_x, player_y, level)) { vspd = 1; @@ -257,8 +273,8 @@ static void game(int *id_level, char mode, char *type) if (check_coin) coin--; check_coin = 0; - set_level(*id_level, level, &start_x, &start_y, - &gravity, &appear, &disappear, &nbswitch); + set_level(*id_level, level, &start_x, &start_y, &gravity, + &appear, &disappear, &nbswitch); blackout = 0; check_nbswitch = 0; death_count++; @@ -274,8 +290,8 @@ static void game(int *id_level, char mode, char *type) else break; check_coin = 0; - set_level(*id_level, level, &start_x, &start_y, - &gravity, &appear, &disappear, &nbswitch); + set_level(*id_level, level, &start_x, &start_y, &gravity, + &appear, &disappear, &nbswitch); player_x = start_x; player_y = start_y; check_nbswitch = 0; @@ -294,65 +310,41 @@ static void game(int *id_level, char mode, char *type) if (collide(player_x, player_y, level, 'k')) // Collide with key1 = disappearance of blocks { - for (int i = 0; level[i] != '\0'; i++) { - if (level[i] == '3') - level[i] = '0'; - if (level[i] == 'k') - level[i] = '0'; - } + replace_all_block('3','0', level); + replace_all_block('k','0', level); } if (collide(player_x, player_y, level, 'K')) // Collide with key2 = appearance of blocks { - for (int i = 0; level[i] != '\0'; i++) { - if (level[i] == 'a') - level[i] = '4'; - if (level[i] == 'K') - level[i] = '0'; - } + replace_all_block('a','4', level); + replace_all_block('K','0', level); } if (collide(player_x, player_y, level, 't') && !check_coin) // Collide with coin { - for (int i = 0; level[i] != '\0'; i++) { - if (level[i] == 't') { - level[i] = '0'; - break; - } - } + replace_all_block('t','0', level); check_coin = 1; coin++; } if (collide(player_x, player_y, level, 'b')) // Collide with blackout block { - for (int i = 0; level[i] != '\0'; i++) { - if (level[i] == 'b') { - level[i] = '0'; - break; - } - } + replace_all_block('b','0', level); blackout = 1; } if (collide(player_x, player_y, level, 'z')) // Collide with nbswitch block { - for (int i = 0; level[i] != '\0'; i++) { - if (level[i] == 'z') { - level[i] = '0'; - } - } + replace_all_block('z','0', level); check_nbswitch = 1; } - if (level[((player_x + 6) / 16) + ((player_y + 6) / 16) * 25] == - 'l') // Collide with change block + if(collide_center(player_x, player_y, level, 'l')) // Collide with change block { int x = 0; int y = 0; char level2[351] = {0}; int j = 0; - level[((player_x + 6) / 16) + - ((player_y + 6) / 16) * 25] = 'P'; + replace_xy_block(player_x+6, player_y+6, 'P', level); for (int i = 349; i != -1; i--) { level2[j] = level[i]; j++; @@ -376,10 +368,10 @@ static void game(int *id_level, char mode, char *type) } i++; } - if (!gravity) + if (gravity == -1) gravity = 1; else - gravity = 0; + gravity = -1; chock++; } @@ -388,14 +380,13 @@ static void game(int *id_level, char mode, char *type) { if (level[((player_x) / 16) + ((player_y + 25) / 16) * 25] == 'B') - level[((player_x) / 16) + - ((player_y + 25) / 16) * 25] = '0'; + replace_xy_block(player_x, player_y + 25, '0', level); + if (level[((player_x + 12) / 16) + ((player_y + 25) / 16) * 25] == 'B' && collide_point(player_x + 12, player_y + 22, level, 'B')) - level[((player_x + 12) / 16) + - ((player_y + 25) / 16) * 25] = '0'; + replace_xy_block(player_x +12, player_y + 25, '0', level); vspd = 1.0; } if (collide(player_x, player_y - (int)vspd - 2, level, 'B') && @@ -424,46 +415,36 @@ static void game(int *id_level, char mode, char *type) double_check) // Appear block { for (int i = 0; level[i] != '\0'; i++) { - if (level[i] == 'y') { - double_check = 1; - break; - } else if (level[i] == 'h') { + if (level[i] == 'y' || level[i] == 'h') { double_check = 1; break; } else - double_check = - 0; // This loop is executed only + double_check = 0; // This loop is executed only // when an h or y is on the level } - for (int i = 0; level[i] != '\0'; ++i) { - if (level[i] == 'y') { - level[i] = 'H'; - } - } + replace_all_block('y','H', level); } - if (level[((player_x + 6) / 16) + ((player_y + 6) / 16) * 25] == - 'S') // Switch block + + if (collide_center(player_x, player_y, level, 'S')) // Switch block { - level[((player_x + 6) / 16) + - ((player_y + 6) / 16) * 25] = '0'; + replace_xy_block(player_x + 6, player_y + 6, '0', level); vspd = 1.0; - if (!gravity) + if (gravity == -1) gravity = 1; else - gravity = 0; + gravity = -1; } - 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 ((framelevel / FPS) > disappear-1) + { + replace_all_block('c','0',level); + } + if ((framelevel / FPS) > appear-1) + { + replace_all_block('m','C',level); + } + //warp if (player_y >= 212) player_y = -4; if (player_y < -6) @@ -494,7 +475,7 @@ static void game(int *id_level, char mode, char *type) "SPEEDRUN MENU"); dtext(16, Y_POS + (selected * 12), C_BLACK, ">"); - dprint(180, 45, C_RGB(83, 255, 0), "LEVEL : %d", + dprint(180, 45, C_BLACK, "LEVEL : %d", *id_level); dprint(320, 3, C_RGB(255, 178, 0), "COIN : %d", coin); diff --git a/src/menu.c b/src/menu.c index cf9e2dc..27e119a 100644 --- a/src/menu.c +++ b/src/menu.c @@ -53,7 +53,7 @@ enum MenuCode start_menu(char *type) char speed_menu(int *id_level) { char level[351]; - char gravity = 0; // 0 down 1 up + char gravity = -1; // -1 down 1 up int start_x; int start_y; char buffer = 1; @@ -84,6 +84,7 @@ char speed_menu(int *id_level) dtext(340, 214, C_BLACK, "TIMES"); dtext(190, 45, C_BLACK, "Time : "); dprint(80, 20, C_BLACK, "Level : %d", *id_level); + dprint(80, 50, C_RED, "%d", gravity); if (sto != 0) dprint(194, 60, C_RED, "%.2j", sto); else diff --git a/src/replace.c b/src/replace.c new file mode 100644 index 0000000..204b839 --- /dev/null +++ b/src/replace.c @@ -0,0 +1,12 @@ +#include "replace.h" + +void replace_all_block(char a, char b, char level[]) { + for (int i = 0; level[i] != '\0'; i++) { + if (level[i] == a) + level[i] = b; + } +} + +void replace_xy_block(int x, int y, char block, char level[]) { + level[(x/16)+((y/16)*25)] = block; +} \ No newline at end of file