From 9d6e089d7b502ca634039e5772202fb63fcfe12f Mon Sep 17 00:00:00 2001 From: Atharv Gupta <68207224+atharvgups@users.noreply.github.com> Date: Thu, 30 May 2024 06:47:40 -0700 Subject: [PATCH] the-ambitious-ape-maze-game (#1719) * The Ambitious Ape Maze Game * Fixing title and metadata * adding screenshot to make gallery look presentable --------- Co-authored-by: graham --- games/ambitious_ape_maze_game.js | 268 ++++++++++++++++++++++++++ games/img/ambitious_ape_maze_game.png | Bin 0 -> 5150 bytes 2 files changed, 268 insertions(+) create mode 100644 games/ambitious_ape_maze_game.js create mode 100644 games/img/ambitious_ape_maze_game.png diff --git a/games/ambitious_ape_maze_game.js b/games/ambitious_ape_maze_game.js new file mode 100644 index 0000000000..c959900b0b --- /dev/null +++ b/games/ambitious_ape_maze_game.js @@ -0,0 +1,268 @@ +/* +@title: The Ambitious Ape Maze Game +@author: atharv gupta +@tags: ['maze'] +@img: "" +@addedOn: 2024-05-28 +*/ + +const player = "p"; +const wall = "w"; +const goal = "g"; +const key = "k"; +const lock = "l"; +const box = "b"; + +setLegend( + [player, bitmap` +.....CCCCCCC.... +.....C99999C.... +.....C9C9C9C.... +....CC99999C.... +...CCC99C99CC... +...CCC99999CCC.. +..CC9CCCCCCC9C.. +..C9999999999C.C +..C99C99999C9CC9 +..CC9CC999CC9C9. +...C99C999C99C.. +...CC9999999CC.. +....CC999CCCC... +.....CCCCC...... +................`], + [wall, bitmap` +................ +................ +................ +................ +...D.4.D.4.D.... +...D.4.D.4.D.... +..444D4D4D444... +...D.4.D.4.D.... +...D.4.D.4.D.... +..D4D4D4D4D4D... +...D.4.D.4.D.... +..4D4D444D444... +...D.4.D.4.D.... +................ +................ +................`], + [goal, bitmap` +................ +................ +................ +................ +.......LL....... +......LLFL...... +......LFLL...... +.....LFLFLL..... +.....LLFLFLF.... +.....LFLFLFL.... +....LFLFLFLF.... +...LFLFLFLFLL... +...FLFLLLFLLF... +................ +................ +................`], + [key, bitmap` +................ +................ +................ +................ +................ +............6666 +..6666.....66676 +..6776.....6.666 +..6776666666.6.6 +..67766......6.6 +..6666.......... +................ +................ +................ +................ +................`], + [lock, bitmap` +................ +................ +................ +................ +.....555555..... +....55777755.... +....57777775.... +...5555555555... +..55777777775... +..57777577775... +..57777577775... +..55777557755... +...555777755.... +.....555555..... +................ +................`], + [box, bitmap` +................ +................ +................ +................ +.....0000000.... +.....0LLLLL0.... +.....0L111L0.... +.....0L121L0.... +.....0L111L0.... +.....0LLLLL0.... +.....0000000.... +................ +................ +................ +................ +................`] +); + +const melody1 = tune` +500, +500: C5~500, +15000`; +const melody2 = tune` +500, +500: D4^500, +15000`; +const melody3 = tune` +500, +500: B4~500, +15000`; +const melody4 = tune` +500, +500: E5^500, +15000`; + +setSolids([player, wall, box, lock]); + +let level = 0; +const levels = [ + map` +pw +.g`, + map` +pw +.. +wg`, + map` +p.w +wb. +w.g`, + map` +p.ww +.bkw +.b.w +..lg`, + map` +wkw.lg +.b.blw +...b.w +.wwkww +pwwwww`, + map` +p..b.ww +wwb.wwk +ww.b... +ww..www +ww...ww +wlbw..w +gl.ww.k`, + map` +pl..b.ww +bwww.www +.www.www +.b...kww +...ww.ww +ww.ww.ww +...w..ww +.w.ww.lw +kwwwwwgw`, + map` +p.w.....wwwwwk +.bwbww..www.w. +.ww.wkbw...... +.wwwww.wwb.w.. +.wwww.....ww.b +.w....www.wwb. +...bwwwww.ww.w +.bwwkw......bw +b.wwwwwwwwwlww +.wwwwwwwwww.ww +kwwwwwwwgl....`, + map` +kwwgll.w...wk +..wwwlw.w.bb. +.bwwl.....bw. +..ww.wwwwwbw. +w.b..w.....w. +w.b..wwbb.w.. +..b...wpw.w.. +..ww....ww.b. +..wwbbb.....b +.bww...ww..b. +.bwwww.bwww.. +kwwwkwwb.kwwk` + +]; + +setPushables({ + [player]: [box], + [box]: [box] +}); + + +onInput("w", () => { + getFirst(player).y -= 1; + playTune(melody1); +}); + +onInput("a", () => { + getFirst(player).x -= 1; + playTune(melody2); +}); + +onInput("s", () => { + getFirst(player).y += 1; + playTune(melody3); +}); + +onInput("d", () => { + getFirst(player).x += 1; + playTune(melody4); +}); + +setMap(levels[level]); + + +onInput("j", () => { + const currentLevel = levels[level]; + + if (currentLevel !== undefined) { + clearText(""); + setMap(currentLevel); + } +}); + +afterInput(() => { + const goalsCovered = tilesWith(player, goal); + + if (goalsCovered.length >= 1) { + level = level + 1; + const currentLevel = levels[level]; + + if (currentLevel !== undefined) { + setMap(currentLevel); + } else { + addText("you win!", { y: 4, color: color`3` }); + } + } + + const keysTaken = tilesWith(player, key); + + if (keysTaken.length >= 1) { + getFirst(lock).remove(); + let playguy = getFirst(player) + getTile(playguy.x, playguy.y)[1].remove(); + } +}); diff --git a/games/img/ambitious_ape_maze_game.png b/games/img/ambitious_ape_maze_game.png new file mode 100644 index 0000000000000000000000000000000000000000..25ae7349bd1489e73c77fe6308e39eeb1f5739c3 GIT binary patch literal 5150 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 literal 0 HcmV?d00001