From c99621b46339e90ef2007cdce2148bd7bef4d863 Mon Sep 17 00:00:00 2001 From: doggo742 Date: Sun, 2 Feb 2025 17:11:36 -0500 Subject: [PATCH] Sprig App - Maze Ball --- games/Maze-Ball.js | 159 ++++++++++++++++++++++++++++++++++++++++ games/img/Maze-Ball.png | Bin 0 -> 182 bytes 2 files changed, 159 insertions(+) create mode 100644 games/Maze-Ball.js create mode 100644 games/img/Maze-Ball.png diff --git a/games/Maze-Ball.js b/games/Maze-Ball.js new file mode 100644 index 0000000000..b4fb64d3d7 --- /dev/null +++ b/games/Maze-Ball.js @@ -0,0 +1,159 @@ +/* +First time? Check out the tutorial game: +https://sprig.hackclub.com/gallery/getting_started + +@title: Maze Ball +@author: +@tags: [] +@addedOn: 2024-00-00 +*/ + +const player = "p" +const wall = "w" +const goal = "g" +setLegend( + [ player, bitmap` +................ +................ +.....555555..... +...5555555555... +...5555555555... +..555555555555.. +..555555555555.. +..555555555555.. +..555555555555.. +..555555555555.. +..555555555555.. +...5555555555... +...5555555555... +.....555555..... +................ +................` ], + [ wall, bitmap` +LLLLLLLLLLLLLLLL +LLLLLLLLLLLLLLLL +LLLLLLLLLLLLLLLL +LLLLLLLLLLLLLLLL +LLLLLLLLLLLLLLLL +LLLLLLLLLLLLLLLL +LLLLLLLLLLLLLLLL +LLLLLLLLLLLLLLLL +LLLLLLLLLLLLLLLL +LLLLLLLLLLLLLLLL +LLLLLLLLLLLLLLLL +LLLLLLLLLLLLLLLL +LLLLLLLLLLLLLLLL +LLLLLLLLLLLLLLLL +LLLLLLLLLLLLLLLL +LLLLLLLLLLLLLLLL` ], + [ goal, bitmap` +................ +................ +.....DDDDDD..... +...DDDDDDDDDD... +...DD......DD... +..DD........DD.. +..DD........DD.. +..DD........DD.. +..DD........DD.. +..DD........DD.. +..DD........DD.. +...DD......DD... +...DDDDDDDDDD... +.....DDDDDD..... +................ +................` ], +) +// Make sure each sprite definition is enclosed in square brackets within the setLegend function call. +setSolids([wall, player]) + +// Add this code inside the afterInput block to check for reaching the goal +afterInput(() => { + const playerSprite = getFirst(player) + const goalTile = getTile(playerSprite.x, playerSprite.y).find(sprite => sprite.type === goal) + +// Add this code inside the afterInput block to check for reaching the goal +afterInput(() => { + const playerSprite = getFirst(player) + const goalTile = getTile(playerSprite.x, playerSprite.y).find(sprite => sprite.type === goal) + + if (goalTile) { + level++ + clearTile(playerSprite.x, playerSprite.y) + if (levels[level]) { + setMap(levels[level]) + } else { + console.log("You have completed all levels!") + } + } +}) +let level = 0 +const levels = [ + map` +wwwwwwwwwww +w.........w +w.wwwww.w.w +w.w...w.www +w.w.www...w +w...wp..w.w +www.wwwwwww +w......w.gw +w.www.ww.ww +w...w.....w +wwwwwwwwwww`, + map` +wwwwwwwwwww +w...w.....w +w.w.wwwww.w +w.w.......w +w.wwwwwww.w +w.wpwg..w.w +w.w.www.w.w +w.w.w...w.w +w.w.w.www.w +w...w.....w +wwwwwwwwwww`, + map` +wwwwwwwwwww +w........pw +w.wwwwwwwww +w.w...w.w.w +w.www.w.w.w +w...w.w...w +w.w.w.w.www +w.w.......w +www.wwwww.w +w.....wg..w +wwwwwwwwwww`, + map` +wwwwwwwwwww +wp......w.w +wwwww.www.w +w.........w +w.www.....w +w.w.......w +wwwww.....w +w.........w +wwwwww....w +w........gw +wwwwwwwwwww` +] + +setMap(levels[level]) + +setPushables({ + [ player ]: [] +}) + +onInput("s", () => { + getFirst(player).y += 1 +}) +onInput("w", () => { + getFirst(player).y -= 1 +}) +onInput("d", () => { + getFirst(player).x += 1 +}) +onInput("a", () => { + getFirst(player).x -= 1 +}) \ No newline at end of file diff --git a/games/img/Maze-Ball.png b/games/img/Maze-Ball.png new file mode 100644 index 0000000000000000000000000000000000000000..39f63c6234ba906d0f06d131554b5eb333515186 GIT binary patch literal 182 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`jKx9jP7LeL$-D$|3OrpLLoEE0 zQx*sqBwhX=b^NcrUa{-?H!c^O6B+Ez8aPknZIo_U7x?(8&zyPHzoQt}@t;v}H9iwE zLvf2CLkhQRoPx+^iAE2f6Ux$79J~#d{SoUEd_8VlV)jwob#RL@!%fi_GufVTHO=e{ ekaC#L&am)`k6_^RDS<${89ZJ6T-G@yGywqh2t8{6 literal 0 HcmV?d00001