From 23eaf63a318970257709a7a9a1bee2d21dca0b8a Mon Sep 17 00:00:00 2001 From: Gober Date: Fri, 16 Oct 2026 22:08:51 -0400 Subject: [PATCH 1/5] Upload gobermaze.js --- games/gobermaze.js | 329 +++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 329 insertions(+) create mode 100644 games/gobermaze.js diff --git a/games/gobermaze.js b/games/gobermaze.js new file mode 100644 index 0000000000..ed5b7a2e90 --- /dev/null +++ b/games/gobermaze.js @@ -0,0 +1,329 @@ +/* +@title: gobermaze +@description: silly lil maze game about a creature who loves eating nachos! use j to reset level, use l to eat the nachos you're standing next to, eat all the nachos to go to the next level! +@author: gober +@tags: [puzzle, maze, food] +@addedOn: 2026-10-16 +*/ + +const player = "p"; +const nachos = "n"; +const block = "b"; +const target = "t"; +const wall = "w"; +const moveBlip = tune` +77.92207792207792: G4/77.92207792207792, +2415.5844155844156` +const killBlip = tune` +56.60377358490566: D4/56.60377358490566, +56.60377358490566: E4/56.60377358490566, +56.60377358490566: D5/56.60377358490566, +1641.5094339622642` +const resetBlip = tune` +46.875: A4/46.875, +46.875: E4/46.875, +46.875: C4/46.875, +1359.375` +const winTune = tune` +114.50381679389314: F4/114.50381679389314, +114.50381679389314: C5/114.50381679389314, +114.50381679389314: A4/114.50381679389314, +114.50381679389314, +114.50381679389314: C5/114.50381679389314, +114.50381679389314: E5/114.50381679389314, +114.50381679389314: D5/114.50381679389314, +114.50381679389314: C5/114.50381679389314, +114.50381679389314: D5/114.50381679389314, +114.50381679389314: C5/114.50381679389314, +2519.083969465649` +const nextLevelBlip = tune` +47.543581616481774: D4/47.543581616481774, +47.543581616481774: D5/47.543581616481774, +47.543581616481774: A4/47.543581616481774, +1378.7638668779714` +setLegend( + [player, bitmap` +................ +................ +................ +................ +......888.88.... +.....888888.8... +....888888888... +...888888888.... +...8880888088... +....8888888880.. +.....8080808000. +.....880808.000. +.....888888..0.. +.....888888000.. +.....88..88..... +................`], + [wall, bitmap` +0000000000000000 +0000000000000000 +0000000000000000 +0000000000000000 +0000000000000000 +0000000000000000 +0000000000000000 +0000000000000000 +0000000000000000 +0000000000000000 +0000000000000000 +0000000000000000 +0000000000000000 +0000000000000000 +0000000000000000 +0000000000000000`], + [nachos, bitmap` +................ +................ +................ +................ +................ +................ +................ +................ +....99.99.99.... +..996696696699.. +1196969669696911 +12116CCCCCC61121 +1122111111112211 +.11222222222211. +..111222222111.. +....11111111....`], + [block, bitmap` +................ +................ +................ +................ +...7777777777... +...7777777777... +...7777777777... +...7777777777... +...7777777777... +...7777777777... +...7777777777... +...7777777777... +...7777777777... +...7777777777... +................ +................`], + [target, bitmap` +................ +................ +................ +..44........44.. +..444......444.. +....44....44.... +.....44..44..... +......44444..... +.......444...... +......44444..... +.....44..444.... +....44....444... +...44......44... +...44........... +................ +................`], +) + +setSolids([player, wall, nachos]); + +let level = 0 +const levels = [ + map` +pwwww.tw +.www...w +.ww..www +....wwww +www.wwwn +www..... +ww..ww.. +ww.wwww.`, + + map` +wwtwww +wwn.ww +www..w +p..... +ww..ww +wn.www`, + + map` +wwwwwwwww +wpwn.w..w +w.ww.w..w +w....wn.w +www.www.w +wnw.n...w +w...ww..w +www..w.tw +wwwwwwwww`, + + map` +wwwwwwwwww +p.w......w +w.w.wwww.w +w.w..nwn.w +w.wwwww..w +w.....wt.w +wwwww.ww.w +wn.......w +wwwwwwwwww`, + + map` +wwwwwwwwwwwww +p...wn..w...w +www.w.w.w.w.w +wnw...w.wnw.w +w.wwwww.www.w +w.w..nw.wn..w +w.w.w.wnw.www +w.w.w.w.w...w +w.w.w.w.www.w +w.n.w.w.wn..w +w.www.w.w.w.w +w..nw..t..w.w +wwwwwwwwwwwww`, + + map` +wwwwwwwwwwwwwww +p.......wn....w +wwwwwww.www.w.w +wn....wn....w.w +www.wwwwwwwww.w +w...wn.....nw.w +w.www.w.www.w.w +w...w.wt.nw.w.w +w.w.w.www.www.w +w.wn....w.w..nw +w.wwwwwww.w.www +w.wn..wn..w...w +w.www.w.wwwww.w +w.....w.......w +wwwwwwwwwwwwwww`, + + map` +wwwwwwwwwwwwwwwwwww +p.....wt.........nw +wwwww.w.wwwwwww.www +wnw...w......nw...w +w.w.wwwwwwwww.www.w +w.w.wn..w...w.w...w +w.w.w.w.w.w.w.w.w.w +w.w.w.w..nw.w.w.wnw +w.w.w.wwwwwww.w.www +w...w.w.....w.wn..w +w.www.w.www.w.www.w +w...wn...nw.w..nw.w +www.wwwww.w.w.www.w +wnw...w...w...w..nw +w.www.wwwww.www.www +w.....w...w..nwn..w +w.wwwww.w.wwwwwww.w +w.......wn........w +wwwwwwwwwwwwwwwwwww`, + + map` +wwwwwwwwwwwwwwwwwwww +p.w..nw...........ww +w.w.www.w.wwwwwww.ww +w.w.....w.wn....w.ww +w.www.www.www.www.ww +w...w.w...w...wn..ww +www.w.w.www.w.w.wwww +wnw.w.w..nw.wnw...nw +w.w.w.www.w.wwwwww.w +w.w.w.wnw.w.....nw.w +w.w.w.w.w.w.www..w.w +w...w...w.w..nw..w.w +w.wwwwwww.w.www.ww.w +wn......w.wnw...w..w +wwwwwww.w.www.w.w..w +w.....w.w...w.wnwn.w +w.w.www.www.w.wwww.w +wnw.........w.....tw +wwwwwwwwwwwwwwwwwwww`, +] + +setMap(levels[level]) + +setPushables({ + [player]: [block], + [block]: [block] +}) + +onInput("w", () => { + playTune(moveBlip); + getFirst(player).y += -1 +}) + +onInput("a", () => { + playTune(moveBlip); + getFirst(player).x += -1 +}) + +onInput("s", () => { + playTune(moveBlip); + getFirst(player).y += 1 +}) + +onInput("d", () => { + playTune(moveBlip); + getFirst(player).x += 1 +}) + +onInput("i", () => { + playTune(moveBlip); +}) + +onInput("j", () => { + playTune(resetBlip); + const currentLevel = levels[level]; // get the original map of the level + + // make sure the level exists before we load it + if (currentLevel !== undefined) { + clearText(""); + setMap(currentLevel); + } +}) + +onInput("k", () => { + playTune(moveBlip); +}) + +onInput("l", () => { + playTune(killBlip); + + const pSprite = getFirst(player); + if (!pSprite) return; + + const nearbyEnemies = getAll(nachos).filter(eSprite => { + const dx = Math.abs(pSprite.x - eSprite.x); + const dy = Math.abs(pSprite.y - eSprite.y); + return dx <= 1 && dy <= 1; + }); + + if (nearbyEnemies.length > 0) { + nearbyEnemies[0].remove(); + } +}) + +afterInput(() => { + const numberOfGoalsCovered = tilesWith(player, target).length; + const enemiesLeft = getAll(nachos).length; + + // must be standing on the target and all level enemies must be totally gone :P + if (numberOfGoalsCovered > 0 && enemiesLeft === 0) { + level = level + 1; + if (level < levels.length) { + playTune(nextLevelBlip); + setMap(levels[level]); + } else { + playTune(winTune); + addText("you win!", { y: 4, color: color`3` }) + } + } +}) \ No newline at end of file From 62bae00d6966955127108b6fd1f9a400692a3f90 Mon Sep 17 00:00:00 2001 From: Gober Date: Fri, 16 Oct 2026 22:28:57 -0400 Subject: [PATCH 2/5] Rename gobermaze.js to Gober_Nacho_Maze.js also fixed formatting --- games/gobermaze.js => game/Gober_Nacho_Maze.js | 15 ++++++++------- 1 file changed, 8 insertions(+), 7 deletions(-) rename games/gobermaze.js => game/Gober_Nacho_Maze.js (96%) diff --git a/games/gobermaze.js b/game/Gober_Nacho_Maze.js similarity index 96% rename from games/gobermaze.js rename to game/Gober_Nacho_Maze.js index ed5b7a2e90..647fe57acd 100644 --- a/games/gobermaze.js +++ b/game/Gober_Nacho_Maze.js @@ -1,5 +1,5 @@ /* -@title: gobermaze +@title: Gober Nacho Maze @description: silly lil maze game about a creature who loves eating nachos! use j to reset level, use l to eat the nachos you're standing next to, eat all the nachos to go to the next level! @author: gober @tags: [puzzle, maze, food] @@ -13,17 +13,17 @@ const target = "t"; const wall = "w"; const moveBlip = tune` 77.92207792207792: G4/77.92207792207792, -2415.5844155844156` +2415.5844155844156`; const killBlip = tune` 56.60377358490566: D4/56.60377358490566, 56.60377358490566: E4/56.60377358490566, 56.60377358490566: D5/56.60377358490566, -1641.5094339622642` +1641.5094339622642`; const resetBlip = tune` 46.875: A4/46.875, 46.875: E4/46.875, 46.875: C4/46.875, -1359.375` +1359.375`; const winTune = tune` 114.50381679389314: F4/114.50381679389314, 114.50381679389314: C5/114.50381679389314, @@ -40,7 +40,8 @@ const nextLevelBlip = tune` 47.543581616481774: D4/47.543581616481774, 47.543581616481774: D5/47.543581616481774, 47.543581616481774: A4/47.543581616481774, -1378.7638668779714` +1378.7638668779714`; + setLegend( [player, bitmap` ................ @@ -315,7 +316,7 @@ afterInput(() => { const numberOfGoalsCovered = tilesWith(player, target).length; const enemiesLeft = getAll(nachos).length; - // must be standing on the target and all level enemies must be totally gone :P + // must be standing on the target and all level nachos must be totally gone :P if (numberOfGoalsCovered > 0 && enemiesLeft === 0) { level = level + 1; if (level < levels.length) { @@ -326,4 +327,4 @@ afterInput(() => { addText("you win!", { y: 4, color: color`3` }) } } -}) \ No newline at end of file +}) From 79d9b8cfb1db54aa961482ba8feef0327c4da2cf Mon Sep 17 00:00:00 2001 From: Gober Date: Fri, 16 Oct 2026 22:43:23 -0400 Subject: [PATCH 3/5] Revise metadata in Gober Nacho Maze Updated the game description for clarity. --- game/Gober_Nacho_Maze.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/game/Gober_Nacho_Maze.js b/game/Gober_Nacho_Maze.js index 647fe57acd..205526587c 100644 --- a/game/Gober_Nacho_Maze.js +++ b/game/Gober_Nacho_Maze.js @@ -1,6 +1,6 @@ /* @title: Gober Nacho Maze -@description: silly lil maze game about a creature who loves eating nachos! use j to reset level, use l to eat the nachos you're standing next to, eat all the nachos to go to the next level! +@description: A little pink creature moving through a maze to eat all the nachos. @author: gober @tags: [puzzle, maze, food] @addedOn: 2026-10-16 From c5b0dea18fe8eb3bd64765635d0358f629d21515 Mon Sep 17 00:00:00 2001 From: Gober Date: Fri, 16 Oct 2026 22:58:13 -0400 Subject: [PATCH 4/5] Move Gober_Nacho_Maze.js file --- {game => games}/Gober_Nacho_Maze.js | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename {game => games}/Gober_Nacho_Maze.js (100%) diff --git a/game/Gober_Nacho_Maze.js b/games/Gober_Nacho_Maze.js similarity index 100% rename from game/Gober_Nacho_Maze.js rename to games/Gober_Nacho_Maze.js From b6194184c79967805608c338bd42c56545cd9152 Mon Sep 17 00:00:00 2001 From: Gober Date: Fri, 16 Oct 2026 23:14:36 -0400 Subject: [PATCH 5/5] Update Gober_Nacho_Maze.js fixed metadata so the bot doesnt whine --- games/Gober_Nacho_Maze.js | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/games/Gober_Nacho_Maze.js b/games/Gober_Nacho_Maze.js index 205526587c..c74cd010fe 100644 --- a/games/Gober_Nacho_Maze.js +++ b/games/Gober_Nacho_Maze.js @@ -1,8 +1,8 @@ -/* +/* @title: Gober Nacho Maze -@description: A little pink creature moving through a maze to eat all the nachos. @author: gober -@tags: [puzzle, maze, food] +@description: A little pink creature moving through a maze to eat all the nachos. +@tags: ['music', 'maze'] @addedOn: 2026-10-16 */