From 3f8bca0709c1912630c951996f42123ab10ce5a1 Mon Sep 17 00:00:00 2001 From: 22tyler-richardsl <22tyler-richardsl@utcsheffield.org.uk> Date: Fri, 31 Jan 2025 13:21:19 +0000 Subject: [PATCH] Sprig App - The Box Adventure Maze --- games/The-Box-Adventure-Maze.js | 337 +++++++++++++++++++++++++++ games/img/The-Box-Adventure-Maze.png | Bin 0 -> 3135 bytes 2 files changed, 337 insertions(+) create mode 100644 games/The-Box-Adventure-Maze.js create mode 100644 games/img/The-Box-Adventure-Maze.png diff --git a/games/The-Box-Adventure-Maze.js b/games/The-Box-Adventure-Maze.js new file mode 100644 index 0000000000..4ca90eabaa --- /dev/null +++ b/games/The-Box-Adventure-Maze.js @@ -0,0 +1,337 @@ +/* +First time? Check out the tutorial game: +https://sprig.hackclub.com/gallery/getting_started + +@title: The Box +@author: +@tags: [] +@addedOn: 2024-00-00 +*/ + +let won = false + +const player = "p" +const wall = "w" +const exit = "e" +const fake = "f" +const glass = "g" +const inviswall = "i" +const fake2 = "k" +const wall2 = "v" +setLegend( + [ player, bitmap` +CCCCCCC66CCCCCCC +CCCCCCC66CCCCCCC +CCCCCCC66CCCCCCC +CCCCCCC66CCCCCCC +CCCCCCC66CCCCCCC +CCCCCCC66CCCCCCC +CCC6CCCCCCCC6CCC +CC666CCCCCC666CC +C66666CCCC66666C +CCC6CCCCCCCC6CCC +CCC6CCCCCCCC6CCC +CCC6CCCCCCCC6CCC +CCC6CCCCCCCC6CCC +CCC6CCCCCCCC6CCC +CCCCCCCCCCCCCCCC +CCCCCCCCCCCCCCCC` ], + [ wall, bitmap` +1111111111111111 +1L111111111111L1 +1111111111111111 +1111111111111111 +1111111111111111 +1111111111111111 +1111111111111111 +1111111111111111 +1111111111111111 +1111111111111111 +1111111111111111 +1111111111111111 +1111111111111111 +1111111111111111 +1L111111111111L1 +1111111111111111` ], + [ exit, bitmap` +LLLLLLLLLLLLLLLL +LLLLLLLLLLLLDDDD +L4444L4LLL4L4LDL +L4LLLLL4L4LLLLDL +L4444LLL4LLL4LDL +L4LLLLL4L4LL4LDL +L4444L4LLL4L4LDL +LLLLLLLLLLLLLLLL +LLLLLLLLLLLLLLLL +LLLLLLLLLLLLDLLL +LLLLLLLLLLLLDDLL +LL44444444DDDDDL +LLLLLLLLLLLLDDLL +LLLLLLLLLLLLDLLL +LLLLLLLLLLLLLLLL +LLLLLLLLLLLLLLLL`], + [ fake, bitmap` +1111111111111111 +1C111111111111C1 +1111111111111111 +1111111111111111 +1111111111111111 +1111111111111111 +1111111111111111 +1111111111111111 +1111111111111111 +1111111111111111 +1111111111111111 +1111111111111111 +1111111111111111 +1111111111111111 +1C111111111111C1 +1111111111111111`], + [ glass, bitmap` +LLLLLLLLLLLLLLLL +LLLLLLLLLLLLLLLL +LLLLLLLLLLLLLLLL +LLLLLLLLLLLLLLLL +LLLLLLLLLLLLLLLL +LLLLLLLLLLLLLLLL +LLLLLLLLLLLLLLLL +LLLLLLLLLLLLLLLL +LLLLLLLLLLLLLLLL +LLLLLLLLLLLLLLLL +LLLLLLLLLLLLLLLL +LLLLLLLLLLLLLLLL +LLLLLLLLLLLLLLLL +LLLLLLLLLLLLLLLL +LLLLLLLLLLLLLLLL +LLLLLLLLLLLLLLLL`], + [ fake2, bitmap` +1111111111111111 +1CC1111111111CC1 +1CC1111111111CC1 +1111111111111111 +1111111111111111 +1111111111111111 +1111111111111111 +1111111111111111 +1111111111111111 +1111111111111111 +1111111111111111 +1111111111111111 +1111111111111111 +1CC1111111111CC1 +1CC1111111111CC1 +1111111111111111`], + [ wall2, bitmap` +1111111111111111 +1LL1111111111LL1 +1LL1111111111LL1 +1111111111111111 +1111111111111111 +1111111111111111 +1111111111111111 +1111111111111111 +1111111111111111 +1111111111111111 +1111111111111111 +1111111111111111 +1111111111111111 +1LL1111111111LL1 +1LL1111111111LL1 +1111111111111111` ], +) + +setSolids([player, wall, glass, wall2]) +setBackground(glass) + +let level = 0 +const levels = [ + map` +wwwwwwwwwwwwww +p............w +wwwww.wwww.w.w +w...w.wwww.w.w +www.w.wwww...w +ww..w......w.w +ww.ww..wwwww.w +ww.ww..w.....w +ww.ww..w.....w +w......w.....w +w.wwww.wwwww.w +w..........w.w +wwwwwwwwwwewww`, + map` +wwwwwwwwwwwwww +w...........pw +w...wwwwwwwwww +w.w..wwww.wwww +w.ww..www....w +w.www.wwwwww.w +w.....wwwwww.w +w..ww.wwwwww.w +w..ww........w +w..ww.wwwwwwww +w..ww.wwwwwwww +w..ww.ww.....w +w..ww....www.w +wwwwwwwwwwwwew`, + map` +wwwwwwwwwwwwwwwwww +www.............ww +www.ww.wwwwwwww.ww +www.ww..wwwwwww.ww +www.www.......wpww +www.wwwwwwwww..www +www..........w..ww +www.www.wwww.ww.ww +www.www.wwww.ww.ww +www.www.www..ww.ww +www..w....w.www.ww +wwww.w....w..ww.ww +wwww.w....ww.ww..w +wwww.wwwwwww.wwwww +wwww.......w..wwww +wwwwwwwwww.wwwww.e +wwwwwwwwww.......w +wwwwwwwwwwwwwwwwww`, + map` +wwwwwwwwwwwwwwwww +w......ww.......w +w.wwwww.........w +w.......w.......w +wwwfww..wwwww...w +w...www....ww...w +w.wwwwwwww.ww...w +w.wwwwwwww.wwwwww +w.ww.......ww...w +w.ww.wwwww.ww...w +w.wwwwwwww.ww...w +w........w.ww...w +ww.wwwww.w.ww...w +ww.wwwww.w.ww...w +ww.wwwwwewp.....w +ww.....wwwwww...w +wwwwwwwwwwwwwwwww`, + map` +vvvvvvvvvvvvvvvvvvvvvvvvvvvv +v..........................v +v.vvvvvvvvvvvvvvvvvvvvvvvv.v +v.v....v................vv.v +v.v....vvv............vvvv.v +v.v......vv............v.v.v +v.vvv.....v....vvvvvvv...v.v +v.vvv.........vvvvvv.v...v.v +v.v.vvv....vvvv......v...v.v +v.v.v.vvvv.v.......vvv...v.v +v.v.v....v.vv...v..v.v...v.v +v.v.v....v.vvv..v....v...v.v +v.v.v.vv.vpvek..v.vvvv...v.v +v.v.v....vvvvv..v....v...v.v +v.v.v......v....v....v...v.v +v.v.v......v.vvvv....vvv.v.v +v.v.v.vvvv.v.v..v..vvv.v.v.v +v.v.v.vv.v.v.v.vv.vv.v.v.v.v +v.v.v.vv.v.v.v....v..v.v.v.v +v.v.v.vv.v.v.v.......v.v.v.v +v.v.v.vv.v.v.vvvvvvvvv...v.v +v.v.v....v.v.........v...v.v +v.v.vvvvvvvvvvvvvv...v...v.v +v.v..................v...v.v +v.vvvvvvvvvvvvvvvv...vv..v.v +v....................v.....v +vvvvvvvvvvvvvvvvvvvvvvvvvvvv`, + map` +vvvvvvvvvvvvvvvvvvvvvvvvvvvv +v..........................v +v..vvv.....................v +v..v.vvvvvv........vvv.....v +v..v.......vvvvvvvvv.vv....v +v.vv..v.....v.........vv...v +v.vv..vv...............v...v +v.vv........vv.vvvvvvv.vkv.v +v..v...vv....vvv.........vvv +v..v..........vv...........v +v..vv.vvvv......vvvvvvv....v +v...v.v..v.vvvvvv.....v....v +v...v.v....vp.........v....v +v...vvv.vvvvvvvvv.....v....v +v...vv...........vv...v....v +v....vvv..........vvv.vv...v +v......vv.............vv...v +v..v....v......vvvvvvvv....v +v..vv...v.vvvvvv...vv......v +v.......v..........v...vvv.v +v...vvvvvvvvvvvvvvvvv..vvv.v +v...v...............v......v +v..vv......v........v......v +v..vv......vv....v..v....vvv +v...vvvv.........v..vvvvvvvv +v.........................ev +vvvvvvvvvvvvvvvvvvvvvvvvvvvv`, + map` +wwwwwwwwwwwwwwwwww +wp.....wwwwwwwwwww +wwwwww.wwwwwwwwwww +wwwwww.wwwwwwfwwww +wwwwww.wwwwfwwwwww +wwwwww.wwwwwwwwwww +wwwwww.wwwwwwwwwww +wwwwww.wwwwfwwwwww +wwwwww.wwwwwwwwfww +wwwwww.wwwwwwwwwww +wwwwww.wwwwwwwwwww +wwwwww.wwwwwwwwwww +wwwwww.wwwwwwwwwww +wwwwww.wwwwwwwwwww +wwwwww.wwwwwwwwwww +wwwwww.........gew +wwwwwwwwwwwwwwfffw`, +] +const levelWinsX = [10,12,17,8,12,26,16] // copy and replace line +const levelWinsY = [12,13,15,14,12,25,15] // copy and replace line +setMap(levels[level]) + +setPushables({ + [ player ]: [] +}) + +onInput("w", () => { + if (won == false) getFirst(player).y -= 1; +}); + +onInput("a", () => { + if (won == false) getFirst(player).x -= 1; +}); + +onInput("s", () => { + if (won == false) getFirst(player).y += 1; +}); + +onInput("d", () => { + if (won == false) getFirst(player).x += 1; +}); + +onInput("j", () => { + if (level != levels.length - 1) { + level += 1 + setMap(levels[level]) + } +}) + +afterInput(() => { + console.log(`If: ${getFirst(player).x}, ${getFirst(player).y} is the end replace each line:`) + levelWinsX.push(getFirst(player).x) + levelWinsY.push(getFirst(player).y) + console.log(`const levelWinsX = [${levelWinsX}] // copy and replace line`) + console.log(`const levelWinsY = [${levelWinsY}] // copy and replace line`) + levelWinsX.pop() + levelWinsY.pop() + if (getFirst(player).x == levelWinsX[level] && getFirst(player).y == levelWinsY[level]) { + if (level === levels.length - 1) { + addText("You've Won!", { color: color`C` }); + won = true + } else { + level += 1; + setMap(levels[level]); + } + } +}); \ No newline at end of file diff --git a/games/img/The-Box-Adventure-Maze.png b/games/img/The-Box-Adventure-Maze.png new file mode 100644 index 0000000000000000000000000000000000000000..86ff2cc386b38bfd6e869da3393a3b722ebf1e51 GIT binary patch literal 3135 zcmcJRd011~8OAR%z&I3`v5JKjQd=n%P%1W1$bvX%26;+ENFahz1~4k?fQBU?;)CcY zA%luc5fVpg!6XJk5M&83P(Z?_RS1iOMI)Gm-Q=L6|pz-{~03+Uk!veTcP z0Dwo=RrzZ{&+8+;B1Hj!ejR*iG=}E~0)Xyg7iTBWm?NWoPH9^^zR(`{N9pc8*+5ft z;qE#U?>IvSjhaOFH+)JH6lP}ETsKOJ*YU{)w(t~sazd_@De~yEetL>PjAtf0Z{3wn zawn;u$->0(FO>y}>VEBrx-oI3`1BPWjWBnYE&)~DryN^|u67`9p^^nSWm6pSNI)kw zkl7)yOr1+jYrT&pwHvo0Wu$JD3{!;fgQt_sJ3Hut4 z1~NHh+Vd<0N1mfF?KYQ@VriuD^aP@!#A9c~wA}M&#qNuNV56f7YoLK{@>^8W(VjQu zP25PD-b>O{JqL(HV>BS+CT2!p&agCur<(2SQw@EmW1}&`6XnjkB{KhbJ3<2d}+Ar zItEuBzFBi=;H*}?kEcCT&M%KX=gxe{GlJKbTXqy<`KAU0!S;ad0fWy;4eLVR+|t?~ z>c(W@i7E-IAg^jx`UqG3bJU!oW)v0Dm6Ouxp($S!VGJ+Vj5_#sVGKQU1HhxF4I+H> zH&cLJ&F&Wi;`xjx?b1o*?>MH_ErQ426kOjpjOwq+tixZ|*sYT`$LZs3@ zW0)n4a6Kcm;{5qDePt{d8vm(Bxs`jP_~!D5H-e=J%(xazM=Qu zU|F+}SD0N*J}hawIqb=>g!o}k8C&0$B3Ga-&j2SbSdbHY8r|wIt(|b**EjU=6rGY2 zozGj&bIQj{&Vfg|uN;;b&u0sxf*|xH$fE)rfti=@AX-(NdTkZQ3{i}mq|9ypYO+bq zU4AO2kifSkV*@)9O1D>n!fQN0}T1_L1 zf=Ot`IZB?#WYV3iyY|yt*kcu;gMw)Axq?@lmdTT*JhkPhQVYt#kY@d2cgWPiAzWMs z)j_(;!4}S);FEarDtHnk!y}ga2z!mE60&Z6QtB@u$3p@e=@xJKA9CZW%w54qTZz-Y zN2GS47>=_d1|gOP2`DS3=Ukl4AXL;x{*rjQ!K;r-vC!_B2rQkzU+EyW&gD-J1TD+N zFh{-ini)Zml8x)6dMaWsvZ81!u;OCGxTlb=7|) zjb7lV7?2bsD{2wjH^A>;NAUgFK*)lKdqg(Ynjtq_JYLlE1z8VKB;|W619c)s-+8jE zG1Qx9(sHaFSySK4A1WBqToqwC(vkM3;F<3T%=!wuf^&T(5jE^PSqk@I4fvK{3gU7XLJ+vt z>JRjE-=3*KO>>uZD5Fjv>I&6aj3~&u8ym3=O3>aS&G!gHKyVvb?U!By(1X5rl>jpS z58ik0I4|Q#r@zh{I#-d)g|qd?Tbyzb?o|ex!UmbYW1D=_i97jtJ|H6l>|>EKG2H|% zZ`Df%?Ow?FN<`68JM@|x=H)`DX}HGIMdWy)hB)+*e6Z2Na=e1T-{I4+&KLFZCx@+Y zRfzM$?5qT_!CR5Ec`U6QqAtN1CvYT^V*4Q!`mT!<{yI-eSb5xZYrll_^ZUE5nHRzVIBMDr;qU-u`Oh)mfa>6`S0nFTc%+_Ho6Uq-O<3ji(-PX~msKEB-SlO3%(pZk z*<`|MlVe=uoO3kdWbaTRKUE9rhimr6D;L;0_*3i!L~CTlsHSb=RjBC)T=u#-bNBq^ G?7sm0EgDn+ literal 0 HcmV?d00001