From c95260f4753e4e75f50ba7ce1765a8b459f2f4c0 Mon Sep 17 00:00:00 2001 From: Itz-Hex <90038308+Itz-Hex@users.noreply.github.com> Date: Mon, 28 Aug 2023 17:18:51 +0100 Subject: [PATCH 01/17] The Legend of Zelda: Link's Escape (#1121) * The Legend of Zelda: Link's Escape Made by ItzHex * Update and rename The Legend of Zelda Link's Escape.js to The_Legend_of_Zelda-Links_Escape * Update The_Legend_of_Zelda-Links_Escape Added Music. Exponential speed up over time. * Update The_Legend_of_Zelda-Links_Escape added castle to title screen and some other minor changes --- games/The_Legend_of_Zelda-Links_Escape | 1277 ++++++++++++++++++++++++ 1 file changed, 1277 insertions(+) create mode 100644 games/The_Legend_of_Zelda-Links_Escape diff --git a/games/The_Legend_of_Zelda-Links_Escape b/games/The_Legend_of_Zelda-Links_Escape new file mode 100644 index 0000000000..a1fa94a310 --- /dev/null +++ b/games/The_Legend_of_Zelda-Links_Escape @@ -0,0 +1,1277 @@ +// @name: The Legend of Zelda: Link's Escape +// @author: ItzHex + +const player = "p" + +const ground = "g" + +const sky = "s" + +const moblin = "r" + +const lynel = "l" + +const bg0 = "0" +const bg1 = "1" +const bg2 = "2" +const bg3 = "3" +const bg4 = "4" +const bg5 = "5" +const bg6 = "6" +const bg7 = "7" +const bg8 = "8" +const bg9 = "9" +const bg10 = "a" +const bg11 = "b" +const bg12 = "v" +const bg13 = "d" +const bg14 = "c" +const bg15 = "f" +const bg16 = "h" +const bg17 = "i" +const bg18 = "j" +const bg19 = "k" +const bg20 = "m" +const bg21 = "n" +const bg22 = "o" +const bg23 = "q" +const bg24 = "t" + +var gameRunning = false; + +var titlescreen = true; + +var score = 0; + +var isReady = false; + +var isJumping = false; + +var animCount = 0; + +var speed = 1; + +var multiplier = 1; + +var enemyShouldJump = 20; + +var canJump = true; + +var inAir = false; + +var mPart1 = tune` +125: A4^125, +1250, +125: A4^125, +125: A4^125, +125: A4^125, +125, +125: A4^125, +125: A4^125, +250, +125: G4^125, +125: A4^125, +750, +125: A4^125, +125: A4^125, +125: A4^125, +125, +125: A4^125`; +var mPart2 = tune` +125: A4^125, +250, +125: G4^125, +125: A4^125, +750, +125: A4^125, +125: A4^125, +125: A4^125, +125, +125: A4^125, +125: A4^125, +125, +125: E4^125, +125: E4^125, +125: E4^125, +125, +125: E4^125, +125: E4^125, +125: E4^125, +125, +125: E4^125, +125: E4^125, +125: E4^125, +125, +125: E4^125, +125`; +var mPart3 = tune` +125: A4^125, +375, +125: E4^125, +625, +125: A4^125, +125, +125: A4^125, +125: B4^125, +125: C5^125, +125: D5^125, +125: E5^125, +1125, +125: E5^125, +125, +125: E5^125, +125: F5^125, +125, +125: G5^125`; +var mPart4 = tune` +125: A5^125, +1125, +125: A5^125, +125, +125: A5^125, +125: G5^125, +125, +125: F5^125, +125: G5^125, +250, +125: F5^125, +125: E5^125, +875, +125: E5^125, +375`; +var mPart5 = tune` +125: D5^125, +125, +125: D5^125, +125: E5^125, +125: F5^125, +875, +125: E5^125, +125, +125: D5^125, +125, +125: C5^125, +125, +125: C5^125, +125: D5^125, +125: E5^125, +875, +125: D5^125, +125, +125: C5^125, +125`; +var mPart6 = tune` +125: B4^125, +125, +125: B4^125, +125: C5^125, +125: D5^125, +875, +125: F5^125, +375, +125: E5^125, +125, +125: E4^125, +125: E4^125, +125: E4^125, +125, +125: E4^125, +125: E4^125, +125: E4^125, +125, +125: E4^125, +125: E4^125, +125: E4^125, +125, +125: E4^125, +125`; + +var bPart1 = tune` +125: A4~125 + E4~125, +375, +125: A4~125 + E4~125, +375, +125: A4~125 + E4~125, +375, +125: A4~125 + E4~125, +375, +125: G4~125 + D4~125, +375, +125: G4~125 + D4~125, +375, +125: G4~125 + D4~125, +375, +125: G4~125 + D4~125, +375`; +var bPart2 = tune` +125: C4~125 + F4~125, +375, +125: F4~125 + C4~125, +375, +125: F4~125 + C4~125, +375, +125: F4~125 + C4~125, +375, +125: E4~125 + C4~125, +375, +125: E4~125 + C4~125, +375, +125: E4~125 + C4~125, +375, +125: E4~125 + C4~125, +375`; +var bPart3 = tune` +125: A4~125 + E4~125, +375, +125: A4~125 + E4~125, +375, +125: A4~125 + E4~125, +375, +125: A4~125 + E4~125, +375, +125: G4~125 + D4~125, +375, +125: G4~125 + D4~125, +375, +125: G4~125 + D4~125, +375, +125: G4~125 + D4~125, +375`; +var bPart4 = tune` +125: C4~125 + F4~125, +375, +125: F4~125 + C4~125, +375, +125: F4~125 + C4~125, +375, +125: F4~125 + C4~125, +375, +125: G4~125 + E4~125, +375, +125: G4~125 + E4~125, +375, +125: G4~125 + E4~125, +375, +125: G4~125 + E4~125, +375`; +var bPart5 = tune` +125: D4~125 + F4~125, +375, +125: F4~125 + D4~125, +375, +125: F4~125 + D4~125, +375, +125: F4~125 + D4~125, +375, +125: E4~125 + C4~125, +375, +125: E4~125 + C4~125, +375, +125: E4~125 + C4~125, +375, +125: E4~125 + C4~125, +375`; +var bPart6 = tune` +125: D4~125 + C4~125, +375, +125: D4~125 + C4~125, +375, +125: D4~125 + C4~125, +375, +125: D4~125 + C4~125, +375, +125: C4~125 + E4~125, +375, +125: C4~125 + E4~125, +375, +125: C4~125 + E4~125, +375, +125: C4~125 + E4~125, +375`; + +async function playMusic() { + playTune(mPart1); + playTune(bPart1); + setTimeout(() => { + playTune(mPart2); + playTune(bPart2); + setTimeout(musicLoop, 4000); + }, 4000); +} + +async function musicLoop() { + playTune(mPart3); + playTune(bPart3); + setTimeout(() => { + playTune(mPart4); + playTune(bPart4); + setTimeout(() => { + playTune(mPart5); + playTune(bPart5); + setTimeout(() => { + playTune(mPart6); + playTune(bPart6); + setTimeout(musicLoop, 4000); + }, 4000); + }, 4000); + }, 4000); +} + +setLegend( + [ bg0, bitmap` +................ +................ +................ +................ +................ +...............0 +.............000 +............0000 +...........00000 +..........000000 +........00000000 +.......000000000 +.....00000000000 +...0000000000000 +0000000000000000 +0000000000000000`], + [ bg1, bitmap` +...0000000000000 +...0000000000000 +..00000000000000 +.000000000000000 +0000000000000000 +0000000000000000 +0000000000000000 +0000000000000000 +0000000000000000 +0000000000000000 +0000000000000000 +0000000000000000 +0000000000000000 +0000000000000000 +0000000000000000 +0000000000000000`], + [ bg2, bitmap` +................ +................ +................ +...........000.. +..........00000. +..........000000 +..........000000 +.........0000000 +.........0000000 +........00000000 +.......000000000 +.......000000000 +......0000000000 +.....00000000000 +.....00000000000 +....000000000000`], + [ bg3, bitmap` +................ +................ +................ +................ +................ +................ +0............... +00.............. +0000............ +000000.......... +00000000........ +0000000000...... +000000000000.... +00000000000000.. +0000000000000000 +0000000000000000`], + [ bg4, bitmap` +0000000000000000 +0000000000000000 +0000000000000000 +0000000000000000 +0000000000000000 +0000000000000000 +0000000000000000 +0000000000000000 +0000000000000000 +0000000000000000 +0000000000000000 +0000000000000000 +0000000000000000 +0000000000000000 +0000000000000000 +0000000000000000`], + [ bg5, bitmap` +................ +................ +................ +................ +................ +................ +................ +................ +................ +................ +................ +................ +................ +...........00... +...........00... +00........0000..`], + [ bg6, bitmap` +000.......00000. +0000......000000 +00000....0000000 +000000...0000000 +0000000.00000000 +0000000000000000 +0000000000000000 +0000000000000000 +0000000000000000 +0000000000000000 +0000000000000000 +0000000000000000 +0000000000000000 +0000000000000000 +0000000000000000 +0000000000000000`], + [ bg7, bitmap` +................ +................ +................ +.....0.......... +....000......... +....000......... +....000......... +....000......... +....000......... +....000......... +....000......... +....000......... +....000......... +....000.000...00 +....000.000...00 +....000.000...00`], + [ bg8, bitmap` +....000.000...00 +....000000000000 +....000000000000 +....000000000000 +....000000000000 +....000000000000 +....000000000000 +....000000000000 +....000000000000 +....000000000000 +....000000000000 +....000000000000 +....000000000000 +....000000000000 +...0000000000000 +...0000000000000`], + [ bg9, bitmap` +...0000000000000 +0000000000000000 +0000000000000000 +0000000000000000 +0000000000000000 +0000000000000000 +0000000000000000 +0000000000000000 +0000000000000000 +0000000000000000 +0000000000000000 +0000000000000000 +0000000000000000 +0000000000000000 +0000000000000000 +0000000000000000`], + [ bg10, bitmap` +................ +..............00 +..............00 +..............00 +..............00 +..............00 +...........00000 +...........00000 +...........00000 +...........00000 +...........00000 +...........00000 +...........00000 +...........00000 +.............000 +.............000`], + [ bg11, bitmap` +.............000 +...............0 +...............0 +...............0 +................ +................ +...0............ +...0............ +...0............ +...0............ +...0..0..0..0... +...0..00.00.00.. +...0..00.00.00.. +...0000000000000 +..00000000000000 +.000000000000000`], + [ bg12, bitmap` +0000000000000000 +0000000000000000 +0000000000000000 +0000000000000000 +0000000000000000 +0000000000000000 +0000000000000000 +.000000000000000 +.000000000000000 +..00000000000000 +..00000000000000 +..00000000000000 +..00000000000000 +0.00000000000000 +0.00000000000000 +0.00000000000000`], + [ bg13, bitmap` +0.00000000000000 +0000000000000000 +0000000000000000 +0000000000000000 +0000000000000000 +0000000000000000 +0000000000000000 +0000000000000000 +0000000000000000 +0000000000000000 +0000000000000000 +0000000000000000 +0000000000000000 +0000000000000000 +0000000000000000 +0000000000000000`], + [ bg14, bitmap` +................ +................ +................ +................ +................ +................ +................ +................ +................ +................ +................ +................ +................ +.....0.......... +.....0.......... +.....0..........`], + [ bg15, bitmap` +....000......... +....000......... +....000......... +....000......... +....000......... +....000......... +..0000000....... +..0000000....... +..0000000....... +..0000000....... +..0000000....... +00000000000..... +00000000000..... +00000000000..... +00000000000..... +00000000000.....`], + [ bg16, bitmap` +00000000000..... +0000000000000... +0000000000000... +0000000000000... +0000000000000... +0000000000000... +0000000000000000 +0000000000000000 +0000000000000000 +0000000000000000 +0000000000000000 +0000000000000000 +0000000000000000 +0000000000000000 +0000000000000000 +0000000000000000`], + [ bg17, bitmap` +00000000000000.. +000000000000.... +000000000000.... +000000000000.... +.000000000...... +.000000000...... +.000000000...... +.000000000...... +.000000000...... +.000000000...0.. +.000000000..00.0 +.000000000..00.0 +.000000000000000 +0000000000000000 +0000000000000000 +0000000000000000`], + [ bg18, bitmap` +................ +................ +................ +................ +................ +......00........ +......00........ +......00........ +......00........ +0..0..00........ +0.00..00........ +0.00..00........ +00000000........ +000000000....... +0000000000...... +00000000000.....`], + [ bg19, bitmap` +00000000000..... +00000000000..... +00000000000..... +00000000000..... +00000000000..... +00000000000..... +0000000000...... +0000000000...... +000000000....... +000000000....... +000000000....... +000000000....... +000000000.000... +000000000.000... +000000000.000... +000000000.000...`], + [ bg20, bitmap` +................ +................ +................ +.....0.......... +....000......... +....000......... +....000......... +....000......... +....000......... +....000......... +....000......... +....000......... +000.000......... +000.000......... +000.000......... +000.000.........`], + [ bg21, bitmap` +0000000......... +0000000......... +0000000......... +0000000......... +0000000......... +0000000......... +0000000......... +0000000......... +0000000......... +0000000......... +0000000......... +0000000......... +0000000.......0. +00000000......0. +00000000.....00. +00000000....0000`], + [ bg22, bitmap` +0.............00 +00...........000 +00..........0000 +000....000000000 +0000..0000000000 +0000000000000000 +0000000000000000 +0000000000000000 +0000000000000000 +0000000000000000 +0000000000000000 +0000000000000000 +0000000000000000 +0000000000000000 +0000000000000000 +0000000000000000`], + [ bg23, bitmap` +00.............. +000............. +000............. +0000............ +00000......00... +000000....0000.. +000000000000000. +0000000000000000 +0000000000000000 +0000000000000000 +0000000000000000 +0000000000000000 +0000000000000000 +0000000000000000 +0000000000000000 +0000000000000000`], + [ bg24, bitmap` +................ +................ +................ +................ +................ +................ +................ +................ +................ +0............... +00.............. +000............. +0000............ +00000........... +00000........... +000000..........`], + [ player, bitmap` +....00000....... +...04442500..... +..0442240220.... +.0440440224000.. +0440200224000... +04402404000..... +.040220020200... +..00220220220... +...042022240.... +...00404440..... +...04000000..... +..044022040..... +..044022020..... +..000000040..... +...02222000..... +..0000000000....` ], + [ ground, bitmap` +CCC09009CC0090CC +CCCC009CCCCC0009 +CCCC009CCCCC00C0 +9CCC009CCCCCC0C0 +9CCC09CCCCCCC0C0 +CCCC09CCCCCCCCC0 +CCCC09CCCCC99009 +CCCC09CCCC9CCC09 +CCC009CCCC9CCCC0 +CCC009CCCC9CCCC0 +9C00090CC09CCC00 +9C099900C09CCC09 +C09CCCCC009CCC09 +C09CCCC0009CCC09 +C9CCCCCC000CC000 +09C9CC9090099009`], + [ sky, bitmap` +7777777777777777 +7777777777777777 +7777777777777777 +7777777777777777 +7777777777777777 +7777777777777777 +7777777777777777 +7777777777777777 +7777777777777777 +7777777777777777 +7777777777777777 +7777777777777777 +7777777777777777 +7777777777777777 +7777777777777777 +7777777777777777`], + [ moblin, bitmap` +.....99999...... +...939999....... +..9329993333.... +.332299993333... +.9999999933333.. +33929999333333.. +993299939993333. +999939939993332. +.99999333999223. +.99999339999333. +..9222229992222. +..9933333993333. +....333333333399 +....3333339993.. +..999333999999.. +...9999..99999..`], + [ lynel, bitmap` +.....33339333... +....3233993..... +....92939933.... +....999393...... +....3999933..... +.222239999.....3 +22222399993...33 +.222239993333333 +....33333333333. +....33333333333. +...33333333333.. +..3333333333333. +..33333333333333 +...333222222333. +....3........3.. +................`], +) + +setSolids([player, ground]) + +let level = 1 +const levels = [ + map` +............. +............. +............. +............. +............. +............. +............. +..p........r. +ggggggggggggg +ggggggggggggg`, + map` +............. +......c...... +......f...... +.....ah...... +.....bij..... +....7v4km.... +.2358d44n.... +014694444oqt. +ggggggggggggg +ggggggggggggg`, +] + +setMap(levels[level]) + +setPushables({ + [ player ]: [] +}) + +setBackground(sky) + +function hitCheck(somePlayer) { + if (speed == 1) { + if (somePlayer.y == getFirst(moblin).y && somePlayer.x == getFirst(moblin).x) { + somePlayer.remove(); + } + } else if (speed == 2) { + if (somePlayer.y == getFirst(lynel).y && somePlayer.x == getFirst(lynel).x) { + somePlayer.remove(); + } + } else { + // do nothing + } +} + +onInput("k", () => { + if (gameRunning && getFirst(player).y == 7 && canJump) { + canJump = false; + inAir = true; + setTimeout(function(){ inAir = false }, 500) + setTimeout(function(){ canJump = true }, (500/(speed*multiplier))) + } else if (titlescreen) { + titlescreen = false; + setMap(levels[0]); + score = 0; + isReady = false; + isJumping = false; + animCount = 0; + speed = 1; + multiplier = 1; + enemyShouldJump = 20; + canJump = true; + inAir = false; + gameRunning = true; + } +}) + +afterInput(() => { + +}) + +onInput("j", () => { + if (gameRunning != true && titlescreen != true) { + setMap(levels[0]); + score = 0; + isReady = false; + isJumping = false; + animCount = 0; + speed = 1; + multiplier = 1; + enemyShouldJump = 20; + canJump = true; + inAir = false; + gameRunning = true; + } +}) + +afterInput(() => { + +}) + +function moblinUpdate(somemoblin) { + if (somemoblin != null) { + if (gameRunning == true) { + somemoblin.x -= 1; + if (enemyShouldJump <= Math.min(Math.max(score/5, 1), 10) && somemoblin.x == 2) { + somemoblin.y -= 1; + } + if (somemoblin.x == 0 && isReady) { + isReady = false; + score += 1; + somemoblin.x += 12; + somemoblin.y = 7; + enemyShouldJump = Math.floor(Math.random()*20); + if(Math.floor(Math.random() * 10) <= (score/5)) { + somemoblin.type = lynel; + speed = 2; + if (enemyShouldJump <= Math.min(Math.max(score/5, 1), 10)) { + setLegend([ lynel, bitmap` +.....55557555... +....5255775..... +....72757755.... +....777575...... +....5777755..... +.222257777.....5 +22222577775...55 +.222257775555555 +....55555555555. +....55555555555. +...55555555555.. +..5555555555555. +..55555555555555 +...555222222555. +....5........5.. +................`]); + setTimeout((() => { + setLegend([ lynel, bitmap` +................ +....55557555.... +...5255775...... +..772757755..... +...777575....... +...5777755...... +.222257777...... +22222577775....5 +.222257775555555 +....555555555555 +....55555555555. +....5555555555.. +....5555555555.. +.....55555555... +.....55552555... +......555.555...`]); + setTimeout((() => {setLegend([ lynel, bitmap` +.....33339333... +....3233993..... +....92939933.... +....999393...... +....3999933..... +.222239999.....3 +22222399993...33 +.222239993333333 +....33333333333. +....33333333333. +...33333333333.. +..3333333333333. +..33333333333333 +...333222222333. +....3........3.. +................`])}), (250/(speed*multiplier))) + }), (250/(speed*multiplier))) + } + } else { + somemoblin.type = moblin; + speed = 1; + if (enemyShouldJump <= Math.min(Math.max(score/5, 1), 10)) { + setLegend([ moblin, bitmap` +.....55555...... +...505555....... +..5035540000.... +.003355540000... +.5555555400000.. +00535554000000.. +550355505540000. +555505505540003. +.55554000555330. +.55555005554000. +..5333335553333. +..5400000540000. +....000000000055 +....0000005550.. +..554000555555.. +...5555..55555..`]); + setTimeout((() => { + setLegend([ moblin, bitmap` +................ +.....55555...... +...505555....... +..5035540000.... +.003355540000... +.5555555400000.. +00535554000000.. +550355500540000. +555505505540003. +.55555055550330. +.55555555400000. +333335555333300. +..5505540000000. +....000554000055 +....0555554000.. +.....255555.....`]); + setTimeout((() => {setLegend([ moblin, bitmap` +.....99999...... +...939999....... +..9329993333.... +.332299993333... +.9999999933333.. +33929999333333.. +993299939993333. +999939939993332. +.99999333999223. +.99999339999333. +..9222229992222. +..9933333993333. +....333333333399 +....3333339993.. +..999333999999.. +...9999..99999..`])}), (250/(speed*multiplier))) + }), (250/(speed*multiplier))) + } + } + } else if (somemoblin.x == 0) { + isReady = true + } + } else { + somemoblin.remove(); + } + } +} + +function gameLoop() { + if (titlescreen) { + clearText(); + score=0; + addText("The Legend", { + x: 5, + y: 6, + color: color`2` + }); + addText("of Zelda:", { + x: 6, + y: 7, + color: color`2` + }); + addText("Link's Escape", { + x: 4, + y: 8, + color: color`4` + }); + addText("Press K to begin!", { + x: 2, + y: 12, + color: color`6` + }); + } else if (getAll(player).length <= 0) { + gameRunning = false; + if (getFirst(player) != null) { + getFirst(player).remove(); + } + clearText(); + addText("Game Over!\nScore: " + score, { + x: 5, + y: 6, + color: color`6` + }); + addText("Press J to\nrestart!", { + x: 5, + y: 10, + color: color`2` + }); + } else if (gameRunning) { + const p = getFirst(player); + hitCheck(p); + clearText(); + if (inAir) { + p.y = 6; + } else { + p.y = 7; + } + addText("Score: "+score, { + x: 0, + y: 0, + color: color`2` + }); + if (speed == 1) { + moblinUpdate(getFirst(moblin)); + } else if (speed == 2) { + moblinUpdate(getFirst(lynel)); + } + + + if ((animCount % 2) == 0 && gameRunning) { + setLegend([ player, bitmap` +....00000....... +...04442500..... +..0442240220.... +.0440440224000.. +0440200224000... +04402404000..... +.040220020200... +..00220220220... +...042022240.... +...00404440..... +...04000000..... +..044022040..... +..044022020..... +..000000040..... +...02222000..... +..0000000000....` ], + [ moblin, bitmap` +.....99999...... +...939999....... +..9329993333.... +.332299993333... +.9999999933333.. +33929999333333.. +993299939993333. +999939939993332. +.99999333999223. +.99999339999333. +..9222229992222. +..9933333993333. +....333333333399 +....3333339993.. +..999333999999.. +...9999..99999..`], + [ lynel, bitmap` +.....33339333... +....3233993..... +....92939933.... +....999393...... +....3999933..... +.222239999.....3 +22222399993...33 +.222239993333333 +....33333333333. +....33333333333. +...33333333333.. +..3333333333333. +..33333333333333 +...333222222333. +....3........3.. +................`], + [ ground, bitmap` +CCC09009CC0090CC +CCCC009CCCCC0009 +CCCC009CCCCC00C0 +9CCC009CCCCCC0C0 +9CCC09CCCCCCC0C0 +CCCC09CCCCCCCCC0 +CCCC09CCCCC99009 +CCCC09CCCC9CCC09 +CCC009CCCC9CCCC0 +CCC009CCCC9CCCC0 +9C00090CC09CCC00 +9C099900C09CCC09 +C09CCCCC009CCC09 +C09CCCC0009CCC09 +C9CCCCCC000CC000 +09C9CC9090099009`],); + } else if (gameRunning) { + setLegend([ player, bitmap` +................ +....000000...... +..0044422500.0.. +.0444224402200.. +.0444044022500.. +.044020022500... +..0402404000.... +..040220020200.. +...00220220220.. +....042022240... +....00000000.... +...00440220..... +..020440220..... +..0200440000.... +..02200022220... +.000000000000...` ], + [ moblin, bitmap` +................ +.....99999...... +...939999....... +..9329993333.... +.332299993333... +.9999999933333.. +33929999333333.. +993299933993333. +999939939993332. +.99999399993223. +.99999999933333. +222229999222233. +..9939993333333. +....333999333399 +....3999999333.. +.....299999.....`], + [ lynel, bitmap` +................ +....33339333.... +...3233993...... +..992939933..... +...999393....... +...3999933...... +.222239999...... +22222399993....3 +.222239993333333 +....333333333333 +....33333333333. +....3333333333.. +....3333333333.. +.....33333333... +.....33332333... +......333.333...`], + [ ground, bitmap` +CC0090CCCCCC009C +CCCC0009CCCC009C +CCCC00C0CCC09009 +CCCCC0C09CCC009C +CCCCC0C09CCC09CC +CCCCCCC0CCCC09CC +CCC99009CCCC09CC +CC9CCC09CCCC09CC +CC9CCCC0CCC009CC +CC9CCCC0CCC009CC +C09CCC009C00090C +C09CCC099C099900 +009CCC09C09CCCCC +009CCC09C09CCCC0 +000CC000C9CCCCCC +9009900909C9CC90`],); + } + animCount++ + multiplier *= 1.0025; + } + setTimeout(gameLoop, (500/(speed*multiplier))); +} + + + +playMusic(); +gameLoop(); From 9674fa67291f825b3051c44fd5eac54ecddd204b Mon Sep 17 00:00:00 2001 From: Lucas <88567622+LucasHT22@users.noreply.github.com> Date: Mon, 28 Aug 2023 13:21:51 -0300 Subject: [PATCH 02/17] add #1121 --- games/metadata.json | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/games/metadata.json b/games/metadata.json index 35c7c4651c..9d51615127 100644 --- a/games/metadata.json +++ b/games/metadata.json @@ -2894,5 +2894,13 @@ "img": "", "tags": ["advanced"], "added on": "2023-08-25" + }, + { + "filename": "The_Legend_of_Zelda-Links_Escape", + "title": "The Legend of Zelda: Link's Escape", + "author": "ItzHex", + "img": "", + "tags": ["advanced"], + "added on": "2023-08-28" } ] From 0a36aeed837bc28f30be873bd9d70f6bcff51ed0 Mon Sep 17 00:00:00 2001 From: Lucas <88567622+LucasHT22@users.noreply.github.com> Date: Wed, 30 Aug 2023 13:16:55 -0300 Subject: [PATCH 03/17] Update metadata.json --- games/metadata.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/games/metadata.json b/games/metadata.json index 9d51615127..8983c3635f 100644 --- a/games/metadata.json +++ b/games/metadata.json @@ -2897,7 +2897,7 @@ }, { "filename": "The_Legend_of_Zelda-Links_Escape", - "title": "The Legend of Zelda: Link's Escape", + "title": "The_Legend_of_Zelda-Links_Escape", "author": "ItzHex", "img": "", "tags": ["advanced"], From 57902448749eec31212819dedf1efd89e3db6f0c Mon Sep 17 00:00:00 2001 From: agentbobjelly9228 <69478746+agentbobjelly9228@users.noreply.github.com> Date: Wed, 30 Aug 2023 14:19:03 -0700 Subject: [PATCH 04/17] Eat & Don't Be Eaten (#1123) * Add files via upload * Rename Eat & Don't Be Eaten.js to Eat_&_Don't_Be_Eaten.js --------- Co-authored-by: Lucas <88567622+LucasHT22@users.noreply.github.com> --- games/Eat_&_Don't_Be_Eaten.js | 182 ++++++++++++++++++++++++++++++++++ 1 file changed, 182 insertions(+) create mode 100644 games/Eat_&_Don't_Be_Eaten.js diff --git a/games/Eat_&_Don't_Be_Eaten.js b/games/Eat_&_Don't_Be_Eaten.js new file mode 100644 index 0000000000..4c6016eff2 --- /dev/null +++ b/games/Eat_&_Don't_Be_Eaten.js @@ -0,0 +1,182 @@ +/* +First time? Check out the tutorial game: +https://sprig.hackclub.com/gallery/getting_started +*/ + +const player = "p" +const enemy = "e" +const food = 'f' + +setLegend( + [ player, bitmap` +................ +................ +.......000...... +.......0.0...... +......0..0...... +......0...0.0... +....0003.30.0... +....0.0...000... +....0.05550..... +......0...0..... +.....0....0..... +.....0...0...... +......000....... +......0.0....... +.....00.00...... +................` ], + [ enemy, bitmap` +................ +................ +................ +....33333333.... +....30033003.... +....30033003.... +....33333333.... +....33300333.... +....33000033.... +....30000003.... +....33333333.... +................ +................ +................ +................ +................`], + [food, bitmap` +................ +................ +................ +.....606606..... +....66666666.... +...6333333336... +...DDDDDDDDDD... +...CCCCCCCCCC... +...6CCCCCCCC6... +....66666666.... +.....666666..... +................ +................ +................ +................ +................`] +) + +setSolids([]) + +let level = 0 +const levels = [ + map` +e..... +...... +....f. +...... +...... +...p..` +] + +setMap(levels[level]) + +setPushables({ + [ player ]: [] +}) + +onInput("s", () => { + if (gameRunning) { + getFirst(player).y += 1 + } + +}) +onInput("w", () => { + if (gameRunning) { + getFirst(player).y -= 1 + } +}) +onInput("a", () => { + if (gameRunning) { + getFirst(player).x -= 1 + } +}) +onInput("d", () => { + if (gameRunning) { + getFirst(player).x += 1 + } +}) + +onInput("i", () => { + clearText() + setMap(levels[level]) + startGame() + score = 0 +}) +function checkDie() { + let e = getFirst(enemy); + let p = getFirst(player); + + if (e.x == p.x && e.y == p.y) { + return true; + } + + return false; +} +function moveEnemy() { + let theEnemy = getFirst(enemy); + let dirX = (theEnemy.x - getFirst(player).x) / Math.abs(theEnemy.x - getFirst(player).x); + let dirY = (theEnemy.y - getFirst(player).y) / Math.abs(theEnemy.y - getFirst(player).y); + + theEnemy.x -= dirX + theEnemy.y -= dirY +} + +function spawnFood() { + let f = getFirst(food) + f.x = Math.floor(Math.random() * 8); + f.y = Math.floor(Math.random() * 8); +} + +function checkEat() { + let f = getFirst(food); + let p = getFirst(player); + + if (f.x == p.x && f.y == p.y) { + return true; + } + + return false; +} +let score = 0; + +afterInput(() => { + if (checkEat()) { + score += 1; + spawnFood(); + } +}) + + +var gameLoop; +let gameRunning = true; + +function startGame() { + gameRunning = true; + gameLoop = setInterval(() => { + moveEnemy() + if (checkDie()) { + clearInterval(gameLoop); + gameRunning = false; + addText("Score: " + score, { + x: 5, + y: 6, + color: color`3` + }); + addText("Press I to reset", { + x: 2, + y: 8, + color: color`3` + }); + } + +}, 500); + +} + +startGame(); From 0d1e06c3c42eed491ff71103ca12dd625dcd7f48 Mon Sep 17 00:00:00 2001 From: Lucas <88567622+LucasHT22@users.noreply.github.com> Date: Wed, 30 Aug 2023 18:24:14 -0300 Subject: [PATCH 05/17] add #1123 --- games/metadata.json | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/games/metadata.json b/games/metadata.json index 8983c3635f..2cc3e5e190 100644 --- a/games/metadata.json +++ b/games/metadata.json @@ -2902,5 +2902,13 @@ "img": "", "tags": ["advanced"], "added on": "2023-08-28" + }, + { + "filename": "Eat_&_Don't_Be_Eaten", + "title": "Eat_&_Don't_Be_Eaten", + "author": "Nathan Man", + "img": "", + "tags": ["catch"], + "added on": "2023-08-30" } ] From 938c277af29c7625969658553cd02cff3795f476 Mon Sep 17 00:00:00 2001 From: Gabe Schmit <119266089+geschmit@users.noreply.github.com> Date: Wed, 30 Aug 2023 16:27:42 -0500 Subject: [PATCH 06/17] Move burger_build.js to games directory (#1124) * move file * Delete burger-build.js --------- Co-authored-by: Lucas <88567622+LucasHT22@users.noreply.github.com> --- burger-build.js => games/burger_build.js | 5 +++++ 1 file changed, 5 insertions(+) rename burger-build.js => games/burger_build.js (99%) diff --git a/burger-build.js b/games/burger_build.js similarity index 99% rename from burger-build.js rename to games/burger_build.js index 0cfe570f30..8067d4905c 100644 --- a/burger-build.js +++ b/games/burger_build.js @@ -1,3 +1,8 @@ +/* +@title: burger build +@author: emily27yee +*/ + const player = "p" const meat = "m" const cheese = "c" From a4bd6b2d9d775cdc86291c5d4e025724240f7e13 Mon Sep 17 00:00:00 2001 From: Tom-on <87417515+Tom-on64@users.noreply.github.com> Date: Fri, 1 Sep 2023 02:52:56 +0200 Subject: [PATCH 07/17] Spirit Bound (#1125) * Added Spirit Bound * Added Spirit Bound * Spirit Bound * Delete games/img/Spirit Bound.png * Added Spirit Bound Thumbnail I had to rename it so that's why i deleted the one before --- games/img/spirit-bound.png | Bin 0 -> 15017 bytes games/spirit-bound.js | 778 +++++++++++++++++++++++++++++++++++++ 2 files changed, 778 insertions(+) create mode 100644 games/img/spirit-bound.png create mode 100644 games/spirit-bound.js diff --git a/games/img/spirit-bound.png b/games/img/spirit-bound.png new file mode 100644 index 0000000000000000000000000000000000000000..86b1661e58aedf09516d0eb55f442ad295f4b69c GIT binary patch literal 15017 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 literal 0 HcmV?d00001 diff --git a/games/spirit-bound.js b/games/spirit-bound.js new file mode 100644 index 0000000000..128877da5f --- /dev/null +++ b/games/spirit-bound.js @@ -0,0 +1,778 @@ +/* +@name Spirit Bound +@author Tom-on + +About: +Spirit Bound is a 2D puzzle game made in sprig! +Your goal is to navigate the complex of rooms, while the spirits try to kill you. +If you move, the spirits move in the same direction. +Collect keys, open doors and get out. +This game has 16 Maps + 4 Challange maps (You will take -2 Damage if you want to enter the challenge) + +! Every Level Is Possible Without Taking Damage ! +aaaas +Controls: +WASD - Move +J - Interact +L - Restart level + +In menu: +WS - Navigate +K - Submit + +Tip: If you ever get stuck, restart the level by using 'L' + +Note: +There is an issue with how the enemies move that creates some unexpected situations. +The issue is that when you move in certain directions, the enemies move in rapid succession which +results in one tile gaps in some cases. Since some puzzles have you exploit this +mechanic, i won't fix it and i'll instead call it a feature :) +*/ + +// Sprites +const player = "@"; +const wall = "#"; +const wallVine = "V"; +const wallCracked = "C"; +const door = {y: "Y", r: "R", g: "G", b: "B"}; +const doorOpen = "O"; +const exit = "$"; +const spirit = "X"; +const key = {y: "y", r: "r", g: "g", b: "b"}; +const bg = "%"; +const bgGrass = "="; + +setLegend( + [ player, bitmap` +................ +......1LL1...... +.....1LLLL1..... +.....1L11L1..... +.....11LL11..... +.....L1LL1L..... +......L11L...... +.....LLLLLL..... +....LL1LL1LL.... +....1LL11LL1.... +....1LLLLLL1.... +....1.1LL1.1.... +....2.1..1.2.... +......L..L...... +......2..2...... +................` ], + [ wall, bitmap` +111111L1111111L1 +111111L1111111L1 +11111LL111111LL1 +LLLLL1LLLLLLL11L +11L1111111L11111 +11L1111111L11111 +1LL1111111LL1111 +L11LLLLLLL11LLLL +111111L1111111L1 +111111L1111111L1 +11111LL111111LL1 +LLLLL11LLLLLLL1L +11L1111111L11111 +11L1111111L11111 +11LL11111LL11111 +LL11LLLLL11LLLLL` ], + [ wallVine, bitmap` +4D1111LD111111L1 +141111L4111111L1 +1D411L4D111114L1 +LLD4L14444DD411L +114114D1114D1111 +1141141111L41111 +14D1141111L44D11 +L14DL4LLLL1DD4LL +11D414D1111114L1 +11411141111114D1 +114D1L4D11111D41 +LLL4L14DLLLLL41L +11L111D111L114D1 +11L111D411L1114D +11LL11141LL11114 +LL11LLLDL11LLLL4` ], + [ wallCracked, bitmap` +011111L1101111L1 +100011L110L111L0 +11L01L1010L11L01 +LL1L000LL0LLL00L +1111L0L110000LL1 +100010L110L0L111 +11L011010LL0L101 +L11L000L00LL010L +1111LL00L111L0L1 +1111110L11111L01 +11111L0L00111L0L +LLL0L100LL01L0LL +11L000LL11L0L111 +1000LL11010L1111 +11LL1110L0L11111 +LL11LLL0L01LLLL0` ], + [ door.y, bitmap` +111111LLLL1111L1 +11111LCCCCL111L1 +1111LCCCCCCLLLL1 +LLLLCCCCCCCCL11L +11LLCCCCCCCCL111 +11LCCCCLLCCCCL11 +1LLCCCLCCLCCCL11 +L1LCCCLCCLCCCLLL +11LCC111111CCLL1 +11LCC1LLLL0CCLL1 +11LCC1L66L0CCLL1 +LLLCC1LLLL0CCL1L +11LCC000000CCL11 +11LCCCCCCCCCCL11 +11LCCCCCCCCCCL11 +LLLCCCCCCCCCCLLL` ], + [ door.r, bitmap` +111111LLLL1111L1 +11111LCCCCL111L1 +1111LCCCCCCLLLL1 +LLLLCCCCCCCCL11L +11LLCCCCCCCCL111 +11LCCCCLLCCCCL11 +1LLCCCLCCLCCCL11 +L1LCCCLCCLCCCLLL +11LCC111111CCLL1 +11LCC1LLLL0CCLL1 +11LCC1L33L0CCLL1 +LLLCC1LLLL0CCL1L +11LCC000000CCL11 +11LCCCCCCCCCCL11 +11LCCCCCCCCCCL11 +LLLCCCCCCCCCCLLL` ], + [ door.g, bitmap` +111111LLLL1111L1 +11111LCCCCL111L1 +1111LCCCCCCLLLL1 +LLLLCCCCCCCCL11L +11LLCCCCCCCCL111 +11LCCCCLLCCCCL11 +1LLCCCLCCLCCCL11 +L1LCCCLCCLCCCLLL +11LCC111111CCLL1 +11LCC1LLLL0CCLL1 +11LCC1L44L0CCLL1 +LLLCC1LLLL0CCL1L +11LCC000000CCL11 +11LCCCCCCCCCCL11 +11LCCCCCCCCCCL11 +LLLCCCCCCCCCCLLL` ], + [ door.b, bitmap` +111111LLLL1111L1 +11111LCCCCL111L1 +1111LCCCCCCLLLL1 +LLLLCCCCCCCCL11L +11LLCCCCCCCCL111 +11LCCCCLLCCCCL11 +1LLCCCLCCLCCCL11 +L1LCCCLCCLCCCLLL +11LCC111111CCLL1 +11LCC1LLLL0CCLL1 +11LCC1L55L0CCLL1 +LLLCC1LLLL0CCL1L +11LCC000000CCL11 +11LCCCCCCCCCCL11 +11LCCCCCCCCCCL11 +LLLCCCCCCCCCCLLL` ], + [ doorOpen, bitmap` +111111LLLL1111L1 +11111L0000L111L1 +1111L000000LLLL1 +LLLL00000000L11L +11LL00000000L111 +11L0000000000L11 +1LL0000000000L11 +L1L0000000000LLL +11L0000000000LL1 +11L0000000000LL1 +11L0000000000LL1 +LLL0000000000L1L +11L0000000000L11 +11L0000000000L11 +11L0000000000L11 +LLL0000000000LLL` ], + [ exit, bitmap` +111111L1111111L1 +111111L1111111L1 +11111LLLLLL11LL1 +LLLLL00000LLL11L +11L0000000L11111 +11L00000000LL111 +1LL000000000L111 +L1L000000000LLLL +11L00000000000L1 +11L00000000000L1 +111L000000000LL1 +LLLL00000000LL1L +11L000000000L111 +11L000000000L111 +11LL0000000L1111 +LLLL0000000LLLLL` ], + [ spirit, bitmap` +...00.LLLL...... +.....00000L.0... +..0.L0300300.... +...0009009000... +.0..L000000L.0.. +.00.L000000L.... +..0..L00000...0. +..000.LLLL.0..0. +.0..00.0.....0.. +.0....0000000... +.00...000....... +...000.00....... +.00....0.00.00.. +0.000000..000.0. +0.....0......... +.0...0..........` ], + [ key.y, bitmap` +................ +......6666...... +.....666.66..... +.....66...6..... +.....6...66..... +.....66.666..... +......6666...... +.......6........ +.......6........ +.......6........ +.......666.6.... +.......6.666.... +.......6........ +.......6.666.... +.......666.6.... +.......6........` ], + [ key.r, bitmap` +................ +......3333...... +.....333.33..... +.....33...3..... +.....3...33..... +.....33.333..... +......3333...... +.......3........ +.......3........ +.......3........ +.......333.3.... +.......3.333.... +.......3........ +.......3.333.... +.......333.3.... +.......3........` ], + [ key.g, bitmap` +................ +......4444...... +.....444.44..... +.....44...4..... +.....4...44..... +.....44.444..... +......4444...... +.......4........ +.......4........ +.......4........ +.......444.4.... +.......4.444.... +.......4........ +.......4.444.... +.......444.4.... +.......4........` ], + [ key.b, bitmap` +................ +......5555...... +.....555.55..... +.....55...5..... +.....5...55..... +.....55.555..... +......5555...... +.......5........ +.......5........ +.......5........ +.......555.5.... +.......5.555.... +.......5........ +.......5.555.... +.......555.5.... +.......5........` ], + [ bg, bitmap` +0000000000000000 +0000000000000000 +0000000000000000 +0000000000000000 +0000000000000000 +0000000000000000 +0000000000000000 +0000000000000000 +0000000000000000 +0000000000000000 +0000000000000000 +0000000000000000 +0000000000000000 +0000000000000000 +0000000000000000 +0000000000000000` ], + [ bgGrass, bitmap` +4DDDDDDDDDDDDDDD +D4DDDDDDDDD44D4D +DDDDDD444DDDDDD4 +D4DDDDDDDD4DDDDD +DD4444DDDDDDDDDD +D4D4DD4DDDD444DD +DDDDDDDDDDDDDD4D +DDDDDD44444DDDDD +DDDDDDDDDDD4DDDD +D4DDDDDDDDDDD4D4 +D44DDDDDD4DDDDDD +DDDDD44D44DDDDDD +DDDDDDDDDD4DDD4D +DDDDDDDDDDDDDDDD +44D4DDDDDDDDDDDD +DDDD44DDDDDD44D4` ], +) + +// Levels +let level = 0; + +const start = map` +X..X..X..... +......XX..X. +..X.X...X... +############ +#..#.......# +#..#.......# +#..Y..@.y..$ +#..#.......# +#..#.......# +############`; +const win = map` +C########### +Cy.........# +#r...@.....# +V##CC#####Y# +V##......#X# +##V......#X# +V###C#####R# +V..........C +#..........C +##C##$######`; +const chalengeWin = map` +#######===== +#.XrXX#===== +#X....#===== +###Y###===== +.@...bR===== +###B###===== +#X....#===== +#..y..#===== +#....X#===== +#######=====` +const lose = map` +.....####### +.....#....X# +.....#X....# +.....#...y.# +.....#.....# +.....###Y### +.....#.X...# +.....#.....# +.....#X...X# +.....###$###`; + +const levels = [ + start, + map` +############ +#...#......# +#.@......X.# +#...#......# +##.####Y#### +#...#......# +#...#......# +#.y.#.X....$ +#.X.#......# +############`, // Lvl1 + map` +#.##$####### +#@#..X#....# +#.#X..#....# +#.##Y###.#.# +#........#.# +##.#######.# +#...#.X....# +#.X.#...y..# +#...#.....X# +############`, // Lvl2 + map` +############ +#...#X.#...# +$.X.Y......# +#...#.X#...# +########...# +#X.....#...# +#.y...X#...# +#..........# +#..X...#.@.# +#########.##`, // Lvl3 + map` +############ +#.X.#.##...# +#.#.#XX..#.# +#y#.#X.#Y### +###...##...$ +.@..#...###V +#.#####.#..# +#.....#.#.## +#.#.#......# +############`, // Lvl4 + map` +#####.###### +#####@..X..# +####V..X.y.V +V#V#V.....X# +###VV#.V#VV# +#VV#V#.#...V +#V#VVV.#...V +V#####.#...# +$...Y......V +##VVV###VV##`, // Lvl5 + map` +###VVV###VVV +#..X...X..@. +VXV###VVV### +VX.X....X..V +V###V#####.V +#X..Y......V +#...V##VV#.# +#...#V.....V +V...#y.....# +VV$###VV#V##`, // Lvl6 + map` +##VV#.##VV## +V....@.....# +V..........# +V..........V +#..........V +##VV#.#####V +#X..#.#X..X# +$.XXY...Xy.V +#.X.#.#.X..V +VV###VVVV###`, // Lvl7 + map` +######$##### +#.X.#...#..# +#.b.#.....X# +#...#...#..# +##Y##...#..# +V...#####X.# +#...V...#..# +#.....y.B..# +V.@.#...#..# +V#.#V##V####`, // Lvl8 + map` +#C########## +CX..X#X...y# +..XX.#.X.X.# +XX.X.C##.### +.X.XbY.....# +X.X.X#...X.# +..X..CX....# +CX..XC##.### +C.X..#.R@Br# +##C###$#.###`, // Lvl9 + map` +############ +$.....Y....# +#######..X.# +#y#.....#### +#.#X.....Xb# +#X#####.#### +#.#.......X# +#B#####.#### +#.........@. +############`, // Lvl10 + map` +.CCC#####V## +Cb.R...XB.yV +#C.C....V##V +CX.........V +C.....X....# +.#Y##..##.## +C...#X.#...# +#...#X.#...# +#...#.X#.@.# +##$######.##`, // Lvl11 + map` +V##VV##V#### +V#C..X....XV +#VCb.....X.# +####C#C..C## +.@.#$.B..C.. +##.####Y##.. +#X.X.....#.. +#.##.##X##.. +#.X..#.y.#.. +##########..`, // Lvl12 + map` +###C#.#C#### +#..XC@#X.rX# +#X..#....X.# +C...R.C....# +#X.XC.#.X..# +CCY.#.###### +C...C.#..X.# +#.g.#.G....$ +#..X#.#.X.C# +#########CC#`, // Lvl13 + map` +#####V#####V +#g..X..X...# +V#########.# +#...X......# +.@C.......## +C.C.....X.#V +V...X......V +V#########.# +$...X....G.# +####VVV#####`, // Lvl14 + map` +############ +#y.#.X#X..b# +#..#..#.#X.# +#.##..Y....# +#.X.X.#.X#.# +V..##.#...X# +#..#..###### +#X.#.##....# +V#V#@B.....# +#VV#.###$###`, // Lvl15 + map` +############ +#.....R.Xg.# +V.#.#.####B# +#X...X#b.#.# +#.#y#.#X.#.# +#X...X#..#.# +V.#.#.#G##.# +V.....#.r#.# +V.#.#.Y..#.$ +###@########`, // Lvl16 + win, + map` +#####.###... +#X...@.X#... +#.#.#.#.#### +#..X.X..#..# +#.#.y.#.Y.r# +#..X.X..#..# +#.#.#.#.#### +#X.....X#... +####R####... +...#$#......`, // Chalenge 1 + map` +.########### +.#.......#.# +.#..#.#..#.# +##.X.X.X.Yb# +$G..#.#..### +##.X.@.X.### +.#..#.#..Bg# +.#.X.X.X.#.# +.#y......#.# +.###########`, // Chalenge 2 + map` +############ +#.....Y.Xr.# +#.X.#.####R# +#.#.#.#.gX.# +#...#.#G#### +#.#.X.#.Xb.# +#.#.#.####B# +#.#.X....#.# +#y....##@#X# +########.#$#`, // Chalenge 3 + map` +############ +.@.........# +##########.# +#.....X..#X# +#.######.#.# +#.#r...Bg#.# +#.########.# +#X.........# +#.####.#G#R# +#......#b#$#`, // Chalenge 4 + chalengeWin, + lose +] +// Level code + +const startCode = () => { + addText("Spirit-bound", {x: 4, y: 2, color: color`3`}) + // addText("Use WASD to move", {x: 2, y: 5, color: color`2`}) + if (!keys.y) addText("Grab the key", {x: 7, y: 8, color: color`6`}) + if (keys.y) addText("Open the door", {x: 0, y: 8, color: color`2`}) + if (!getFirst(door.y)) addText("Exit ->", {x: 8, y: 10, color: color`2`}) +} +const level1Code = () => { // Lvl1 + if (!keys.y) addText("You move\nSpirit moves", {x: 7, y: 9, color: color`2`}); + if (keys.y) addText("Don't touch them!", {x: 2, y: 14, color: color`2`}); +} +const winCode = () => { // Win + addText("Victory!", {x: 6, y: 7, color: color`6`}) + addText("-> Challenge", {x: 6, y: 15, color: color`2`}) +} +const challengeWinCode = () => { // Challenge Win + if (!getFirst(door.r)) { + addText("The End", {x: 12, y: 2, color: color`6`}) + addText("For now...", {x: 1, y: 15, color: color`2`}) + } +} +const loseCode = () => { // Lose + addText("You Died ", {x: 0, y: 0, color: color`3`}); + addText(" Restart", {x: 0, y: 4, color: navIndex == 0 ? color`6` : color`3`}); + addText(" Menu", {x: 0, y: 6, color: navIndex == 1 ? color`6` : color`3`}); + addText("W/S Nav\nJ Submit", {x: 0, y: 12, color: color`2`}); +} + +// Variables +let health = 3; +let oldHealth = 3; +const keys = {y: false, r: false, g: false, b: false}; +let navIndex = 0; + +// Functions +const levelCode = () => { + if (level == 0) startCode(); + else if (level == 1) level1Code(); + else if (level == 17) winCode(); + else if (level == levels.length-2) challengeWinCode(); + else if (level == levels.length-1) loseCode(); +} + +const nextLevel = () => { + level++; + keys.y = false; + keys.r = false; + keys.g = false; + keys.b = false; + oldHealth = health; + if (level >= levels.length-1) level = 0; + setMap(levels[level]); +} + +const detectAround = (x1, y1, x2, y2) => { + if (x1 == x2 && y1 == y2+1) return true; + else if (x1 == x2+1 && y1 == y2) return true; + else if (x1 == x2-1 && y1 == y2) return true; + else if (x1 == x2 && y1 == y2-1) return true; + else if (x1 == x2 && y1 == y2) return true; + return false; +} + +const drawUi = () => { + clearText(); + addText(`Health: ${health}`, {x: 0, y: 0, color: color`2`}); + if (level != 0 && level != 17 && level != levels.length-1) + addText(`Level: ${level}`, {x: 2, y: 15, color: color`2`}) +} + +const move = (dir) => { + if (health == 0) { + if (dir == 0 || dir == 2) navIndex = (navIndex + 1) % 2; + return; + } + if (dir == 0) getFirst(player).y--; + else if (dir == 1) getFirst(player).x--; + else if (dir == 2) getFirst(player).y++; + else if (dir == 3) getFirst(player).x++; + + // Move the enemies + getAll(spirit).forEach(s => { + if (dir == 0) s.y--; + else if (dir == 1) s.x--; + else if (dir == 2) s.y++; + else if (dir == 3) s.x++; + }) + // Detect damage (done seperatly do avoid bugs) + getAll(spirit).forEach(s => { + if (detectAround(s.x, s.y, getFirst(player).x, getFirst(player).y)) { + health--; + s.remove(); + if (health <= 0) { + level = levels.length-1; + keys.y = false; + keys.r = false; + keys.g = false; + keys.b = false; + setMap(levels[level]); + drawUi(); + levelCode(); + return; + } + } + }) +} + +const keyCheck = () => { + Object.keys(key).forEach(d => { + if (getFirst(key[d]) && detectAround(getFirst(key[d]).x, getFirst(key[d]).y, getFirst(player).x, getFirst(player).y)) { + keys[d] = true; + getFirst(key[d]).remove(); + } + }) +} + +const doorCheck = () => { + Object.keys(door).forEach(d => { + if (getFirst(door[d]) && keys[d] && detectAround(getFirst(door[d]).x, getFirst(door[d]).y, getFirst(player).x, getFirst(player).y)) + getFirst(door[d]).type = doorOpen; + }) +} + +// Update +afterInput(() => { + drawUi(); + levelCode(); +}) + +// Keybinds +onInput("w", () => move(0)) +onInput("a", () => move(1)) +onInput("s", () => move(2)) +onInput("d", () => move(3)) +onInput("j", () => { // Interact + if (health == 0) return; + keyCheck(); + doorCheck(); + + if (getFirst(exit) && detectAround(getFirst(exit).x, getFirst(exit).y, getFirst(player).x, getFirst(player).y)) { + nextLevel(); + } +}) +onInput("k", () => { + if (health == 0) { + if (navIndex == 0) level = 1; + else if (navIndex == 1) level = 0; + health = 3; + keys.y = false; + navIndex = 0; + setMap(levels[level]); + } +}) +onInput("l", () => { + health = oldHealth; + keys.y = false; + navIndex = 0; + setMap(levels[level]); +}) + +// Setup +setBackground(bg); +setSolids([player, spirit, exit, wall, wallVine, wallCracked, door.y, door.r, door.g, door.b]) +setMap(levels[level]); +drawUi(); +levelCode() From 45790f1349c44e417ec3f33f7f63d9cb91251024 Mon Sep 17 00:00:00 2001 From: Lucas <88567622+LucasHT22@users.noreply.github.com> Date: Thu, 31 Aug 2023 21:55:18 -0300 Subject: [PATCH 08/17] add #1125 --- games/metadata.json | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/games/metadata.json b/games/metadata.json index 2cc3e5e190..03dd15fea6 100644 --- a/games/metadata.json +++ b/games/metadata.json @@ -2910,5 +2910,13 @@ "img": "", "tags": ["catch"], "added on": "2023-08-30" + }, + { + "filename": "spirit-bound", + "title": "spirit-bound", + "author": "Tom-on", + "img": "", + "tags": ["dungeon"], + "added on": "2023-08-31" } ] From 73eb0e0feecbf40d38880e945a876631a0735c68 Mon Sep 17 00:00:00 2001 From: Itz-Hex <90038308+Itz-Hex@users.noreply.github.com> Date: Fri, 1 Sep 2023 17:32:37 +0100 Subject: [PATCH 09/17] The Legend of Zelda: Link's Escape - Update (#1128) * The Legend of Zelda: Link's Escape Made by ItzHex * Update and rename The Legend of Zelda Link's Escape.js to The_Legend_of_Zelda-Links_Escape * Update The_Legend_of_Zelda-Links_Escape Added Music. Exponential speed up over time. * Update The_Legend_of_Zelda-Links_Escape added castle to title screen and some other minor changes * Update The_Legend_of_Zelda-Links_Escape Added moving background castle. Added "boss fight" when a score of 40 is reached. Adjusted start speed and speed increase rate. Adjusted difficulty. Made it so that 2 enemies cannot jump consecutively. --- games/The_Legend_of_Zelda-Links_Escape | 4590 ++++++++++++++++++++++-- 1 file changed, 4305 insertions(+), 285 deletions(-) diff --git a/games/The_Legend_of_Zelda-Links_Escape b/games/The_Legend_of_Zelda-Links_Escape index a1fa94a310..a4111c6d5e 100644 --- a/games/The_Legend_of_Zelda-Links_Escape +++ b/games/The_Legend_of_Zelda-Links_Escape @@ -1,11 +1,37 @@ // @name: The Legend of Zelda: Link's Escape // @author: ItzHex +// let t1 = 1 +// let t2 = 2 +// let t3 = 3 +// let t4 = 4 +// let t5 = 5 +// let t6 = 6 +// let t7 = 7 +// let t8 = 8 +// let t9 = 9 +// let tm = 1 +// UNCOMMENT THE ABOVE VARIABLES AND COMMENT OUT THE BELOW VARIABLES TO QUICKLY TEST OUT THE CASTLE MOVEMENT AND BOSS FIGHT +let t1 = 4 +let t2 = 8 +let t3 = 12 +let t4 = 16 +let t5 = 20 +let t6 = 24 +let t7 = 28 +let t8 = 32 +let t9 = 36 +let tm = 4 + + + + + const player = "p" const ground = "g" -const sky = "s" +const sky = "z" const moblin = "r" @@ -37,6 +63,11 @@ const bg22 = "o" const bg23 = "q" const bg24 = "t" +const house1 = "e" +const house2 = "y" +const house3 = "x" +const house4 = "w" + var gameRunning = false; var titlescreen = true; @@ -59,6 +90,12 @@ var canJump = true; var inAir = false; +var lastJumped = false; + +let isEndGame = false; + +let direction = -1; + var mPart1 = tune` 125: A4^125, 1250, @@ -318,7 +355,92 @@ async function musicLoop() { } setLegend( - [ bg0, bitmap` + [ player, bitmap` +....00000....... +...04442500..... +..0442240220.... +.0440440224000.. +0440200224000... +04402404000..... +.040220020200... +..00220220220... +...042022240.... +...00404440..... +...04000000..... +..044022040..... +..044022020..... +..000000040..... +...02222000..... +..0000000000....` ], + [ ground, bitmap` +CCC09009CC0090CC +CCCC009CCCCC0009 +CCCC009CCCCC00C0 +9CCC009CCCCCC0C0 +9CCC09CCCCCCC0C0 +CCCC09CCCCCCCCC0 +CCCC09CCCCC99009 +CCCC09CCCC9CCC09 +CCC009CCCC9CCCC0 +CCC009CCCC9CCCC0 +9C00090CC09CCC00 +9C099900C09CCC09 +C09CCCCC009CCC09 +C09CCCC0009CCC09 +C9CCCCCC000CC000 +09C9CC9090099009`], + [ sky, bitmap` +7777777777777777 +7777777777777777 +7777777777777777 +7777777777777777 +7777777777777777 +7777777777777777 +7777777777777777 +7777777777777777 +7777777777777777 +7777777777777777 +7777777777777777 +7777777777777777 +7777777777777777 +7777777777777777 +7777777777777777 +7777777777777777`], + [ moblin, bitmap` +.....99999...... +...939999....... +..9329993333.... +.332299993333... +.9999999933333.. +33929999333333.. +993299939993333. +999939939993332. +.99999333999223. +.99999339999333. +..9222229992222. +..9933333993333. +....333333333399 +....3333339993.. +..999333999999.. +...9999..99999..`], + [ lynel, bitmap` +.....33339333... +....3233993..... +....92939933.... +....999393...... +....3999933..... +.222239999.....3 +22222399993...33 +.222239993333333 +....33333333333. +....33333333333. +...33333333333.. +..3333333333333. +..33333333333333 +...333222222333. +....3........3.. +................`], + [ bg0, bitmap` ................ ................ ................ @@ -743,91 +865,74 @@ setLegend( 00000........... 00000........... 000000..........`], - [ player, bitmap` -....00000....... -...04442500..... -..0442240220.... -.0440440224000.. -0440200224000... -04402404000..... -.040220020200... -..00220220220... -...042022240.... -...00404440..... -...04000000..... -..044022040..... -..044022020..... -..000000040..... -...02222000..... -..0000000000....` ], - [ ground, bitmap` -CCC09009CC0090CC -CCCC009CCCCC0009 -CCCC009CCCCC00C0 -9CCC009CCCCCC0C0 -9CCC09CCCCCCC0C0 -CCCC09CCCCCCCCC0 -CCCC09CCCCC99009 -CCCC09CCCC9CCC09 -CCC009CCCC9CCCC0 -CCC009CCCC9CCCC0 -9C00090CC09CCC00 -9C099900C09CCC09 -C09CCCCC009CCC09 -C09CCCC0009CCC09 -C9CCCCCC000CC000 -09C9CC9090099009`], - [ sky, bitmap` -7777777777777777 -7777777777777777 -7777777777777777 -7777777777777777 -7777777777777777 -7777777777777777 -7777777777777777 -7777777777777777 -7777777777777777 -7777777777777777 -7777777777777777 -7777777777777777 -7777777777777777 -7777777777777777 -7777777777777777 -7777777777777777`], - [ moblin, bitmap` -.....99999...... -...939999....... -..9329993333.... -.332299993333... -.9999999933333.. -33929999333333.. -993299939993333. -999939939993332. -.99999333999223. -.99999339999333. -..9222229992222. -..9933333993333. -....333333333399 -....3333339993.. -..999333999999.. -...9999..99999..`], - [ lynel, bitmap` -.....33339333... -....3233993..... -....92939933.... -....999393...... -....3999933..... -.222239999.....3 -22222399993...33 -.222239993333333 -....33333333333. -....33333333333. -...33333333333.. -..3333333333333. -..33333333333333 -...333222222333. -....3........3.. -................`], + [ house1, bitmap` +..........000000 +.........0333333 +.........0333333 +........03333333 +........03003333 +.......030110333 +.......030110333 +......0301111033 +......0301111033 +.....03011111103 +.....03011111103 +....030110001110 +....030107770110 +...0301107270111 +...0301072777011 +..03011077777011`], + [ house2, bitmap` +0000000......... +3333330......... +33333330........ +33333330........ +333333330....... +333333330....... +3333333330...... +3333333330...... +33333333330..... +33333333330..... +333333333330.... +333333333330.... +3333333333330... +0333333333330... +03333333333330.. +.0333333333330..`], + [ house3, bitmap` +..03011077777011 +.030111000000011 +.030111111111111 +0301111111111111 +0301111110001111 +.00111110CCC0111 +..011110CCCCC011 +..011110CCCCC011 +..01110CCCCCCC01 +..01110CCCCCCC01 +..01110CCCCCCC01 +..01110CCCCC0C01 +..01110CCCCCCC01 +..01110CCCCCCC01 +..01110CCCCCCC01 +..00000000000000`], + [ house4, bitmap` +103333333333330. +110333333333330. +1103333333333330 +1100000000000000 +1101111111111110 +1101111111111110 +1101100000000110 +1101107270770110 +1101102770770110 +1101100000000110 +1101107770770110 +1101107770770110 +1101100000000110 +1101111111111110 +1101111111111110 +0000000000000000`], ) setSolids([player, ground]) @@ -835,36 +940,32 @@ setSolids([player, ground]) let level = 1 const levels = [ map` -............. -............. -............. -............. -............. -............. -............. -..p........r. -ggggggggggggg -ggggggggggggg`, +............ +..c......... +..f......... +.ah......... +.bij........ +7v4km....... +8d44n....... +94444oqt.... +gggggggggggg +gggggggggggg`, map` -............. -......c...... -......f...... -.....ah...... -.....bij..... -....7v4km.... -.2358d44n.... -014694444oqt. -ggggggggggggg -ggggggggggggg`, +............ +......c..... +......f..... +.....ah..... +.....bij.... +....7v4km... +.2358d44n... +014694444oqt +gggggggggggg +gggggggggggg`, ] setMap(levels[level]) -setPushables({ - [ player ]: [] -}) - -setBackground(sky) +setBackground(sky); function hitCheck(somePlayer) { if (speed == 1) { @@ -881,7 +982,13 @@ function hitCheck(somePlayer) { } onInput("k", () => { - if (gameRunning && getFirst(player).y == 7 && canJump) { + if (gameRunning && getFirst(player).y == 7 && canJump && isEndGame) { + canJump = false; + inAir = true; + setTimeout(function(){ inAir = false }, ((500/(speed*multiplier))*3)) + setTimeout(function(){ canJump = true }, (500/(speed*multiplier))) + } + else if (gameRunning && getFirst(player).y == 7 && canJump) { canJump = false; inAir = true; setTimeout(function(){ inAir = false }, 500) @@ -898,33 +1005,21 @@ onInput("k", () => { enemyShouldJump = 20; canJump = true; inAir = false; + lastJumped = false; + isEndGame = false; + direction = -1; + addSprite(1, 7, player); + addSprite(11, 7, moblin); gameRunning = true; } -}) - -afterInput(() => { - -}) +}); onInput("j", () => { if (gameRunning != true && titlescreen != true) { - setMap(levels[0]); - score = 0; - isReady = false; - isJumping = false; - animCount = 0; - speed = 1; - multiplier = 1; - enemyShouldJump = 20; - canJump = true; - inAir = false; - gameRunning = true; + setMap(levels[1]); + titlescreen = true; } -}) - -afterInput(() => { - -}) +}); function moblinUpdate(somemoblin) { if (somemoblin != null) { @@ -932,13 +1027,20 @@ function moblinUpdate(somemoblin) { somemoblin.x -= 1; if (enemyShouldJump <= Math.min(Math.max(score/5, 1), 10) && somemoblin.x == 2) { somemoblin.y -= 1; + lastJumped = true; } if (somemoblin.x == 0 && isReady) { isReady = false; score += 1; - somemoblin.x += 12; + updateCastle(); + somemoblin.x += 11; somemoblin.y = 7; - enemyShouldJump = Math.floor(Math.random()*20); + if (lastJumped) { + enemyShouldJump = 20; + lastJumped = false; + } else { + enemyShouldJump = Math.floor(Math.random()*20); + } if(Math.floor(Math.random() * 10) <= (score/5)) { somemoblin.type = lynel; speed = 2; @@ -994,8 +1096,8 @@ function moblinUpdate(somemoblin) { ..33333333333333 ...333222222333. ....3........3.. -................`])}), (250/(speed*multiplier))) - }), (250/(speed*multiplier))) +................`])}), (500/(speed*multiplier))) + }), (500/(speed*multiplier))) } } else { somemoblin.type = moblin; @@ -1052,8 +1154,8 @@ function moblinUpdate(somemoblin) { ....333333333399 ....3333339993.. ..999333999999.. -...9999..99999..`])}), (250/(speed*multiplier))) - }), (250/(speed*multiplier))) +...9999..99999..`])}), (500/(speed*multiplier))) + }), (500/(speed*multiplier))) } } } else if (somemoblin.x == 0) { @@ -1065,6 +1167,110 @@ function moblinUpdate(somemoblin) { } } +function updateCastle() { + if (score == t1) { + getFirst(bg7).remove(); + getFirst(bg8).remove(); + getFirst(bg9).remove(); + getFirst(bg10).x -= 1; + getFirst(bg11).x -= 1; + getFirst(bg12).x -= 1; + getFirst(bg13).x -= 1; + getFirst(bg14).x -= 1; + getFirst(bg15).x -= 1; + getFirst(bg16).x -= 1; + getFirst(bg17).x -= 1; + getFirst(bg18).x -= 1; + getFirst(bg19).x -= 1; + getFirst(bg20).x -= 1; + getFirst(bg21).x -= 1; + getFirst(bg22).x -= 1; + getFirst(bg23).x -= 1; + getFirst(bg24).x -= 1; + } + else if (score == t2) { + getFirst(bg10).remove(); + getFirst(bg11).remove(); + getFirst(bg12).remove(); + getFirst(bg13).remove(); + getAll(bg4).forEach(sprite => { if (sprite.x == 0 && sprite.y == 7) { sprite.remove(); } }); + getFirst(bg14).x -= 1; + getFirst(bg15).x -= 1; + getFirst(bg16).x -= 1; + getFirst(bg17).x -= 1; + getFirst(bg18).x -= 1; + getFirst(bg19).x -= 1; + getFirst(bg20).x -= 1; + getFirst(bg21).x -= 1; + getFirst(bg22).x -= 1; + getFirst(bg23).x -= 1; + getFirst(bg24).x -= 1; + } + else if (score == t3) { + getFirst(bg14).remove(); + getFirst(bg15).remove(); + getFirst(bg16).remove(); + getFirst(bg17).remove(); + getAll(bg4).forEach(sprite => { if (sprite.x == 0 && sprite.y == 5) { sprite.remove(); } }); + getAll(bg4).forEach(sprite => { if (sprite.x == 0 && sprite.y == 6) { sprite.remove(); } }); + getAll(bg4).forEach(sprite => { if (sprite.x == 0 && sprite.y == 7) { sprite.remove(); } }); + getFirst(bg18).x -= 1; + getFirst(bg19).x -= 1; + getFirst(bg20).x -= 1; + getFirst(bg21).x -= 1; + getFirst(bg22).x -= 1; + getFirst(bg23).x -= 1; + getFirst(bg24).x -= 1; + } + else if (score == t4) { + getFirst(bg18).remove(); + getFirst(bg19).remove(); + getAll(bg4).forEach(sprite => { if (sprite.x == 0 && sprite.y == 5) { sprite.remove(); } }); + getAll(bg4).forEach(sprite => { if (sprite.x == 0 && sprite.y == 6) { sprite.remove(); } }); + getAll(bg4).forEach(sprite => { if (sprite.x == 0 && sprite.y == 7) { sprite.remove(); } }); + getFirst(bg20).x -= 1; + getFirst(bg21).x -= 1; + getFirst(bg22).x -= 1; + getFirst(bg23).x -= 1; + getFirst(bg24).x -= 1; + } + else if (score == t5) { + getFirst(bg20).remove(); + getFirst(bg21).remove(); + getAll(bg4).forEach(sprite => { if (sprite.x == 0 && sprite.y == 7) { sprite.remove(); } }); + getFirst(bg22).x -= 1; + getFirst(bg23).x -= 1; + getFirst(bg24).x -= 1; + } + else if (score == t6) { + getFirst(bg22).remove(); + getFirst(bg23).x -= 1; + getFirst(bg24).x -= 1; + } + else if (score == t7) { + getFirst(bg23).remove(); + getFirst(bg24).x -= 1; + addSprite(11, 6, house1); + addSprite(11, 7, house3); + } + else if (score == t8) { + getFirst(bg24).remove(); + getFirst(house1).x -= 1; + getFirst(house3).x -= 1; + addSprite(11, 6, house2); + addSprite(11, 7, house4); + } + else if (score == t9) { + getFirst(house1).x -= 1; + getFirst(house2).x -= 1; + getFirst(house3).x -= 1; + getFirst(house4).x -= 1; + } + if (score >= tm && (score % tm) == 0) { + getAll(bg4).forEach(obj => {obj.x -= 1}); + } +} + function gameLoop() { if (titlescreen) { clearText(); @@ -1114,163 +1320,3977 @@ function gameLoop() { } else { p.y = 7; } + if (speed == 1) { + moblinUpdate(getFirst(moblin)); + } else if (speed == 2) { + moblinUpdate(getFirst(lynel)); + } addText("Score: "+score, { x: 0, y: 0, color: color`2` }); - if (speed == 1) { - moblinUpdate(getFirst(moblin)); - } else if (speed == 2) { - moblinUpdate(getFirst(lynel)); + + + if ((animCount % 2) == 0 && gameRunning) { + setLegend([ player, bitmap` + ....00000....... + ...04442500..... + ..0442240220.... + .0440440224000.. + 0440200224000... + 04402404000..... + .040220020200... + ..00220220220... + ...042022240.... + ...00404440..... + ...04000000..... + ..044022040..... + ..044022020..... + ..000000040..... + ...02222000..... + ..0000000000....` ], + [ moblin, bitmap` + .....99999...... + ...939999....... + ..9329993333.... + .332299993333... + .9999999933333.. + 33929999333333.. + 993299939993333. + 999939939993332. + .99999333999223. + .99999339999333. + ..9222229992222. + ..9933333993333. + ....333333333399 + ....3333339993.. + ..999333999999.. + ...9999..99999..`], + [ lynel, bitmap` + .....33339333... + ....3233993..... + ....92939933.... + ....999393...... + ....3999933..... + .222239999.....3 + 22222399993...33 + .222239993333333 + ....33333333333. + ....33333333333. + ...33333333333.. + ..3333333333333. + ..33333333333333 + ...333222222333. + ....3........3.. + ................`], + [ ground, bitmap` + CCC09009CC0090CC + CCCC009CCCCC0009 + CCCC009CCCCC00C0 + 9CCC009CCCCCC0C0 + 9CCC09CCCCCCC0C0 + CCCC09CCCCCCCCC0 + CCCC09CCCCC99009 + CCCC09CCCC9CCC09 + CCC009CCCC9CCCC0 + CCC009CCCC9CCCC0 + 9C00090CC09CCC00 + 9C099900C09CCC09 + C09CCCCC009CCC09 + C09CCCC0009CCC09 + C9CCCCCC000CC000 + 09C9CC9090099009`], + [ bg0, bitmap` +................ +................ +................ +................ +................ +...............0 +.............000 +............0000 +...........00000 +..........000000 +........00000000 +.......000000000 +.....00000000000 +...0000000000000 +0000000000000000 +0000000000000000`], + [ bg1, bitmap` + ...0000000000000 + ...0000000000000 + ..00000000000000 + .000000000000000 + 0000000000000000 + 0000000000000000 + 0000000000000000 + 0000000000000000 + 0000000000000000 + 0000000000000000 + 0000000000000000 + 0000000000000000 + 0000000000000000 + 0000000000000000 + 0000000000000000 + 0000000000000000`], + [ bg2, bitmap` + ................ + ................ + ................ + ...........000.. + ..........00000. + ..........000000 + ..........000000 + .........0000000 + .........0000000 + ........00000000 + .......000000000 + .......000000000 + ......0000000000 + .....00000000000 + .....00000000000 + ....000000000000`], + [ bg3, bitmap` + ................ + ................ + ................ + ................ + ................ + ................ + 0............... + 00.............. + 0000............ + 000000.......... + 00000000........ + 0000000000...... + 000000000000.... + 00000000000000.. + 0000000000000000 + 0000000000000000`], + [ bg4, bitmap` + 0000000000000000 + 0000000000000000 + 0000000000000000 + 0000000000000000 + 0000000000000000 + 0000000000000000 + 0000000000000000 + 0000000000000000 + 0000000000000000 + 0000000000000000 + 0000000000000000 + 0000000000000000 + 0000000000000000 + 0000000000000000 + 0000000000000000 + 0000000000000000`], + [ bg5, bitmap` + ................ + ................ + ................ + ................ + ................ + ................ + ................ + ................ + ................ + ................ + ................ + ................ + ................ + ...........00... + ...........00... + 00........0000..`], + [ bg6, bitmap` + 000.......00000. + 0000......000000 + 00000....0000000 + 000000...0000000 + 0000000.00000000 + 0000000000000000 + 0000000000000000 + 0000000000000000 + 0000000000000000 + 0000000000000000 + 0000000000000000 + 0000000000000000 + 0000000000000000 + 0000000000000000 + 0000000000000000 + 0000000000000000`], + [ bg7, bitmap` + ................ + ................ + ................ + .....0.......... + ....000......... + ....000......... + ....000......... + ....000......... + ....000......... + ....000......... + ....000......... + ....000......... + ....000......... + ....000.000...00 + ....000.000...00 + ....000.000...00`], + [ bg8, bitmap` + ....000.000...00 + ....000000000000 + ....000000000000 + ....000000000000 + ....000000000000 + ....000000000000 + ....000000000000 + ....000000000000 + ....000000000000 + ....000000000000 + ....000000000000 + ....000000000000 + ....000000000000 + ....000000000000 + ...0000000000000 + ...0000000000000`], + [ bg9, bitmap` + ...0000000000000 + 0000000000000000 + 0000000000000000 + 0000000000000000 + 0000000000000000 + 0000000000000000 + 0000000000000000 + 0000000000000000 + 0000000000000000 + 0000000000000000 + 0000000000000000 + 0000000000000000 + 0000000000000000 + 0000000000000000 + 0000000000000000 + 0000000000000000`], + [ bg10, bitmap` + ................ + ..............00 + ..............00 + ..............00 + ..............00 + ..............00 + ...........00000 + ...........00000 + ...........00000 + ...........00000 + ...........00000 + ...........00000 + ...........00000 + ...........00000 + .............000 + .............000`], + [ bg11, bitmap` + .............000 + ...............0 + ...............0 + ...............0 + ................ + ................ + ...0............ + ...0............ + ...0............ + ...0............ + ...0..0..0..0... + ...0..00.00.00.. + ...0..00.00.00.. + ...0000000000000 + ..00000000000000 + .000000000000000`], + [ bg12, bitmap` + 0000000000000000 + 0000000000000000 + 0000000000000000 + 0000000000000000 + 0000000000000000 + 0000000000000000 + 0000000000000000 + .000000000000000 + .000000000000000 + ..00000000000000 + ..00000000000000 + ..00000000000000 + ..00000000000000 + 0.00000000000000 + 0.00000000000000 + 0.00000000000000`], + [ bg13, bitmap` + 0.00000000000000 + 0000000000000000 + 0000000000000000 + 0000000000000000 + 0000000000000000 + 0000000000000000 + 0000000000000000 + 0000000000000000 + 0000000000000000 + 0000000000000000 + 0000000000000000 + 0000000000000000 + 0000000000000000 + 0000000000000000 + 0000000000000000 + 0000000000000000`], + [ bg14, bitmap` + ................ + ................ + ................ + ................ + ................ + ................ + ................ + ................ + ................ + ................ + ................ + ................ + ................ + .....0.......... + .....0.......... + .....0..........`], + [ bg15, bitmap` + ....000......... + ....000......... + ....000......... + ....000......... + ....000......... + ....000......... + ..0000000....... + ..0000000....... + ..0000000....... + ..0000000....... + ..0000000....... + 00000000000..... + 00000000000..... + 00000000000..... + 00000000000..... + 00000000000.....`], + [ bg16, bitmap` + 00000000000..... + 0000000000000... + 0000000000000... + 0000000000000... + 0000000000000... + 0000000000000... + 0000000000000000 + 0000000000000000 + 0000000000000000 + 0000000000000000 + 0000000000000000 + 0000000000000000 + 0000000000000000 + 0000000000000000 + 0000000000000000 + 0000000000000000`], + [ bg17, bitmap` + 00000000000000.. + 000000000000.... + 000000000000.... + 000000000000.... + .000000000...... + .000000000...... + .000000000...... + .000000000...... + .000000000...... + .000000000...0.. + .000000000..00.0 + .000000000..00.0 + .000000000000000 + 0000000000000000 + 0000000000000000 + 0000000000000000`], + [ bg18, bitmap` + ................ + ................ + ................ + ................ + ................ + ......00........ + ......00........ + ......00........ + ......00........ + 0..0..00........ + 0.00..00........ + 0.00..00........ + 00000000........ + 000000000....... + 0000000000...... + 00000000000.....`], + [ bg19, bitmap` + 00000000000..... + 00000000000..... + 00000000000..... + 00000000000..... + 00000000000..... + 00000000000..... + 0000000000...... + 0000000000...... + 000000000....... + 000000000....... + 000000000....... + 000000000....... + 000000000.000... + 000000000.000... + 000000000.000... + 000000000.000...`], + [ bg20, bitmap` + ................ + ................ + ................ + .....0.......... + ....000......... + ....000......... + ....000......... + ....000......... + ....000......... + ....000......... + ....000......... + ....000......... + 000.000......... + 000.000......... + 000.000......... + 000.000.........`], + [ bg21, bitmap` + 0000000......... + 0000000......... + 0000000......... + 0000000......... + 0000000......... + 0000000......... + 0000000......... + 0000000......... + 0000000......... + 0000000......... + 0000000......... + 0000000......... + 0000000.......0. + 00000000......0. + 00000000.....00. + 00000000....0000`], + [ bg22, bitmap` + 0.............00 + 00...........000 + 00..........0000 + 000....000000000 + 0000..0000000000 + 0000000000000000 + 0000000000000000 + 0000000000000000 + 0000000000000000 + 0000000000000000 + 0000000000000000 + 0000000000000000 + 0000000000000000 + 0000000000000000 + 0000000000000000 + 0000000000000000`], + [ bg23, bitmap` + 00.............. + 000............. + 000............. + 0000............ + 00000......00... + 000000....0000.. + 000000000000000. + 0000000000000000 + 0000000000000000 + 0000000000000000 + 0000000000000000 + 0000000000000000 + 0000000000000000 + 0000000000000000 + 0000000000000000 + 0000000000000000`], + [ bg24, bitmap` + ................ + ................ + ................ + ................ + ................ + ................ + ................ + ................ + ................ + 0............... + 00.............. + 000............. + 0000............ + 00000........... + 00000........... + 000000..........`], + [ house1, bitmap` +..........000000 +.........0333333 +.........0333333 +........03333333 +........03003333 +.......030110333 +.......030110333 +......0301111033 +......0301111033 +.....03011111103 +.....03011111103 +....030110001110 +....030107770110 +...0301107270111 +...0301072777011 +..03011077777011`], + [ house2, bitmap` +0000000......... +3333330......... +33333330........ +33333330........ +333333330....... +333333330....... +3333333330...... +3333333330...... +33333333330..... +33333333330..... +333333333330.... +333333333330.... +3333333333330... +0333333333330... +03333333333330.. +.0333333333330..`], + [ house3, bitmap` +..03011077777011 +.030111000000011 +.030111111111111 +0301111111111111 +0301111110001111 +.00111110CCC0111 +..011110CCCCC011 +..011110CCCCC011 +..01110CCCCCCC01 +..01110CCCCCCC01 +..01110CCCCCCC01 +..01110CCCCC0C01 +..01110CCCCCCC01 +..01110CCCCCCC01 +..01110CCCCCCC01 +..00000000000000`], + [ house4, bitmap` +103333333333330. +110333333333330. +1103333333333330 +1100000000000000 +1101111111111110 +1101111111111110 +1101100000000110 +1101107270770110 +1101102770770110 +1101100000000110 +1101107770770110 +1101107770770110 +1101100000000110 +1101111111111110 +1101111111111110 +0000000000000000`],); + } else if (gameRunning) { + setLegend([ player, bitmap` + ................ + ....000000...... + ..0044422500.0.. + .0444224402200.. + .0444044022500.. + .044020022500... + ..0402404000.... + ..040220020200.. + ...00220220220.. + ....042022240... + ....00000000.... + ...00440220..... + ..020440220..... + ..0200440000.... + ..02200022220... + .000000000000...` ], + [ moblin, bitmap` + ................ + .....99999...... + ...939999....... + ..9329993333.... + .332299993333... + .9999999933333.. + 33929999333333.. + 993299933993333. + 999939939993332. + .99999399993223. + .99999999933333. + 222229999222233. + ..9939993333333. + ....333999333399 + ....3999999333.. + .....299999.....`], + [ lynel, bitmap` + ................ + ....33339333.... + ...3233993...... + ..992939933..... + ...999393....... + ...3999933...... + .222239999...... + 22222399993....3 + .222239993333333 + ....333333333333 + ....33333333333. + ....3333333333.. + ....3333333333.. + .....33333333... + .....33332333... + ......333.333...`], + [ ground, bitmap` + CC0090CCCCCC009C + CCCC0009CCCC009C + CCCC00C0CCC09009 + CCCCC0C09CCC009C + CCCCC0C09CCC09CC + CCCCCCC0CCCC09CC + CCC99009CCCC09CC + CC9CCC09CCCC09CC + CC9CCCC0CCC009CC + CC9CCCC0CCC009CC + C09CCC009C00090C + C09CCC099C099900 + 009CCC09C09CCCCC + 009CCC09C09CCCC0 + 000CC000C9CCCCCC + 9009900909C9CC90`], + [ bg0, bitmap` +................ +................ +................ +................ +................ +...............0 +.............000 +............0000 +...........00000 +..........000000 +........00000000 +.......000000000 +.....00000000000 +...0000000000000 +0000000000000000 +0000000000000000`], + [ bg1, bitmap` + ...0000000000000 + ...0000000000000 + ..00000000000000 + .000000000000000 + 0000000000000000 + 0000000000000000 + 0000000000000000 + 0000000000000000 + 0000000000000000 + 0000000000000000 + 0000000000000000 + 0000000000000000 + 0000000000000000 + 0000000000000000 + 0000000000000000 + 0000000000000000`], + [ bg2, bitmap` + ................ + ................ + ................ + ...........000.. + ..........00000. + ..........000000 + ..........000000 + .........0000000 + .........0000000 + ........00000000 + .......000000000 + .......000000000 + ......0000000000 + .....00000000000 + .....00000000000 + ....000000000000`], + [ bg3, bitmap` + ................ + ................ + ................ + ................ + ................ + ................ + 0............... + 00.............. + 0000............ + 000000.......... + 00000000........ + 0000000000...... + 000000000000.... + 00000000000000.. + 0000000000000000 + 0000000000000000`], + [ bg4, bitmap` + 0000000000000000 + 0000000000000000 + 0000000000000000 + 0000000000000000 + 0000000000000000 + 0000000000000000 + 0000000000000000 + 0000000000000000 + 0000000000000000 + 0000000000000000 + 0000000000000000 + 0000000000000000 + 0000000000000000 + 0000000000000000 + 0000000000000000 + 0000000000000000`], + [ bg5, bitmap` + ................ + ................ + ................ + ................ + ................ + ................ + ................ + ................ + ................ + ................ + ................ + ................ + ................ + ...........00... + ...........00... + 00........0000..`], + [ bg6, bitmap` + 000.......00000. + 0000......000000 + 00000....0000000 + 000000...0000000 + 0000000.00000000 + 0000000000000000 + 0000000000000000 + 0000000000000000 + 0000000000000000 + 0000000000000000 + 0000000000000000 + 0000000000000000 + 0000000000000000 + 0000000000000000 + 0000000000000000 + 0000000000000000`], + [ bg7, bitmap` + ................ + ................ + ................ + .....0.......... + ....000......... + ....000......... + ....000......... + ....000......... + ....000......... + ....000......... + ....000......... + ....000......... + ....000......... + ....000.000...00 + ....000.000...00 + ....000.000...00`], + [ bg8, bitmap` + ....000.000...00 + ....000000000000 + ....000000000000 + ....000000000000 + ....000000000000 + ....000000000000 + ....000000000000 + ....000000000000 + ....000000000000 + ....000000000000 + ....000000000000 + ....000000000000 + ....000000000000 + ....000000000000 + ...0000000000000 + ...0000000000000`], + [ bg9, bitmap` + ...0000000000000 + 0000000000000000 + 0000000000000000 + 0000000000000000 + 0000000000000000 + 0000000000000000 + 0000000000000000 + 0000000000000000 + 0000000000000000 + 0000000000000000 + 0000000000000000 + 0000000000000000 + 0000000000000000 + 0000000000000000 + 0000000000000000 + 0000000000000000`], + [ bg10, bitmap` + ................ + ..............00 + ..............00 + ..............00 + ..............00 + ..............00 + ...........00000 + ...........00000 + ...........00000 + ...........00000 + ...........00000 + ...........00000 + ...........00000 + ...........00000 + .............000 + .............000`], + [ bg11, bitmap` + .............000 + ...............0 + ...............0 + ...............0 + ................ + ................ + ...0............ + ...0............ + ...0............ + ...0............ + ...0..0..0..0... + ...0..00.00.00.. + ...0..00.00.00.. + ...0000000000000 + ..00000000000000 + .000000000000000`], + [ bg12, bitmap` + 0000000000000000 + 0000000000000000 + 0000000000000000 + 0000000000000000 + 0000000000000000 + 0000000000000000 + 0000000000000000 + .000000000000000 + .000000000000000 + ..00000000000000 + ..00000000000000 + ..00000000000000 + ..00000000000000 + 0.00000000000000 + 0.00000000000000 + 0.00000000000000`], + [ bg13, bitmap` + 0.00000000000000 + 0000000000000000 + 0000000000000000 + 0000000000000000 + 0000000000000000 + 0000000000000000 + 0000000000000000 + 0000000000000000 + 0000000000000000 + 0000000000000000 + 0000000000000000 + 0000000000000000 + 0000000000000000 + 0000000000000000 + 0000000000000000 + 0000000000000000`], + [ bg14, bitmap` + ................ + ................ + ................ + ................ + ................ + ................ + ................ + ................ + ................ + ................ + ................ + ................ + ................ + .....0.......... + .....0.......... + .....0..........`], + [ bg15, bitmap` + ....000......... + ....000......... + ....000......... + ....000......... + ....000......... + ....000......... + ..0000000....... + ..0000000....... + ..0000000....... + ..0000000....... + ..0000000....... + 00000000000..... + 00000000000..... + 00000000000..... + 00000000000..... + 00000000000.....`], + [ bg16, bitmap` + 00000000000..... + 0000000000000... + 0000000000000... + 0000000000000... + 0000000000000... + 0000000000000... + 0000000000000000 + 0000000000000000 + 0000000000000000 + 0000000000000000 + 0000000000000000 + 0000000000000000 + 0000000000000000 + 0000000000000000 + 0000000000000000 + 0000000000000000`], + [ bg17, bitmap` + 00000000000000.. + 000000000000.... + 000000000000.... + 000000000000.... + .000000000...... + .000000000...... + .000000000...... + .000000000...... + .000000000...... + .000000000...0.. + .000000000..00.0 + .000000000..00.0 + .000000000000000 + 0000000000000000 + 0000000000000000 + 0000000000000000`], + [ bg18, bitmap` + ................ + ................ + ................ + ................ + ................ + ......00........ + ......00........ + ......00........ + ......00........ + 0..0..00........ + 0.00..00........ + 0.00..00........ + 00000000........ + 000000000....... + 0000000000...... + 00000000000.....`], + [ bg19, bitmap` + 00000000000..... + 00000000000..... + 00000000000..... + 00000000000..... + 00000000000..... + 00000000000..... + 0000000000...... + 0000000000...... + 000000000....... + 000000000....... + 000000000....... + 000000000....... + 000000000.000... + 000000000.000... + 000000000.000... + 000000000.000...`], + [ bg20, bitmap` + ................ + ................ + ................ + .....0.......... + ....000......... + ....000......... + ....000......... + ....000......... + ....000......... + ....000......... + ....000......... + ....000......... + 000.000......... + 000.000......... + 000.000......... + 000.000.........`], + [ bg21, bitmap` + 0000000......... + 0000000......... + 0000000......... + 0000000......... + 0000000......... + 0000000......... + 0000000......... + 0000000......... + 0000000......... + 0000000......... + 0000000......... + 0000000......... + 0000000.......0. + 00000000......0. + 00000000.....00. + 00000000....0000`], + [ bg22, bitmap` + 0.............00 + 00...........000 + 00..........0000 + 000....000000000 + 0000..0000000000 + 0000000000000000 + 0000000000000000 + 0000000000000000 + 0000000000000000 + 0000000000000000 + 0000000000000000 + 0000000000000000 + 0000000000000000 + 0000000000000000 + 0000000000000000 + 0000000000000000`], + [ bg23, bitmap` + 00.............. + 000............. + 000............. + 0000............ + 00000......00... + 000000....0000.. + 000000000000000. + 0000000000000000 + 0000000000000000 + 0000000000000000 + 0000000000000000 + 0000000000000000 + 0000000000000000 + 0000000000000000 + 0000000000000000 + 0000000000000000`], + [ bg24, bitmap` + ................ + ................ + ................ + ................ + ................ + ................ + ................ + ................ + ................ + 0............... + 00.............. + 000............. + 0000............ + 00000........... + 00000........... + 000000..........`], + [ house1, bitmap` +..........000000 +.........0333333 +.........0333333 +........03333333 +........03003333 +.......030110333 +.......030110333 +......0301111033 +......0301111033 +.....03011111103 +.....03011111103 +....030110001110 +....030107770110 +...0301107270111 +...0301072777011 +..03011077777011`], + [ house2, bitmap` +0000000......... +3333330......... +33333330........ +33333330........ +333333330....... +333333330....... +3333333330...... +3333333330...... +33333333330..... +33333333330..... +333333333330.... +333333333330.... +3333333333330... +0333333333330... +03333333333330.. +.0333333333330..`], + [ house3, bitmap` +..03011077777011 +.030111000000011 +.030111111111111 +0301111111111111 +0301111110001111 +.00111110CCC0111 +..011110CCCCC011 +..011110CCCCC011 +..01110CCCCCCC01 +..01110CCCCCCC01 +..01110CCCCCCC01 +..01110CCCCC0C01 +..01110CCCCCCC01 +..01110CCCCCCC01 +..01110CCCCCCC01 +..00000000000000`], + [ house4, bitmap` +103333333333330. +110333333333330. +1103333333333330 +1100000000000000 +1101111111111110 +1101111111111110 +1101100000000110 +1101107270770110 +1101102770770110 +1101100000000110 +1101107770770110 +1101107770770110 +1101100000000110 +1101111111111110 +1101111111111110 +0000000000000000`],); + } + animCount++ + multiplier *= 1.0015; + + if (score == (tm+t9)) { + isEndGame = true; + endCutscene(); + } } + setTimeout(gameLoop, (400/(speed*multiplier))); +} + +function endCutscene() { + clearTile(11, 7); + const p = getFirst(player); + p.y = 7; + p.x += 1; + setTimeout(() => { + p.x += 1; + setTimeout(() => { + p.x += 1; + setTimeout(() => { + p.x += 1; + setTimeout(() => { + p.x += 1; + + setLegend( + [ house1, bitmap` +.55555...5...... +5555555..5...... +55555555.55..333 +5555555535553333 +7575755535555355 +..55555535555557 +..55555533553357 +...5555533353335 +...5555533355733 +...5555333555557 +...5555333555577 +...5555335555737 +...5555335555737 +....553335555773 +....553335555533 +.....53333553533`], + [ house2, bitmap` + 0000000......... + 3333330......... + 33333330........ + 33333330........ + 333333330....... + 333333330....... + 3333333330...... + 3333333330...... + 33333333330..... + 33333333330..... + 333333333330.... + 333333333330.... + 3333333333330... + 0333333333330... + 03333333333330.. + .0333333333330..`], + [ house4, bitmap` +3533335555555... +5533335555555... +3333335555555... +777333555555535. +7335555555555355 +7333555555553555 +3755555555553555 +7755555555535555 +735555553335555. +5535555355555533 +555355355555333. +555533555533333. +55555553333333.. +555555.33333773. +55555.3333333333 +......3333333333`], + [ house3, bitmap` + ..03011077777011 + .030111000000011 + .030111111111111 + 0301111111111111 + 0301111110001111 + .00111110CCC0111 + ..011110CCCCC011 + ..011110CCCCC011 + ..01110CCCCCCC01 + ..01110CCCCCCC01 + ..01110CCCCCCC01 + ..01110CCCCC0C01 + ..01110CCCCCCC01 + ..01110CCCCCCC01 + ..01110CCCCCCC01 + ..00000000000000`], + [ sky, bitmap` +1111111111111111 +1111111111111111 +1111111111111111 +1111111111111111 +1111111111111111 +1111111111111111 +1111111111111111 +1111111111111111 +1111111111111111 +1111111111111111 +1111111111111111 +1111111111111111 +1111111111111111 +1111111111111111 +1111111111111111 +1111111111111111`] + ); + + setTimeout(() => { + + setLegend( + [ house1, bitmap` + ..........000000 + .........0333333 + .........0333333 + ........03333333 + ........03003333 + .......030110333 + .......030110333 + ......0301111033 + ......0301111033 + .....03011111103 + .....03011111103 + ....030110001110 + ....030107770110 + ...0301107270111 + ...0301072777011 + ..03011077777011`], + [ house2, bitmap` + 0000000......... + 3333330......... + 33333330........ + 33333330........ + 333333330....... + 333333330....... + 3333333330...... + 3333333330...... + 33333333330..... + 33333333330..... + 333333333330.... + 333333333330.... + 3333333333330... + 0333333333330... + 03333333333330.. + .0333333333330..`], + [ house3, bitmap` + ..03011077777011 + .030111000000011 + .030111111111111 + 0301111111111111 + 0301111110001111 + .00111110CCC0111 + ..011110CCCCC011 + ..011110CCCCC011 + ..01110CCCCCCC01 + ..01110CCCCCCC01 + ..01110CCCCCCC01 + ..01110CCCCC0C01 + ..01110CCCCCCC01 + ..01110CCCCCCC01 + ..01110CCCCCCC01 + ..00000000000000`], + [ house4, bitmap` + 103333333333330. + 110333333333330. + 1103333333333330 + 1100000000000000 + 1101111111111110 + 1101111111111110 + 1101100000000110 + 1101107270770110 + 1101102770770110 + 1101100000000110 + 1101107770770110 + 1101107770770110 + 1101100000000110 + 1101111111111110 + 1101111111111110 + 0000000000000000`], + [ sky, bitmap` + 7777777777777777 + 7777777777777777 + 7777777777777777 + 7777777777777777 + 7777777777777777 + 7777777777777777 + 7777777777777777 + 7777777777777777 + 7777777777777777 + 7777777777777777 + 7777777777777777 + 7777777777777777 + 7777777777777777 + 7777777777777777 + 7777777777777777 + 7777777777777777`] + ); + + setTimeout(() => { + + setLegend( + [ house1, bitmap` + ..........000000 + .........0333333 + .........0333333 + ........03333333 + ........03003333 + .......030110333 + .......030110333 + ......0301111033 + ......0301111033 + .....03011111103 + .....03011111103 + ....030110001110 + ....030107770110 + ...0301107270111 + ...0301072777011 + ..03011077777011`], + [ house2, bitmap` + ......5......... + ......5......... + 333..55......... + 3333555......... + 5535555......... + 755555533....... + 7533553333...... + 53375333333..... + 377753333333.... + 7555553333333... + 77555533333777.. + 7375555335557... + 737555535555.... + 3775555355555... + 3355555355555... + 3353553555555...`], + [ house3, bitmap` + ......3333333353 + ......3333333355 + ..55553333333333 + .555555333333777 + 5555555533337337 + 5555555553357337 + 5555555555357773 + 5555555555555577 + .555555555555577 + 3355555555555555 + .333555555555555 + .333335555555555 + ..33333335555555 + .377333333555555 + 3333333333.55555 + 3333333333......`], + [ house4, bitmap` + 103333333333330. + 110333333333330. + 1103333333333330 + 1100000000000000 + 1101111111111110 + 1101111111111110 + 1101100000000110 + 1101107270770110 + 1101102770770110 + 1101100000000110 + 1101107770770110 + 1101107770770110 + 1101100000000110 + 1101111111111110 + 1101111111111110 + 0000000000000000`], + [ sky, bitmap` + 1111111111111111 + 1111111111111111 + 1111111111111111 + 1111111111111111 + 1111111111111111 + 1111111111111111 + 1111111111111111 + 1111111111111111 + 1111111111111111 + 1111111111111111 + 1111111111111111 + 1111111111111111 + 1111111111111111 + 1111111111111111 + 1111111111111111 + 1111111111111111`] + ); + + setTimeout(() => { + + setLegend( + [ house1, bitmap` + ..........000000 + .........0333333 + .........0333333 + ........03333333 + ........03003333 + .......030110333 + .......030110333 + ......0301111033 + ......0301111033 + .....03011111103 + .....03011111103 + ....030110001110 + ....030107770110 + ...0301107270111 + ...0301072777011 + ..03011077777011`], + [ house2, bitmap` + 0000000......... + 3333330......... + 33333330........ + 33333330........ + 333333330....... + 333333330....... + 3333333330...... + 3333333330...... + 33333333330..... + 33333333330..... + 333333333330.... + 333333333330.... + 3333333333330... + 0333333333330... + 03333333333330.. + .0333333333330..`], + [ house3, bitmap` + ..03011077777011 + .030111000000011 + .030111111111111 + 0301111111111111 + 0301111110001111 + .00111110CCC0111 + ..011110CCCCC011 + ..011110CCCCC011 + ..01110CCCCCCC01 + ..01110CCCCCCC01 + ..01110CCCCCCC01 + ..01110CCCCC0C01 + ..01110CCCCCCC01 + ..01110CCCCCCC01 + ..01110CCCCCCC01 + ..00000000000000`], + [ house4, bitmap` + 103333333333330. + 110333333333330. + 1103333333333330 + 1100000000000000 + 1101111111111110 + 1101111111111110 + 1101100000000110 + 1101107270770110 + 1101102770770110 + 1101100000000110 + 1101107770770110 + 1101107770770110 + 1101100000000110 + 1101111111111110 + 1101111111111110 + 0000000000000000`], + [ sky, bitmap` + 7777777777777777 + 7777777777777777 + 7777777777777777 + 7777777777777777 + 7777777777777777 + 7777777777777777 + 7777777777777777 + 7777777777777777 + 7777777777777777 + 7777777777777777 + 7777777777777777 + 7777777777777777 + 7777777777777777 + 7777777777777777 + 7777777777777777 + 7777777777777777`] + ); + + setTimeout(() => { + + setLegend( + [ house1, bitmap` + .55555...5...... + 5555555..5...... + 55555555.55..333 + 5555555535553333 + 7575755535555355 + ..55555535555557 + ..55555533553357 + ...5555533353335 + ...5555533355733 + ...5555333555557 + ...5555333555577 + ...5555335555737 + ...5555335555737 + ....553335555773 + ....553335555533 + .....53333553533`], + [ house2, bitmap` + ......5......... + ......5......... + 333..55......... + 3333555......... + 5535555......... + 755555533....... + 7533553333...... + 53375333333..... + 377753333333.... + 7555553333333... + 77555533333777.. + 7375555335557... + 737555535555.... + 3775555355555... + 3355555355555... + 3353553555555...`], + [ house3, bitmap` + ......3333333353 + ......3333333355 + ..55553333333333 + .555555333333777 + 5555555533337337 + 5555555553357337 + 5555555555357773 + 5555555555555577 + .555555555555577 + 3355555555555555 + .333555555555555 + .333335555555555 + ..33333335555555 + .377333333555555 + 3333333333.55555 + 3333333333......`], + [ house4, bitmap` + 3533335555555... + 5533335555555... + 3333335555555... + 777333555555535. + 7335555555555355 + 7333555555553555 + 3755555555553555 + 7755555555535555 + 735555553335555. + 5535555355555533 + 555355355555333. + 555533555533333. + 55555553333333.. + 555555.33333773. + 55555.3333333333 + ......3333333333`], + [ sky, bitmap` + 1111111111111111 + 1111111111111111 + 1111111111111111 + 1111111111111111 + 1111111111111111 + 1111111111111111 + 1111111111111111 + 1111111111111111 + 1111111111111111 + 1111111111111111 + 1111111111111111 + 1111111111111111 + 1111111111111111 + 1111111111111111 + 1111111111111111 + 1111111111111111`] + ); + setTimeout(endGame, (400)); + return + + }, (400)) + + }, (400)) + + }, (400)) + + }, (400)) + + + }, (400)) + + }, (400)) + + }, (400)) - if ((animCount % 2) == 0 && gameRunning) { - setLegend([ player, bitmap` -....00000....... -...04442500..... -..0442240220.... -.0440440224000.. -0440200224000... -04402404000..... -.040220020200... -..00220220220... -...042022240.... -...00404440..... -...04000000..... -..044022040..... -..044022020..... -..000000040..... -...02222000..... -..0000000000....` ], - [ moblin, bitmap` -.....99999...... -...939999....... -..9329993333.... -.332299993333... -.9999999933333.. -33929999333333.. -993299939993333. -999939939993332. -.99999333999223. -.99999339999333. -..9222229992222. -..9933333993333. -....333333333399 -....3333339993.. -..999333999999.. -...9999..99999..`], - [ lynel, bitmap` -.....33339333... -....3233993..... -....92939933.... -....999393...... -....3999933..... -.222239999.....3 -22222399993...33 -.222239993333333 -....33333333333. -....33333333333. -...33333333333.. -..3333333333333. -..33333333333333 -...333222222333. -....3........3.. -................`], - [ ground, bitmap` -CCC09009CC0090CC -CCCC009CCCCC0009 -CCCC009CCCCC00C0 -9CCC009CCCCCC0C0 -9CCC09CCCCCCC0C0 -CCCC09CCCCCCCCC0 -CCCC09CCCCC99009 -CCCC09CCCC9CCC09 -CCC009CCCC9CCCC0 -CCC009CCCC9CCCC0 -9C00090CC09CCC00 -9C099900C09CCC09 -C09CCCCC009CCC09 -C09CCCC0009CCC09 -C9CCCCCC000CC000 -09C9CC9090099009`],); - } else if (gameRunning) { - setLegend([ player, bitmap` -................ -....000000...... -..0044422500.0.. -.0444224402200.. -.0444044022500.. -.044020022500... -..0402404000.... -..040220020200.. -...00220220220.. -....042022240... -....00000000.... -...00440220..... -..020440220..... -..0200440000.... -..02200022220... -.000000000000...` ], - [ moblin, bitmap` -................ -.....99999...... -...939999....... -..9329993333.... -.332299993333... -.9999999933333.. -33929999333333.. -993299933993333. -999939939993332. -.99999399993223. -.99999999933333. -222229999222233. -..9939993333333. -....333999333399 -....3999999333.. -.....299999.....`], - [ lynel, bitmap` -................ -....33339333.... -...3233993...... -..992939933..... -...999393....... -...3999933...... -.222239999...... -22222399993....3 -.222239993333333 -....333333333333 -....33333333333. -....3333333333.. -....3333333333.. -.....33333333... -.....33332333... -......333.333...`], - [ ground, bitmap` -CC0090CCCCCC009C -CCCC0009CCCC009C -CCCC00C0CCC09009 -CCCCC0C09CCC009C -CCCCC0C09CCC09CC -CCCCCCC0CCCC09CC -CCC99009CCCC09CC -CC9CCC09CCCC09CC -CC9CCCC0CCC009CC -CC9CCCC0CCC009CC -C09CCC009C00090C -C09CCC099C099900 -009CCC09C09CCCCC -009CCC09C09CCCC0 -000CC000C9CCCCCC -9009900909C9CC90`],); + }, (400)) +} + +function gannonUpdate() { + if (getFirst(house1).x == 0) { + direction = 1; + if(getFirst(player).x != 6) { + getFirst(player).x += 1; + } + } else if (getFirst(house2).x == 11) { + direction = -1; + if(getFirst(player).x != 5) { + getFirst(player).x -= 1; + } + } + getFirst(house1).x += 1*direction; + getFirst(house2).x += 1*direction; + getFirst(house3).x += 1*direction; + getFirst(house4).x += 1*direction; +} + +function gannonHitCheck(other) { + let hit = false + let h1 = getFirst(house1); + let h2 = getFirst(house2); + let h3 = getFirst(house3); + let h4 = getFirst(house4); + if (other.x == h1.x && other.y == h1.y) { + other.remove(); + hit = true; + } + else if (other.x == h2.x && other.y == h2.y) { + other.remove(); + hit = true; + } + else if (other.x == h3.x && other.y == h3.y) { + other.remove(); + hit = true; } - animCount++ - multiplier *= 1.0025; + else if (other.x == h4.x && other.y == h4.y) { + other.remove(); + hit = true; + } + if (hit) { + setBackground(sky); + isEndGame = false; + gameRunning = false; + if (getFirst(player) != null) { + getFirst(player).remove(); + } + clearText(); + addText("Game Over!\nScore: " + score, { + x: 5, + y: 6, + color: color`6` + }); + addText("Press J to\nrestart!", { + x: 5, + y: 10, + color: color`2` + }); + gameLoop(); } - setTimeout(gameLoop, (500/(speed*multiplier))); } +function endGame() { + if (getAll(player).length <= 0) { + return; + } + else if (isEndGame) { + const p = getFirst(player); + gannonUpdate(); + clearText(); + if (inAir) { + p.y = 5; + } else { + p.y = 7; + } + score++; + addText("Score: "+score, { + x: 0, + y: 0, + color: color`2` + }); + gannonHitCheck(p); + } + + + if ((animCount % 2) == 0 && gameRunning) { + setLegend([ player, bitmap` + ....00000....... + ...04442500..... + ..0442240220.... + .0440440224000.. + 0440200224000... + 04402404000..... + .040220020200... + ..00220220220... + ...042022240.... + ...00404440..... + ...04000000..... + ..044022040..... + ..044022020..... + ..000000040..... + ...02222000..... + ..0000000000....` ], + [ moblin, bitmap` + .....99999...... + ...939999....... + ..9329993333.... + .332299993333... + .9999999933333.. + 33929999333333.. + 993299939993333. + 999939939993332. + .99999333999223. + .99999339999333. + ..9222229992222. + ..9933333993333. + ....333333333399 + ....3333339993.. + ..999333999999.. + ...9999..99999..`], + [ lynel, bitmap` + .....33339333... + ....3233993..... + ....92939933.... + ....999393...... + ....3999933..... + .222239999.....3 + 22222399993...33 + .222239993333333 + ....33333333333. + ....33333333333. + ...33333333333.. + ..3333333333333. + ..33333333333333 + ...333222222333. + ....3........3.. + ................`], + [ ground, bitmap` + CCC09009CC0090CC + CCCC009CCCCC0009 + CCCC009CCCCC00C0 + 9CCC009CCCCCC0C0 + 9CCC09CCCCCCC0C0 + CCCC09CCCCCCCCC0 + CCCC09CCCCC99009 + CCCC09CCCC9CCC09 + CCC009CCCC9CCCC0 + CCC009CCCC9CCCC0 + 9C00090CC09CCC00 + 9C099900C09CCC09 + C09CCCCC009CCC09 + C09CCCC0009CCC09 + C9CCCCCC000CC000 + 09C9CC9090099009`], + [ bg0, bitmap` +................ +................ +................ +................ +................ +...............0 +.............000 +............0000 +...........00000 +..........000000 +........00000000 +.......000000000 +.....00000000000 +...0000000000000 +0000000000000000 +0000000000000000`], + [ bg1, bitmap` + ...0000000000000 + ...0000000000000 + ..00000000000000 + .000000000000000 + 0000000000000000 + 0000000000000000 + 0000000000000000 + 0000000000000000 + 0000000000000000 + 0000000000000000 + 0000000000000000 + 0000000000000000 + 0000000000000000 + 0000000000000000 + 0000000000000000 + 0000000000000000`], + [ bg2, bitmap` + ................ + ................ + ................ + ...........000.. + ..........00000. + ..........000000 + ..........000000 + .........0000000 + .........0000000 + ........00000000 + .......000000000 + .......000000000 + ......0000000000 + .....00000000000 + .....00000000000 + ....000000000000`], + [ bg3, bitmap` + ................ + ................ + ................ + ................ + ................ + ................ + 0............... + 00.............. + 0000............ + 000000.......... + 00000000........ + 0000000000...... + 000000000000.... + 00000000000000.. + 0000000000000000 + 0000000000000000`], + [ bg4, bitmap` + 0000000000000000 + 0000000000000000 + 0000000000000000 + 0000000000000000 + 0000000000000000 + 0000000000000000 + 0000000000000000 + 0000000000000000 + 0000000000000000 + 0000000000000000 + 0000000000000000 + 0000000000000000 + 0000000000000000 + 0000000000000000 + 0000000000000000 + 0000000000000000`], + [ bg5, bitmap` + ................ + ................ + ................ + ................ + ................ + ................ + ................ + ................ + ................ + ................ + ................ + ................ + ................ + ...........00... + ...........00... + 00........0000..`], + [ bg6, bitmap` + 000.......00000. + 0000......000000 + 00000....0000000 + 000000...0000000 + 0000000.00000000 + 0000000000000000 + 0000000000000000 + 0000000000000000 + 0000000000000000 + 0000000000000000 + 0000000000000000 + 0000000000000000 + 0000000000000000 + 0000000000000000 + 0000000000000000 + 0000000000000000`], + [ bg7, bitmap` + ................ + ................ + ................ + .....0.......... + ....000......... + ....000......... + ....000......... + ....000......... + ....000......... + ....000......... + ....000......... + ....000......... + ....000......... + ....000.000...00 + ....000.000...00 + ....000.000...00`], + [ bg8, bitmap` + ....000.000...00 + ....000000000000 + ....000000000000 + ....000000000000 + ....000000000000 + ....000000000000 + ....000000000000 + ....000000000000 + ....000000000000 + ....000000000000 + ....000000000000 + ....000000000000 + ....000000000000 + ....000000000000 + ...0000000000000 + ...0000000000000`], + [ bg9, bitmap` + ...0000000000000 + 0000000000000000 + 0000000000000000 + 0000000000000000 + 0000000000000000 + 0000000000000000 + 0000000000000000 + 0000000000000000 + 0000000000000000 + 0000000000000000 + 0000000000000000 + 0000000000000000 + 0000000000000000 + 0000000000000000 + 0000000000000000 + 0000000000000000`], + [ bg10, bitmap` + ................ + ..............00 + ..............00 + ..............00 + ..............00 + ..............00 + ...........00000 + ...........00000 + ...........00000 + ...........00000 + ...........00000 + ...........00000 + ...........00000 + ...........00000 + .............000 + .............000`], + [ bg11, bitmap` + .............000 + ...............0 + ...............0 + ...............0 + ................ + ................ + ...0............ + ...0............ + ...0............ + ...0............ + ...0..0..0..0... + ...0..00.00.00.. + ...0..00.00.00.. + ...0000000000000 + ..00000000000000 + .000000000000000`], + [ bg12, bitmap` + 0000000000000000 + 0000000000000000 + 0000000000000000 + 0000000000000000 + 0000000000000000 + 0000000000000000 + 0000000000000000 + .000000000000000 + .000000000000000 + ..00000000000000 + ..00000000000000 + ..00000000000000 + ..00000000000000 + 0.00000000000000 + 0.00000000000000 + 0.00000000000000`], + [ bg13, bitmap` + 0.00000000000000 + 0000000000000000 + 0000000000000000 + 0000000000000000 + 0000000000000000 + 0000000000000000 + 0000000000000000 + 0000000000000000 + 0000000000000000 + 0000000000000000 + 0000000000000000 + 0000000000000000 + 0000000000000000 + 0000000000000000 + 0000000000000000 + 0000000000000000`], + [ bg14, bitmap` + ................ + ................ + ................ + ................ + ................ + ................ + ................ + ................ + ................ + ................ + ................ + ................ + ................ + .....0.......... + .....0.......... + .....0..........`], + [ bg15, bitmap` + ....000......... + ....000......... + ....000......... + ....000......... + ....000......... + ....000......... + ..0000000....... + ..0000000....... + ..0000000....... + ..0000000....... + ..0000000....... + 00000000000..... + 00000000000..... + 00000000000..... + 00000000000..... + 00000000000.....`], + [ bg16, bitmap` + 00000000000..... + 0000000000000... + 0000000000000... + 0000000000000... + 0000000000000... + 0000000000000... + 0000000000000000 + 0000000000000000 + 0000000000000000 + 0000000000000000 + 0000000000000000 + 0000000000000000 + 0000000000000000 + 0000000000000000 + 0000000000000000 + 0000000000000000`], + [ bg17, bitmap` + 00000000000000.. + 000000000000.... + 000000000000.... + 000000000000.... + .000000000...... + .000000000...... + .000000000...... + .000000000...... + .000000000...... + .000000000...0.. + .000000000..00.0 + .000000000..00.0 + .000000000000000 + 0000000000000000 + 0000000000000000 + 0000000000000000`], + [ bg18, bitmap` + ................ + ................ + ................ + ................ + ................ + ......00........ + ......00........ + ......00........ + ......00........ + 0..0..00........ + 0.00..00........ + 0.00..00........ + 00000000........ + 000000000....... + 0000000000...... + 00000000000.....`], + [ bg19, bitmap` + 00000000000..... + 00000000000..... + 00000000000..... + 00000000000..... + 00000000000..... + 00000000000..... + 0000000000...... + 0000000000...... + 000000000....... + 000000000....... + 000000000....... + 000000000....... + 000000000.000... + 000000000.000... + 000000000.000... + 000000000.000...`], + [ bg20, bitmap` + ................ + ................ + ................ + .....0.......... + ....000......... + ....000......... + ....000......... + ....000......... + ....000......... + ....000......... + ....000......... + ....000......... + 000.000......... + 000.000......... + 000.000......... + 000.000.........`], + [ bg21, bitmap` + 0000000......... + 0000000......... + 0000000......... + 0000000......... + 0000000......... + 0000000......... + 0000000......... + 0000000......... + 0000000......... + 0000000......... + 0000000......... + 0000000......... + 0000000.......0. + 00000000......0. + 00000000.....00. + 00000000....0000`], + [ bg22, bitmap` + 0.............00 + 00...........000 + 00..........0000 + 000....000000000 + 0000..0000000000 + 0000000000000000 + 0000000000000000 + 0000000000000000 + 0000000000000000 + 0000000000000000 + 0000000000000000 + 0000000000000000 + 0000000000000000 + 0000000000000000 + 0000000000000000 + 0000000000000000`], + [ bg23, bitmap` + 00.............. + 000............. + 000............. + 0000............ + 00000......00... + 000000....0000.. + 000000000000000. + 0000000000000000 + 0000000000000000 + 0000000000000000 + 0000000000000000 + 0000000000000000 + 0000000000000000 + 0000000000000000 + 0000000000000000 + 0000000000000000`], + [ bg24, bitmap` + ................ + ................ + ................ + ................ + ................ + ................ + ................ + ................ + ................ + 0............... + 00.............. + 000............. + 0000............ + 00000........... + 00000........... + 000000..........`], + [ house1, bitmap` +.55555...5...... +5555555..5...... +55555555.55..333 +5555555535553333 +7575755535555355 +..55555535555557 +..55555533553357 +...5555533353335 +...5555533355733 +...5555333555557 +...5555333555577 +...5555335555737 +...5555335555737 +....553335555773 +....553335555533 +.....53333553533`], + [ house2, bitmap` + ......5......... + ......5......... + 333..55......... + 3333555......... + 5535555......... + 755555533....... + 7533553333...... + 53375333333..... + 377753333333.... + 7555553333333... + 77555533333777.. + 7375555335557... + 737555535555.... + 3775555355555... + 3355555355555... + 3353553555555...`], + [ house3, bitmap` + ......3333333353 + ......3333333355 + ..55553333333333 + .555555333333777 + 5555555533337337 + 5555555553357337 + 5555555555357773 + 5555555555555577 + .555555555555577 + 3355555555555555 + .333555555555555 + .333335555555555 + ..33333335555555 + .377333333555555 + 3333333333.55555 + 3333333333......`], + [ house4, bitmap` +3533335555555... +5533335555555... +3333335555555... +777333555555535. +7335555555555355 +7333555555553555 +3755555555553555 +7755555555535555 +735555553335555. +5535555355555533 +555355355555333. +555533555533333. +55555553333333.. +555555.33333773. +55555.3333333333 +......3333333333`],); + } else if (gameRunning) { + setLegend([ player, bitmap` + ................ + ....000000...... + ..0044422500.0.. + .0444224402200.. + .0444044022500.. + .044020022500... + ..0402404000.... + ..040220020200.. + ...00220220220.. + ....042022240... + ....00000000.... + ...00440220..... + ..020440220..... + ..0200440000.... + ..02200022220... + .000000000000...` ], + [ moblin, bitmap` + ................ + .....99999...... + ...939999....... + ..9329993333.... + .332299993333... + .9999999933333.. + 33929999333333.. + 993299933993333. + 999939939993332. + .99999399993223. + .99999999933333. + 222229999222233. + ..9939993333333. + ....333999333399 + ....3999999333.. + .....299999.....`], + [ lynel, bitmap` + ................ + ....33339333.... + ...3233993...... + ..992939933..... + ...999393....... + ...3999933...... + .222239999...... + 22222399993....3 + .222239993333333 + ....333333333333 + ....33333333333. + ....3333333333.. + ....3333333333.. + .....33333333... + .....33332333... + ......333.333...`], + [ ground, bitmap` + CC0090CCCCCC009C + CCCC0009CCCC009C + CCCC00C0CCC09009 + CCCCC0C09CCC009C + CCCCC0C09CCC09CC + CCCCCCC0CCCC09CC + CCC99009CCCC09CC + CC9CCC09CCCC09CC + CC9CCCC0CCC009CC + CC9CCCC0CCC009CC + C09CCC009C00090C + C09CCC099C099900 + 009CCC09C09CCCCC + 009CCC09C09CCCC0 + 000CC000C9CCCCCC + 9009900909C9CC90`], + [ bg0, bitmap` +................ +................ +................ +................ +................ +...............0 +.............000 +............0000 +...........00000 +..........000000 +........00000000 +.......000000000 +.....00000000000 +...0000000000000 +0000000000000000 +0000000000000000`], + [ bg1, bitmap` + ...0000000000000 + ...0000000000000 + ..00000000000000 + .000000000000000 + 0000000000000000 + 0000000000000000 + 0000000000000000 + 0000000000000000 + 0000000000000000 + 0000000000000000 + 0000000000000000 + 0000000000000000 + 0000000000000000 + 0000000000000000 + 0000000000000000 + 0000000000000000`], + [ bg2, bitmap` + ................ + ................ + ................ + ...........000.. + ..........00000. + ..........000000 + ..........000000 + .........0000000 + .........0000000 + ........00000000 + .......000000000 + .......000000000 + ......0000000000 + .....00000000000 + .....00000000000 + ....000000000000`], + [ bg3, bitmap` + ................ + ................ + ................ + ................ + ................ + ................ + 0............... + 00.............. + 0000............ + 000000.......... + 00000000........ + 0000000000...... + 000000000000.... + 00000000000000.. + 0000000000000000 + 0000000000000000`], + [ bg4, bitmap` + 0000000000000000 + 0000000000000000 + 0000000000000000 + 0000000000000000 + 0000000000000000 + 0000000000000000 + 0000000000000000 + 0000000000000000 + 0000000000000000 + 0000000000000000 + 0000000000000000 + 0000000000000000 + 0000000000000000 + 0000000000000000 + 0000000000000000 + 0000000000000000`], + [ bg5, bitmap` + ................ + ................ + ................ + ................ + ................ + ................ + ................ + ................ + ................ + ................ + ................ + ................ + ................ + ...........00... + ...........00... + 00........0000..`], + [ bg6, bitmap` + 000.......00000. + 0000......000000 + 00000....0000000 + 000000...0000000 + 0000000.00000000 + 0000000000000000 + 0000000000000000 + 0000000000000000 + 0000000000000000 + 0000000000000000 + 0000000000000000 + 0000000000000000 + 0000000000000000 + 0000000000000000 + 0000000000000000 + 0000000000000000`], + [ bg7, bitmap` + ................ + ................ + ................ + .....0.......... + ....000......... + ....000......... + ....000......... + ....000......... + ....000......... + ....000......... + ....000......... + ....000......... + ....000......... + ....000.000...00 + ....000.000...00 + ....000.000...00`], + [ bg8, bitmap` + ....000.000...00 + ....000000000000 + ....000000000000 + ....000000000000 + ....000000000000 + ....000000000000 + ....000000000000 + ....000000000000 + ....000000000000 + ....000000000000 + ....000000000000 + ....000000000000 + ....000000000000 + ....000000000000 + ...0000000000000 + ...0000000000000`], + [ bg9, bitmap` + ...0000000000000 + 0000000000000000 + 0000000000000000 + 0000000000000000 + 0000000000000000 + 0000000000000000 + 0000000000000000 + 0000000000000000 + 0000000000000000 + 0000000000000000 + 0000000000000000 + 0000000000000000 + 0000000000000000 + 0000000000000000 + 0000000000000000 + 0000000000000000`], + [ bg10, bitmap` + ................ + ..............00 + ..............00 + ..............00 + ..............00 + ..............00 + ...........00000 + ...........00000 + ...........00000 + ...........00000 + ...........00000 + ...........00000 + ...........00000 + ...........00000 + .............000 + .............000`], + [ bg11, bitmap` + .............000 + ...............0 + ...............0 + ...............0 + ................ + ................ + ...0............ + ...0............ + ...0............ + ...0............ + ...0..0..0..0... + ...0..00.00.00.. + ...0..00.00.00.. + ...0000000000000 + ..00000000000000 + .000000000000000`], + [ bg12, bitmap` + 0000000000000000 + 0000000000000000 + 0000000000000000 + 0000000000000000 + 0000000000000000 + 0000000000000000 + 0000000000000000 + .000000000000000 + .000000000000000 + ..00000000000000 + ..00000000000000 + ..00000000000000 + ..00000000000000 + 0.00000000000000 + 0.00000000000000 + 0.00000000000000`], + [ bg13, bitmap` + 0.00000000000000 + 0000000000000000 + 0000000000000000 + 0000000000000000 + 0000000000000000 + 0000000000000000 + 0000000000000000 + 0000000000000000 + 0000000000000000 + 0000000000000000 + 0000000000000000 + 0000000000000000 + 0000000000000000 + 0000000000000000 + 0000000000000000 + 0000000000000000`], + [ bg14, bitmap` + ................ + ................ + ................ + ................ + ................ + ................ + ................ + ................ + ................ + ................ + ................ + ................ + ................ + .....0.......... + .....0.......... + .....0..........`], + [ bg15, bitmap` + ....000......... + ....000......... + ....000......... + ....000......... + ....000......... + ....000......... + ..0000000....... + ..0000000....... + ..0000000....... + ..0000000....... + ..0000000....... + 00000000000..... + 00000000000..... + 00000000000..... + 00000000000..... + 00000000000.....`], + [ bg16, bitmap` + 00000000000..... + 0000000000000... + 0000000000000... + 0000000000000... + 0000000000000... + 0000000000000... + 0000000000000000 + 0000000000000000 + 0000000000000000 + 0000000000000000 + 0000000000000000 + 0000000000000000 + 0000000000000000 + 0000000000000000 + 0000000000000000 + 0000000000000000`], + [ bg17, bitmap` + 00000000000000.. + 000000000000.... + 000000000000.... + 000000000000.... + .000000000...... + .000000000...... + .000000000...... + .000000000...... + .000000000...... + .000000000...0.. + .000000000..00.0 + .000000000..00.0 + .000000000000000 + 0000000000000000 + 0000000000000000 + 0000000000000000`], + [ bg18, bitmap` + ................ + ................ + ................ + ................ + ................ + ......00........ + ......00........ + ......00........ + ......00........ + 0..0..00........ + 0.00..00........ + 0.00..00........ + 00000000........ + 000000000....... + 0000000000...... + 00000000000.....`], + [ bg19, bitmap` + 00000000000..... + 00000000000..... + 00000000000..... + 00000000000..... + 00000000000..... + 00000000000..... + 0000000000...... + 0000000000...... + 000000000....... + 000000000....... + 000000000....... + 000000000....... + 000000000.000... + 000000000.000... + 000000000.000... + 000000000.000...`], + [ bg20, bitmap` + ................ + ................ + ................ + .....0.......... + ....000......... + ....000......... + ....000......... + ....000......... + ....000......... + ....000......... + ....000......... + ....000......... + 000.000......... + 000.000......... + 000.000......... + 000.000.........`], + [ bg21, bitmap` + 0000000......... + 0000000......... + 0000000......... + 0000000......... + 0000000......... + 0000000......... + 0000000......... + 0000000......... + 0000000......... + 0000000......... + 0000000......... + 0000000......... + 0000000.......0. + 00000000......0. + 00000000.....00. + 00000000....0000`], + [ bg22, bitmap` + 0.............00 + 00...........000 + 00..........0000 + 000....000000000 + 0000..0000000000 + 0000000000000000 + 0000000000000000 + 0000000000000000 + 0000000000000000 + 0000000000000000 + 0000000000000000 + 0000000000000000 + 0000000000000000 + 0000000000000000 + 0000000000000000 + 0000000000000000`], + [ bg23, bitmap` + 00.............. + 000............. + 000............. + 0000............ + 00000......00... + 000000....0000.. + 000000000000000. + 0000000000000000 + 0000000000000000 + 0000000000000000 + 0000000000000000 + 0000000000000000 + 0000000000000000 + 0000000000000000 + 0000000000000000 + 0000000000000000`], + [ bg24, bitmap` + ................ + ................ + ................ + ................ + ................ + ................ + ................ + ................ + ................ + 0............... + 00.............. + 000............. + 0000............ + 00000........... + 00000........... + 000000..........`], + [ house2, bitmap` +......5...55555. +......5..5555555 +333..55.55555555 +3333555355555555 +5535555355575757 +75555553555555.. +75335533555555.. +5333533355555... +3375533355555... +7555553335555... +7755553335555... +7375555335555... +7375555335555... +377555533355.... +335555533355.... +33535533335.....`], + [ house1, bitmap` +.........5...... +.........5...... +.........55..333 +.........5553333 +.........5555355 +.......335555557 +......3333553357 +.....33333357335 +....333333357773 +...3333333555557 +..77733333555577 +...7555335555737 +....555535555737 +...5555535555773 +...5555535555533 +...5555553553533`], + [ house4, bitmap` +3533333333...... +5533333333...... +33333333335555.. +777333333555555. +7337333355555555 +7337533555555555 +3777535555555555 +7755555555555555 +775555555555555. +5555555555555533 +555555555555333. +555555555533333. +55555553333333.. +555555333333773. +55555.3333333333 +......3333333333`], + [ house3, bitmap` +...5555555333353 +...5555555333355 +...5555555333333 +.535555555333777 +5535555555555337 +5553555555553337 +5553555555555573 +5555355555555577 +.555533355555537 +3355555535555355 +.333555553553555 +.333335555335555 +..33333335555555 +.37733333.555555 +3333333333.55555 +3333333333......`],); + } + if ((animCount % 2) == 0 && gameRunning && direction == -1) { + setLegend([ player, bitmap` +.......00000.... +.....00524440... +....0220422440.. +..0004220440440. +...0004220020440 +.....00040420440 +...002020022040. +...02202202200.. +....042220240... +.....04440400... +.....00000040... +.....040220440.. +.....020220440.. +.....040000000.. +.....00022220... +....0000000000..` ], + [ moblin, bitmap` + .....99999...... + ...939999....... + ..9329993333.... + .332299993333... + .9999999933333.. + 33929999333333.. + 993299939993333. + 999939939993332. + .99999333999223. + .99999339999333. + ..9222229992222. + ..9933333993333. + ....333333333399 + ....3333339993.. + ..999333999999.. + ...9999..99999..`], + [ lynel, bitmap` + .....33339333... + ....3233993..... + ....92939933.... + ....999393...... + ....3999933..... + .222239999.....3 + 22222399993...33 + .222239993333333 + ....33333333333. + ....33333333333. + ...33333333333.. + ..3333333333333. + ..33333333333333 + ...333222222333. + ....3........3.. + ................`], + [ ground, bitmap` + CCC09009CC0090CC + CCCC009CCCCC0009 + CCCC009CCCCC00C0 + 9CCC009CCCCCC0C0 + 9CCC09CCCCCCC0C0 + CCCC09CCCCCCCCC0 + CCCC09CCCCC99009 + CCCC09CCCC9CCC09 + CCC009CCCC9CCCC0 + CCC009CCCC9CCCC0 + 9C00090CC09CCC00 + 9C099900C09CCC09 + C09CCCCC009CCC09 + C09CCCC0009CCC09 + C9CCCCCC000CC000 + 09C9CC9090099009`], + [ bg0, bitmap` +................ +................ +................ +................ +................ +...............0 +.............000 +............0000 +...........00000 +..........000000 +........00000000 +.......000000000 +.....00000000000 +...0000000000000 +0000000000000000 +0000000000000000`], + [ bg1, bitmap` + ...0000000000000 + ...0000000000000 + ..00000000000000 + .000000000000000 + 0000000000000000 + 0000000000000000 + 0000000000000000 + 0000000000000000 + 0000000000000000 + 0000000000000000 + 0000000000000000 + 0000000000000000 + 0000000000000000 + 0000000000000000 + 0000000000000000 + 0000000000000000`], + [ bg2, bitmap` + ................ + ................ + ................ + ...........000.. + ..........00000. + ..........000000 + ..........000000 + .........0000000 + .........0000000 + ........00000000 + .......000000000 + .......000000000 + ......0000000000 + .....00000000000 + .....00000000000 + ....000000000000`], + [ bg3, bitmap` + ................ + ................ + ................ + ................ + ................ + ................ + 0............... + 00.............. + 0000............ + 000000.......... + 00000000........ + 0000000000...... + 000000000000.... + 00000000000000.. + 0000000000000000 + 0000000000000000`], + [ bg4, bitmap` + 0000000000000000 + 0000000000000000 + 0000000000000000 + 0000000000000000 + 0000000000000000 + 0000000000000000 + 0000000000000000 + 0000000000000000 + 0000000000000000 + 0000000000000000 + 0000000000000000 + 0000000000000000 + 0000000000000000 + 0000000000000000 + 0000000000000000 + 0000000000000000`], + [ bg5, bitmap` + ................ + ................ + ................ + ................ + ................ + ................ + ................ + ................ + ................ + ................ + ................ + ................ + ................ + ...........00... + ...........00... + 00........0000..`], + [ bg6, bitmap` + 000.......00000. + 0000......000000 + 00000....0000000 + 000000...0000000 + 0000000.00000000 + 0000000000000000 + 0000000000000000 + 0000000000000000 + 0000000000000000 + 0000000000000000 + 0000000000000000 + 0000000000000000 + 0000000000000000 + 0000000000000000 + 0000000000000000 + 0000000000000000`], + [ bg7, bitmap` + ................ + ................ + ................ + .....0.......... + ....000......... + ....000......... + ....000......... + ....000......... + ....000......... + ....000......... + ....000......... + ....000......... + ....000......... + ....000.000...00 + ....000.000...00 + ....000.000...00`], + [ bg8, bitmap` + ....000.000...00 + ....000000000000 + ....000000000000 + ....000000000000 + ....000000000000 + ....000000000000 + ....000000000000 + ....000000000000 + ....000000000000 + ....000000000000 + ....000000000000 + ....000000000000 + ....000000000000 + ....000000000000 + ...0000000000000 + ...0000000000000`], + [ bg9, bitmap` + ...0000000000000 + 0000000000000000 + 0000000000000000 + 0000000000000000 + 0000000000000000 + 0000000000000000 + 0000000000000000 + 0000000000000000 + 0000000000000000 + 0000000000000000 + 0000000000000000 + 0000000000000000 + 0000000000000000 + 0000000000000000 + 0000000000000000 + 0000000000000000`], + [ bg10, bitmap` + ................ + ..............00 + ..............00 + ..............00 + ..............00 + ..............00 + ...........00000 + ...........00000 + ...........00000 + ...........00000 + ...........00000 + ...........00000 + ...........00000 + ...........00000 + .............000 + .............000`], + [ bg11, bitmap` + .............000 + ...............0 + ...............0 + ...............0 + ................ + ................ + ...0............ + ...0............ + ...0............ + ...0............ + ...0..0..0..0... + ...0..00.00.00.. + ...0..00.00.00.. + ...0000000000000 + ..00000000000000 + .000000000000000`], + [ bg12, bitmap` + 0000000000000000 + 0000000000000000 + 0000000000000000 + 0000000000000000 + 0000000000000000 + 0000000000000000 + 0000000000000000 + .000000000000000 + .000000000000000 + ..00000000000000 + ..00000000000000 + ..00000000000000 + ..00000000000000 + 0.00000000000000 + 0.00000000000000 + 0.00000000000000`], + [ bg13, bitmap` + 0.00000000000000 + 0000000000000000 + 0000000000000000 + 0000000000000000 + 0000000000000000 + 0000000000000000 + 0000000000000000 + 0000000000000000 + 0000000000000000 + 0000000000000000 + 0000000000000000 + 0000000000000000 + 0000000000000000 + 0000000000000000 + 0000000000000000 + 0000000000000000`], + [ bg14, bitmap` + ................ + ................ + ................ + ................ + ................ + ................ + ................ + ................ + ................ + ................ + ................ + ................ + ................ + .....0.......... + .....0.......... + .....0..........`], + [ bg15, bitmap` + ....000......... + ....000......... + ....000......... + ....000......... + ....000......... + ....000......... + ..0000000....... + ..0000000....... + ..0000000....... + ..0000000....... + ..0000000....... + 00000000000..... + 00000000000..... + 00000000000..... + 00000000000..... + 00000000000.....`], + [ bg16, bitmap` + 00000000000..... + 0000000000000... + 0000000000000... + 0000000000000... + 0000000000000... + 0000000000000... + 0000000000000000 + 0000000000000000 + 0000000000000000 + 0000000000000000 + 0000000000000000 + 0000000000000000 + 0000000000000000 + 0000000000000000 + 0000000000000000 + 0000000000000000`], + [ bg17, bitmap` + 00000000000000.. + 000000000000.... + 000000000000.... + 000000000000.... + .000000000...... + .000000000...... + .000000000...... + .000000000...... + .000000000...... + .000000000...0.. + .000000000..00.0 + .000000000..00.0 + .000000000000000 + 0000000000000000 + 0000000000000000 + 0000000000000000`], + [ bg18, bitmap` + ................ + ................ + ................ + ................ + ................ + ......00........ + ......00........ + ......00........ + ......00........ + 0..0..00........ + 0.00..00........ + 0.00..00........ + 00000000........ + 000000000....... + 0000000000...... + 00000000000.....`], + [ bg19, bitmap` + 00000000000..... + 00000000000..... + 00000000000..... + 00000000000..... + 00000000000..... + 00000000000..... + 0000000000...... + 0000000000...... + 000000000....... + 000000000....... + 000000000....... + 000000000....... + 000000000.000... + 000000000.000... + 000000000.000... + 000000000.000...`], + [ bg20, bitmap` + ................ + ................ + ................ + .....0.......... + ....000......... + ....000......... + ....000......... + ....000......... + ....000......... + ....000......... + ....000......... + ....000......... + 000.000......... + 000.000......... + 000.000......... + 000.000.........`], + [ bg21, bitmap` + 0000000......... + 0000000......... + 0000000......... + 0000000......... + 0000000......... + 0000000......... + 0000000......... + 0000000......... + 0000000......... + 0000000......... + 0000000......... + 0000000......... + 0000000.......0. + 00000000......0. + 00000000.....00. + 00000000....0000`], + [ bg22, bitmap` + 0.............00 + 00...........000 + 00..........0000 + 000....000000000 + 0000..0000000000 + 0000000000000000 + 0000000000000000 + 0000000000000000 + 0000000000000000 + 0000000000000000 + 0000000000000000 + 0000000000000000 + 0000000000000000 + 0000000000000000 + 0000000000000000 + 0000000000000000`], + [ bg23, bitmap` + 00.............. + 000............. + 000............. + 0000............ + 00000......00... + 000000....0000.. + 000000000000000. + 0000000000000000 + 0000000000000000 + 0000000000000000 + 0000000000000000 + 0000000000000000 + 0000000000000000 + 0000000000000000 + 0000000000000000 + 0000000000000000`], + [ bg24, bitmap` + ................ + ................ + ................ + ................ + ................ + ................ + ................ + ................ + ................ + 0............... + 00.............. + 000............. + 0000............ + 00000........... + 00000........... + 000000..........`], + [ house1, bitmap` +.55555...5...... +5555555..5...... +55555555.55..333 +5555555535553333 +7575755535555355 +..55555535555557 +..55555533553357 +...5555533353335 +...5555533355733 +...5555333555557 +...5555333555577 +...5555335555737 +...5555335555737 +....553335555773 +....553335555533 +.....53333553533`], + [ house2, bitmap` + ......5......... + ......5......... + 333..55......... + 3333555......... + 5535555......... + 755555533....... + 7533553333...... + 53375333333..... + 377753333333.... + 7555553333333... + 77555533333777.. + 7375555335557... + 737555535555.... + 3775555355555... + 3355555355555... + 3353553555555...`], + [ house3, bitmap` + ......3333333353 + ......3333333355 + ..55553333333333 + .555555333333777 + 5555555533337337 + 5555555553357337 + 5555555555357773 + 5555555555555577 + .555555555555577 + 3355555555555555 + .333555555555555 + .333335555555555 + ..33333335555555 + .377333333555555 + 3333333333.55555 + 3333333333......`], + [ house4, bitmap` +3533335555555... +5533335555555... +3333335555555... +777333555555535. +7335555555555355 +7333555555553555 +3755555555553555 +7755555555535555 +735555553335555. +5535555355555533 +555355355555333. +555533555533333. +55555553333333.. +555555.33333773. +55555.3333333333 +......3333333333`],); + } else if (gameRunning && direction == -1) { + setLegend([ player, bitmap` +................ +......000000.... +..0.0052244400.. +..0022044224440. +..0052204404440. +...005220020440. +....0004042040.. +..002020022040.. +..02202202200... +...042220240.... +....00000000.... +.....02204400... +.....022044020.. +....0000440020.. +...02222000220.. +...000000000000.` ], + [ moblin, bitmap` + ................ + .....99999...... + ...939999....... + ..9329993333.... + .332299993333... + .9999999933333.. + 33929999333333.. + 993299933993333. + 999939939993332. + .99999399993223. + .99999999933333. + 222229999222233. + ..9939993333333. + ....333999333399 + ....3999999333.. + .....299999.....`], + [ lynel, bitmap` + ................ + ....33339333.... + ...3233993...... + ..992939933..... + ...999393....... + ...3999933...... + .222239999...... + 22222399993....3 + .222239993333333 + ....333333333333 + ....33333333333. + ....3333333333.. + ....3333333333.. + .....33333333... + .....33332333... + ......333.333...`], + [ ground, bitmap` + CC0090CCCCCC009C + CCCC0009CCCC009C + CCCC00C0CCC09009 + CCCCC0C09CCC009C + CCCCC0C09CCC09CC + CCCCCCC0CCCC09CC + CCC99009CCCC09CC + CC9CCC09CCCC09CC + CC9CCCC0CCC009CC + CC9CCCC0CCC009CC + C09CCC009C00090C + C09CCC099C099900 + 009CCC09C09CCCCC + 009CCC09C09CCCC0 + 000CC000C9CCCCCC + 9009900909C9CC90`], + [ bg0, bitmap` +................ +................ +................ +................ +................ +...............0 +.............000 +............0000 +...........00000 +..........000000 +........00000000 +.......000000000 +.....00000000000 +...0000000000000 +0000000000000000 +0000000000000000`], + [ bg1, bitmap` + ...0000000000000 + ...0000000000000 + ..00000000000000 + .000000000000000 + 0000000000000000 + 0000000000000000 + 0000000000000000 + 0000000000000000 + 0000000000000000 + 0000000000000000 + 0000000000000000 + 0000000000000000 + 0000000000000000 + 0000000000000000 + 0000000000000000 + 0000000000000000`], + [ bg2, bitmap` + ................ + ................ + ................ + ...........000.. + ..........00000. + ..........000000 + ..........000000 + .........0000000 + .........0000000 + ........00000000 + .......000000000 + .......000000000 + ......0000000000 + .....00000000000 + .....00000000000 + ....000000000000`], + [ bg3, bitmap` + ................ + ................ + ................ + ................ + ................ + ................ + 0............... + 00.............. + 0000............ + 000000.......... + 00000000........ + 0000000000...... + 000000000000.... + 00000000000000.. + 0000000000000000 + 0000000000000000`], + [ bg4, bitmap` + 0000000000000000 + 0000000000000000 + 0000000000000000 + 0000000000000000 + 0000000000000000 + 0000000000000000 + 0000000000000000 + 0000000000000000 + 0000000000000000 + 0000000000000000 + 0000000000000000 + 0000000000000000 + 0000000000000000 + 0000000000000000 + 0000000000000000 + 0000000000000000`], + [ bg5, bitmap` + ................ + ................ + ................ + ................ + ................ + ................ + ................ + ................ + ................ + ................ + ................ + ................ + ................ + ...........00... + ...........00... + 00........0000..`], + [ bg6, bitmap` + 000.......00000. + 0000......000000 + 00000....0000000 + 000000...0000000 + 0000000.00000000 + 0000000000000000 + 0000000000000000 + 0000000000000000 + 0000000000000000 + 0000000000000000 + 0000000000000000 + 0000000000000000 + 0000000000000000 + 0000000000000000 + 0000000000000000 + 0000000000000000`], + [ bg7, bitmap` + ................ + ................ + ................ + .....0.......... + ....000......... + ....000......... + ....000......... + ....000......... + ....000......... + ....000......... + ....000......... + ....000......... + ....000......... + ....000.000...00 + ....000.000...00 + ....000.000...00`], + [ bg8, bitmap` + ....000.000...00 + ....000000000000 + ....000000000000 + ....000000000000 + ....000000000000 + ....000000000000 + ....000000000000 + ....000000000000 + ....000000000000 + ....000000000000 + ....000000000000 + ....000000000000 + ....000000000000 + ....000000000000 + ...0000000000000 + ...0000000000000`], + [ bg9, bitmap` + ...0000000000000 + 0000000000000000 + 0000000000000000 + 0000000000000000 + 0000000000000000 + 0000000000000000 + 0000000000000000 + 0000000000000000 + 0000000000000000 + 0000000000000000 + 0000000000000000 + 0000000000000000 + 0000000000000000 + 0000000000000000 + 0000000000000000 + 0000000000000000`], + [ bg10, bitmap` + ................ + ..............00 + ..............00 + ..............00 + ..............00 + ..............00 + ...........00000 + ...........00000 + ...........00000 + ...........00000 + ...........00000 + ...........00000 + ...........00000 + ...........00000 + .............000 + .............000`], + [ bg11, bitmap` + .............000 + ...............0 + ...............0 + ...............0 + ................ + ................ + ...0............ + ...0............ + ...0............ + ...0............ + ...0..0..0..0... + ...0..00.00.00.. + ...0..00.00.00.. + ...0000000000000 + ..00000000000000 + .000000000000000`], + [ bg12, bitmap` + 0000000000000000 + 0000000000000000 + 0000000000000000 + 0000000000000000 + 0000000000000000 + 0000000000000000 + 0000000000000000 + .000000000000000 + .000000000000000 + ..00000000000000 + ..00000000000000 + ..00000000000000 + ..00000000000000 + 0.00000000000000 + 0.00000000000000 + 0.00000000000000`], + [ bg13, bitmap` + 0.00000000000000 + 0000000000000000 + 0000000000000000 + 0000000000000000 + 0000000000000000 + 0000000000000000 + 0000000000000000 + 0000000000000000 + 0000000000000000 + 0000000000000000 + 0000000000000000 + 0000000000000000 + 0000000000000000 + 0000000000000000 + 0000000000000000 + 0000000000000000`], + [ bg14, bitmap` + ................ + ................ + ................ + ................ + ................ + ................ + ................ + ................ + ................ + ................ + ................ + ................ + ................ + .....0.......... + .....0.......... + .....0..........`], + [ bg15, bitmap` + ....000......... + ....000......... + ....000......... + ....000......... + ....000......... + ....000......... + ..0000000....... + ..0000000....... + ..0000000....... + ..0000000....... + ..0000000....... + 00000000000..... + 00000000000..... + 00000000000..... + 00000000000..... + 00000000000.....`], + [ bg16, bitmap` + 00000000000..... + 0000000000000... + 0000000000000... + 0000000000000... + 0000000000000... + 0000000000000... + 0000000000000000 + 0000000000000000 + 0000000000000000 + 0000000000000000 + 0000000000000000 + 0000000000000000 + 0000000000000000 + 0000000000000000 + 0000000000000000 + 0000000000000000`], + [ bg17, bitmap` + 00000000000000.. + 000000000000.... + 000000000000.... + 000000000000.... + .000000000...... + .000000000...... + .000000000...... + .000000000...... + .000000000...... + .000000000...0.. + .000000000..00.0 + .000000000..00.0 + .000000000000000 + 0000000000000000 + 0000000000000000 + 0000000000000000`], + [ bg18, bitmap` + ................ + ................ + ................ + ................ + ................ + ......00........ + ......00........ + ......00........ + ......00........ + 0..0..00........ + 0.00..00........ + 0.00..00........ + 00000000........ + 000000000....... + 0000000000...... + 00000000000.....`], + [ bg19, bitmap` + 00000000000..... + 00000000000..... + 00000000000..... + 00000000000..... + 00000000000..... + 00000000000..... + 0000000000...... + 0000000000...... + 000000000....... + 000000000....... + 000000000....... + 000000000....... + 000000000.000... + 000000000.000... + 000000000.000... + 000000000.000...`], + [ bg20, bitmap` + ................ + ................ + ................ + .....0.......... + ....000......... + ....000......... + ....000......... + ....000......... + ....000......... + ....000......... + ....000......... + ....000......... + 000.000......... + 000.000......... + 000.000......... + 000.000.........`], + [ bg21, bitmap` + 0000000......... + 0000000......... + 0000000......... + 0000000......... + 0000000......... + 0000000......... + 0000000......... + 0000000......... + 0000000......... + 0000000......... + 0000000......... + 0000000......... + 0000000.......0. + 00000000......0. + 00000000.....00. + 00000000....0000`], + [ bg22, bitmap` + 0.............00 + 00...........000 + 00..........0000 + 000....000000000 + 0000..0000000000 + 0000000000000000 + 0000000000000000 + 0000000000000000 + 0000000000000000 + 0000000000000000 + 0000000000000000 + 0000000000000000 + 0000000000000000 + 0000000000000000 + 0000000000000000 + 0000000000000000`], + [ bg23, bitmap` + 00.............. + 000............. + 000............. + 0000............ + 00000......00... + 000000....0000.. + 000000000000000. + 0000000000000000 + 0000000000000000 + 0000000000000000 + 0000000000000000 + 0000000000000000 + 0000000000000000 + 0000000000000000 + 0000000000000000 + 0000000000000000`], + [ bg24, bitmap` + ................ + ................ + ................ + ................ + ................ + ................ + ................ + ................ + ................ + 0............... + 00.............. + 000............. + 0000............ + 00000........... + 00000........... + 000000..........`], + [ house2, bitmap` +......5...55555. +......5..5555555 +333..55.55555555 +3333555355555555 +5535555355575757 +75555553555555.. +75335533555555.. +5333533355555... +3375533355555... +7555553335555... +7755553335555... +7375555335555... +7375555335555... +377555533355.... +335555533355.... +33535533335.....`], + [ house1, bitmap` +.........5...... +.........5...... +.........55..333 +.........5553333 +.........5555355 +.......335555557 +......3333553357 +.....33333357335 +....333333357773 +...3333333555557 +..77733333555577 +...7555335555737 +....555535555737 +...5555535555773 +...5555535555533 +...5555553553533`], + [ house4, bitmap` +3533333333...... +5533333333...... +33333333335555.. +777333333555555. +7337333355555555 +7337533555555555 +3777535555555555 +7755555555555555 +775555555555555. +5555555555555533 +555555555555333. +555555555533333. +55555553333333.. +555555333333773. +55555.3333333333 +......3333333333`], + [ house3, bitmap` +...5555555333353 +...5555555333355 +...5555555333333 +.535555555333777 +5535555555555337 +5553555555553337 +5553555555555573 +5555355555555577 +.555533355555537 +3355555535555355 +.333555553553555 +.333335555335555 +..33333335555555 +.37733333.555555 +3333333333.55555 +3333333333......`],); + } + animCount++ + multiplier *= 1.005; + + setTimeout(endGame, (500/(speed*multiplier))); +} playMusic(); From 3799c4ef39fc453936c83d61f51d1f8ce5f9b850 Mon Sep 17 00:00:00 2001 From: Lucas <88567622+LucasHT22@users.noreply.github.com> Date: Fri, 1 Sep 2023 18:13:17 -0300 Subject: [PATCH 10/17] Sprikipedia, The Sprig wiki and encyclopedia - Under development (2) (#1129) * update * let's not lost this part * fix links * create layout * add categories/sections * fixes * update hardware * update * more updates * update layouts again * update * fix * first draft Sprig course and tutorials * changes changes * first changes in translations system * a little update * some updates * updates * changes asked by graham * night updates * no links * Delete .gitpod.yml * Update PT.json * Update index.astro * Update EN.json Test * update --------- Co-authored-by: graham --- public/translations/EN.json | 50 ++++++++++++++++ public/translations/PT.json | 50 ++++++++++++++++ src/components/spriki-components/Dark.astro | 20 +++++++ src/components/spriki-components/Docs.astro | 26 ++++++++ src/components/spriki-components/Lang.astro | 21 +++++++ .../spriki-components/Navspriki.astro | 18 ++++++ src/layouts/categories.astro | 23 ++++++++ src/layouts/docs.astro | 22 +++++++ src/pages/sprikipedia/about/index.astro | 34 +++++++++++ src/pages/sprikipedia/brand/index.astro | 0 src/pages/sprikipedia/firmware/index.astro | 22 +++++++ .../sprikipedia/getting-started/index.astro | 0 src/pages/sprikipedia/global.css | 58 ++++++++++++++++++ src/pages/sprikipedia/hardware/index.astro | 22 +++++++ src/pages/sprikipedia/index.astro | 59 +++++++++++++++++++ src/pages/sprikipedia/team/index.astro | 17 ++++++ .../translations/translations.json | 3 + .../tutorials/github/edit-a-comment.md | 0 .../tutorials/github/make-a-comment.md | 0 .../sprikipedia/tutorials/github/make-a-pr.md | 0 .../tutorials/github/update-a-pr.md | 0 src/pages/sprikipedia/tutorials/index.astro | 4 ++ 22 files changed, 449 insertions(+) create mode 100644 public/translations/EN.json create mode 100644 public/translations/PT.json create mode 100644 src/components/spriki-components/Dark.astro create mode 100644 src/components/spriki-components/Docs.astro create mode 100644 src/components/spriki-components/Lang.astro create mode 100644 src/components/spriki-components/Navspriki.astro create mode 100644 src/layouts/categories.astro create mode 100644 src/layouts/docs.astro create mode 100644 src/pages/sprikipedia/about/index.astro create mode 100644 src/pages/sprikipedia/brand/index.astro create mode 100644 src/pages/sprikipedia/firmware/index.astro create mode 100644 src/pages/sprikipedia/getting-started/index.astro create mode 100644 src/pages/sprikipedia/global.css create mode 100644 src/pages/sprikipedia/hardware/index.astro create mode 100644 src/pages/sprikipedia/index.astro create mode 100644 src/pages/sprikipedia/team/index.astro create mode 100644 src/pages/sprikipedia/translations/translations.json create mode 100644 src/pages/sprikipedia/tutorials/github/edit-a-comment.md create mode 100644 src/pages/sprikipedia/tutorials/github/make-a-comment.md create mode 100644 src/pages/sprikipedia/tutorials/github/make-a-pr.md create mode 100644 src/pages/sprikipedia/tutorials/github/update-a-pr.md create mode 100644 src/pages/sprikipedia/tutorials/index.astro diff --git a/public/translations/EN.json b/public/translations/EN.json new file mode 100644 index 0000000000..5842dd7a07 --- /dev/null +++ b/public/translations/EN.json @@ -0,0 +1,50 @@ +{ + "home.head.title": "Sprikipedia, the Sprig encyclopedia", + "home.welcome.welcome": "Welcome to Sprikipedia,", + "home.welcome.description": "the Sprig encyclopedia that anyone can edit.", + "home.docs.start.name": "Start with Sprig!", + "home.docs.start.description": "Starting with Sprig? Here is the perfect place", + "home.docs.tutorials.name": "Tutorials", + "home.docs.tutorials.description": "Step-by-step to make things for your game", + "home.docs.firmware.name": "Firmware", + "home.docs.firmware.description": "Links to Spade, Trowel, Spryg...", + "home.docs.hardware.name": "Hardware", + "home.docs.hardware.description": "Link to our PCB, components...", + "home.docs.team.name": "Team", + "home.docs.team.description": "Who make Sprig possible", + "home.docs.about.name": "About Sprikipedia", + "home.docs.about.description": "The history, purpose, everthing", + "home.docs.brand.name": "Brand", + "home.docs.brand.description": "All branding material for download", + "home.dark.info": "Come to the dark side!", + "about.head.title": "About Sprikipedia - Sprikipedia", + "about.content.title": "About Sprikipedia", + "about.blockquote.quote": "Imagine a world in which every single person on the planet is given free access to the sum of all Sprig knowledge. That's what we're doing.", + "about.blockquote.citation": "Lucas, rephrasing Jimmy Wales quote from Wikipedia's about page", + "about.content.p1": "Sprikipedia is a encyclopedia.", + "about.content.p2": "Sprikipedia's purpose is to benefit readers by containing information on all branches of Sprig, Written collaboratively by members of the Hack Club Community Since its creation, as a wiki page in our GitHub repository, on March 13, 2023 by Graham, it has grown to cover all things Sprig.", + "about.content.p3": "Any Hack Clubber can edit Sprikipedia's text, references, and images. Simply doing a PR for our repository on GitHub.", + "about.content.p4": "Sprikipedia is inspired in Wikipedia, a huge thanks to them.", + "firmware.categories.name": "Firmware - Sprikipedia, the Sprig encyclopedia", + "firmware.categories.title": "Firmware", + "firmware.categories.whats": "Software that controls basic hardware functions", + "firmware.categories.about": "A bunch of useful links relating to official and hacktastic Sprig firmware.", + "firmware.spade.description": " (official firmware)", + "firmware.trowel.description": " (Rust)", + "firmware.spryg.description": " (MicroPython)", + "firmware.circuitpython.description": " (CircuitPython)", + "firmware.hp-trolling.description": " (Hacking tool vs HP-based printers)", + "hardware.categories.name": "Hardware - Sprikipedia, the Sprig encyclopedia", + "hardware.categories.title": "Hardware", + "hardware.categories.whats": "Hardware includes the physical parts.", + "hardware.categories.about": "Links to Hardware", + "hardware.kicad.description": "Kicad files", + "hardware.bom.description": "BOM", + "hardware.ordering.description": "PCB order details", + "hardware.schematic.description": "Schematic", + "hardware.back-covers.description": "Back covers", + "team.categories.name": "Team - Sprikipedia, the Sprig encyclopedia", + "team.categories.title": "Team", + "team.categories.whats": "Our staff.", + "team.categories.about": "Who make Sprig possible." +} diff --git a/public/translations/PT.json b/public/translations/PT.json new file mode 100644 index 0000000000..16980889d5 --- /dev/null +++ b/public/translations/PT.json @@ -0,0 +1,50 @@ +{ + "home.head.title": "Sprikipedia, a enciclopédia Sprig", + "home.welcome.welcome": "", + "home.welcome.description": "", + "home.docs.start.name": "", + "home.docs.start.description": "", + "home.docs.tutorials.name": "", + "home.docs.tutorials.description": "", + "home.docs.firmware.name": "", + "home.docs.firmware.description": "", + "home.docs.hardware.name": "", + "home.docs.hardware.description": "", + "home.docs.team.name": "", + "home.docs.team.description": "", + "home.docs.about.name": "", + "home.docs.about.description": "", + "home.docs.brand.name": "", + "home.docs.brand.description": "", + "home.dark.info": "", + "about.head.title": "", + "about.content.title": "", + "about.blockquote.quote": "", + "about.blockquote.citation": "", + "about.content.p1": "", + "about.content.p2": "", + "about.content.p3": "", + "about.content.p4": "", + "firmware.categories.name": "", + "firmware.categories.title": "", + "firmware.categories.whats": "", + "firmware.categories.about": "", + "firmware.spade.description": "", + "firmware.trowel.description": "", + "firmware.spryg.description": "", + "firmware.circuitpython.description": "", + "firmware.hp-trolling.description": "", + "hardware.categories.name": "", + "hardware.categories.title": "", + "hardware.categories.whats": "", + "hardware.categories.about": "", + "hardware.kicad.description": "", + "hardware.bom.description": "", + "hardware.ordering.description": "", + "hardware.schematic.description": "", + "hardware.back-covers.description": "", + "team.categories.name": "", + "team.categories.title": "", + "team.categories.whats": "", + "team.categories.about": "" +} diff --git a/src/components/spriki-components/Dark.astro b/src/components/spriki-components/Dark.astro new file mode 100644 index 0000000000..a930753361 --- /dev/null +++ b/src/components/spriki-components/Dark.astro @@ -0,0 +1,20 @@ +--- +const { info, links } = Astro.props; +--- + + + + + \ No newline at end of file diff --git a/src/components/spriki-components/Docs.astro b/src/components/spriki-components/Docs.astro new file mode 100644 index 0000000000..155eda6fa1 --- /dev/null +++ b/src/components/spriki-components/Docs.astro @@ -0,0 +1,26 @@ +--- +const { name, description, links } = Astro.props; +--- + + + + + \ No newline at end of file diff --git a/src/components/spriki-components/Lang.astro b/src/components/spriki-components/Lang.astro new file mode 100644 index 0000000000..98a2a4e2ce --- /dev/null +++ b/src/components/spriki-components/Lang.astro @@ -0,0 +1,21 @@ +--- +const { name, description, links } = Astro.props; +--- + + + + + \ No newline at end of file diff --git a/src/components/spriki-components/Navspriki.astro b/src/components/spriki-components/Navspriki.astro new file mode 100644 index 0000000000..a74035349a --- /dev/null +++ b/src/components/spriki-components/Navspriki.astro @@ -0,0 +1,18 @@ + + + \ No newline at end of file diff --git a/src/layouts/categories.astro b/src/layouts/categories.astro new file mode 100644 index 0000000000..6ca1f62d1f --- /dev/null +++ b/src/layouts/categories.astro @@ -0,0 +1,23 @@ +--- +import '../global.css' +import Navspriki from '../components/spriki-components/Navspriki.astro' +import StandardHead from '../components/standard-head.astro' +const { name, title, about, whats } = Astro.props +--- + + + + + + +
+

{title}

+
+

What is {title}?

+

{whats}

+
+

{about}

+ +
+ + \ No newline at end of file diff --git a/src/layouts/docs.astro b/src/layouts/docs.astro new file mode 100644 index 0000000000..38542ea8d7 --- /dev/null +++ b/src/layouts/docs.astro @@ -0,0 +1,22 @@ +--- +import '../global.css' +import StandardHead from '../components/standard-head.astro' +import Navspriki from '../components/spriki-components/Navspriki.astro' +const { frontmatter } = Astro.props +--- + + + + + + + +
+

{frontmatter.title}

+

by {frontmatter.author}

+
+ +
+
+ + \ No newline at end of file diff --git a/src/pages/sprikipedia/about/index.astro b/src/pages/sprikipedia/about/index.astro new file mode 100644 index 0000000000..df31d5b07b --- /dev/null +++ b/src/pages/sprikipedia/about/index.astro @@ -0,0 +1,34 @@ +--- +import '../../../global.css' +import Navspriki from '../../../components/spriki-components/Navspriki.astro' +import Translations from '../../../pages/sprikipedia/translations/translations.json' + +const response = await fetch( + `https://${Astro.url.host}/translations/${ + Astro.url.searchParams.get("lang") || Translations[0] + }.json` +); +console.log(response); +const data = await response.json(); +--- + + + {data["about.head.title"]} + + + +
+

{data["about.content.title"]}

+
+
+

"{data["about.blockquote.quote"]}"

+

- {data["about.blockquote.citation"]}

+
+

Sprikipedia is a encyclopedia.

+

{data["about.content.p4"]}

+

{data["about.content.p3"]}

+

{data["about.content.p4"]}

+
+ + + diff --git a/src/pages/sprikipedia/brand/index.astro b/src/pages/sprikipedia/brand/index.astro new file mode 100644 index 0000000000..e69de29bb2 diff --git a/src/pages/sprikipedia/firmware/index.astro b/src/pages/sprikipedia/firmware/index.astro new file mode 100644 index 0000000000..7fb0ad185c --- /dev/null +++ b/src/pages/sprikipedia/firmware/index.astro @@ -0,0 +1,22 @@ +--- +import '../../../global.css' +import Categories from '../../../layouts/categories.astro' +import Translations from '../../../pages/sprikipedia/translations/translations.json' + +const response = await fetch( + `https://${Astro.url.host}/translations/${ + Astro.url.searchParams.get("lang") || Translations[0] + }.json` +); +console.log(response); +const data = await response.json(); +--- + +
    +
  • Spade{data["firmware.spade.description"]}
  • +
  • Trowel{data["firmware.trowel.description"]}
  • +
  • Spryg{data["firmware.spryg.description"]}
  • +
  • CircuitPython{data["firmware.circuitpython.description"]}
  • +
  • hp-trolling{data["firmware.hp-trolling.description"]}
  • +
+
\ No newline at end of file diff --git a/src/pages/sprikipedia/getting-started/index.astro b/src/pages/sprikipedia/getting-started/index.astro new file mode 100644 index 0000000000..e69de29bb2 diff --git a/src/pages/sprikipedia/global.css b/src/pages/sprikipedia/global.css new file mode 100644 index 0000000000..a88ae56e44 --- /dev/null +++ b/src/pages/sprikipedia/global.css @@ -0,0 +1,58 @@ +*, *::before, *::after { box-sizing: inherit; } +html, body { height: 100%; } +html { box-sizing: border-box; overflow: hidden; } +body { overflow: auto; } + +body { + font-family: var(--font-text); + margin: 0; + background: var(--bg-base); + position: relative; +} + +a { + color: var(--accent); + text-decoration: none; +} + +a:hover { + color: var(--accent-dark); +} + +.docs-preview { + display: flex; + justify-content: center; + align-items: center; + flex-wrap: wrap; +} + +.logo { + display: block; + margin-left: auto; + margin-right: auto; + width: 50%; + min-width: 150px; +} + +.logos { + display: block; + width: 250px; +} + +.main-spriki { + display: block; + margin-left: 10%; + margin-right: 10%; +} + +.home-spriki { + display: flex; + align-items: center; + justify-content: center; + margin-right: 10%; + margin-left: 10%; +} + +.title-lang { + text-align: center; +} \ No newline at end of file diff --git a/src/pages/sprikipedia/hardware/index.astro b/src/pages/sprikipedia/hardware/index.astro new file mode 100644 index 0000000000..e37c39b79b --- /dev/null +++ b/src/pages/sprikipedia/hardware/index.astro @@ -0,0 +1,22 @@ +--- +import '../../../global.css' +import Categories from '../../../layouts/categories.astro' +import Translations from '../../../pages/sprikipedia/translations/translations.json' + +const response = await fetch( + `https://${Astro.url.host}/translations/${ + Astro.url.searchParams.get("lang") || Translations[0] + }.json` +); +console.log(response); +const data = await response.json(); +--- + + + \ No newline at end of file diff --git a/src/pages/sprikipedia/index.astro b/src/pages/sprikipedia/index.astro new file mode 100644 index 0000000000..31865eb4d6 --- /dev/null +++ b/src/pages/sprikipedia/index.astro @@ -0,0 +1,59 @@ +--- +import '../../pages/sprikipedia/global.css' +import Docs from '../../components/spriki-components/Docs.astro' +import Dark from '../../components/spriki-components/Dark.astro' +import StandardHead from '../../components/standard-head.astro' +import Translations from '../../pages/sprikipedia/translations/translations.json' + +const response = await fetch( + `https://${Astro.url.host}/translations/${ + Astro.url.searchParams.get("lang") || Translations[0] + }.json` +); +console.log(response); +const data = await response.json(); +--- + + + + + +
+

{data["home.welcome.welcome"]}

+

{data["home.welcome.description"]}

+
+
+ + + + + + + +
+
+ +
+ + \ No newline at end of file diff --git a/src/pages/sprikipedia/team/index.astro b/src/pages/sprikipedia/team/index.astro new file mode 100644 index 0000000000..4976d87b4a --- /dev/null +++ b/src/pages/sprikipedia/team/index.astro @@ -0,0 +1,17 @@ +--- +import '../../../global.css' +import Categories from '../../../layouts/categories.astro' +import Translations from '../../../pages/sprikipedia/translations/translations.json' + +const response = await fetch( + `https://${Astro.url.host}/translations/${ + Astro.url.searchParams.get("lang") || Translations[0] + }.json` +); +console.log(response); +const data = await response.json(); +--- + + +

TBD

+
\ No newline at end of file diff --git a/src/pages/sprikipedia/translations/translations.json b/src/pages/sprikipedia/translations/translations.json new file mode 100644 index 0000000000..0cf203b634 --- /dev/null +++ b/src/pages/sprikipedia/translations/translations.json @@ -0,0 +1,3 @@ +[ + "EN", "PT" +] \ No newline at end of file diff --git a/src/pages/sprikipedia/tutorials/github/edit-a-comment.md b/src/pages/sprikipedia/tutorials/github/edit-a-comment.md new file mode 100644 index 0000000000..e69de29bb2 diff --git a/src/pages/sprikipedia/tutorials/github/make-a-comment.md b/src/pages/sprikipedia/tutorials/github/make-a-comment.md new file mode 100644 index 0000000000..e69de29bb2 diff --git a/src/pages/sprikipedia/tutorials/github/make-a-pr.md b/src/pages/sprikipedia/tutorials/github/make-a-pr.md new file mode 100644 index 0000000000..e69de29bb2 diff --git a/src/pages/sprikipedia/tutorials/github/update-a-pr.md b/src/pages/sprikipedia/tutorials/github/update-a-pr.md new file mode 100644 index 0000000000..e69de29bb2 diff --git a/src/pages/sprikipedia/tutorials/index.astro b/src/pages/sprikipedia/tutorials/index.astro new file mode 100644 index 0000000000..e508c0050c --- /dev/null +++ b/src/pages/sprikipedia/tutorials/index.astro @@ -0,0 +1,4 @@ +--- +import Categories from '../../../layouts/categories.astro' +--- + \ No newline at end of file From 51ecf9a4289dcf55e63a9dace19f43509569973b Mon Sep 17 00:00:00 2001 From: Lucas <88567622+LucasHT22@users.noreply.github.com> Date: Sat, 2 Sep 2023 17:57:47 -0300 Subject: [PATCH 11/17] fix 404 with burger-build --- games/metadata.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/games/metadata.json b/games/metadata.json index 03dd15fea6..03a26e77c7 100644 --- a/games/metadata.json +++ b/games/metadata.json @@ -2872,7 +2872,7 @@ "added on": "2023-08-18" }, { - "filename": "burger-build", + "filename": "burger_build", "title": "burger-build", "author": "Emily Yee", "img": "", From 4ca53bf15f97b32215744b82c3ad217103df9a55 Mon Sep 17 00:00:00 2001 From: Jakob__init__ Date: Sat, 2 Sep 2023 23:56:27 +0200 Subject: [PATCH 12/17] FOOD-CATCH (#1130) * Add files via upload * Add files via upload * Add files via upload * Delete FOOT CAHTCH.js * Rename FOOT CATCH.js to FOOT-CATCH.js * Add files via upload * Rename FOOT-CATCH.js to FOOD-CATCH.js * Add files via upload * Add files via upload --------- Co-authored-by: Lucas <88567622+LucasHT22@users.noreply.github.com> --- games/FOOD-CATCH.js | 144 +++++++++++++++++++++++++++++++++++++++ games/img/FOOD-CATCH.PNG | Bin 0 -> 36663 bytes games/img/FOOT CATCH.PNG | Bin 0 -> 36663 bytes games/img/FOOT-CATCH.PNG | Bin 0 -> 36663 bytes 4 files changed, 144 insertions(+) create mode 100644 games/FOOD-CATCH.js create mode 100644 games/img/FOOD-CATCH.PNG create mode 100644 games/img/FOOT CATCH.PNG create mode 100644 games/img/FOOT-CATCH.PNG diff --git a/games/FOOD-CATCH.js b/games/FOOD-CATCH.js new file mode 100644 index 0000000000..0749f8b220 --- /dev/null +++ b/games/FOOD-CATCH.js @@ -0,0 +1,144 @@ +const player = "p"; +const obstacle = "o"; +let score = 0; +let floorfoodhit = 0; + +setLegend( + [obstacle, bitmap` +.......C.DDD.... +.......CDD4D.... +.......CD4D..... +.....333333..... +....33333333.... +...3333333333... +...3333333333... +...3333333333... +...3333333333... +...3333333333... +...3333333333... +....33333333.... +.....333333..... +................ +................ +................`], + [player, bitmap` +................ +................ +................ +.....00000...... +....0.....0..... +....0.0.0.0..... +....0.....0..... +....0.000.0..... +....0.....0..... +.....00000...... +.......0........ +.....00000...... +.......0........ +.......0........ +......0.0....... +.....0...0......`] +) + +setMap(map` +.......... +.......... +.......... +.......... +.......... +.......... +.......... +....p.....`) + +var gameRunning = true; + +onInput("a", () => { + if (gameRunning) { + getFirst(player).x -= 1; + } +}); + +onInput("d", () => { + if (gameRunning) { + getFirst(player).x += 1; + } +}); + +function spawnObstacle() { + let x = Math.floor(Math.random() * 8); + let y = 0; + addSprite(x, y, obstacle); +} + +function moveObstacles() { + let obstacles = getAll(obstacle); + + for (let i = 0; i < obstacles.length; i++) { + obstacles[i].y += 1; + } +} + +function despawnObstacles() { + let obstacles = getAll(obstacle); + + for (let i = 0; i < obstacles.length; i++) { + if (obstacles[i].y == 7) { + obstacles[i].remove(); + floorfoodhit ++; + } + } +} + +function checkHit() { + let obstacles = getAll(obstacle); + let p = getFirst(player); + + for (let i = 0; i < obstacles.length; i++) { + if (obstacles[i].x == p.x && obstacles[i].y == p.y) { + obstacles[i].remove(); + return true; + } + } + + return false; +} + +function gameover(){ + let obstacles = getAll(obstacle); + for (let i = 0; i < obstacles.length; i++) { + obstacles[i].remove(); + } + addText("Game Over!", { + x: 5, + y: 6, + color: color`3` + }); + clearInterval(gameLoop); + gameRunning = false; +} + +var gameLoop = setInterval(() => { + despawnObstacles(); + moveObstacles(); + spawnObstacle(); + let scortext = addText("Score:" + score, { + x: 1, + y: 1, + color: color`3` + }); + + let hittext = addText("Misses:" + floorfoodhit, { + x: 11, + y: 1, + color: color`0` + }); + + + if (checkHit()) { + score ++; + } + if (floorfoodhit == 3){ + gameover(); + } + +}, 1000); \ No newline at end of file diff --git a/games/img/FOOD-CATCH.PNG b/games/img/FOOD-CATCH.PNG new file mode 100644 index 0000000000000000000000000000000000000000..eb5f4daa92a5a1f36042e1f7cf034a3332307e30 GIT binary patch literal 36663 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 Date: Sat, 2 Sep 2023 18:57:42 -0300 Subject: [PATCH 13/17] Delete games/img/FOOT CATCH.PNG --- games/img/FOOT CATCH.PNG | Bin 36663 -> 0 bytes 1 file changed, 0 insertions(+), 0 deletions(-) delete mode 100644 games/img/FOOT CATCH.PNG diff --git a/games/img/FOOT CATCH.PNG b/games/img/FOOT CATCH.PNG deleted file mode 100644 index eb5f4daa92a5a1f36042e1f7cf034a3332307e30..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 36663 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 Date: Sat, 2 Sep 2023 18:58:10 -0300 Subject: [PATCH 14/17] Delete games/img/FOOT-CATCH.PNG --- games/img/FOOT-CATCH.PNG | Bin 36663 -> 0 bytes 1 file changed, 0 insertions(+), 0 deletions(-) delete mode 100644 games/img/FOOT-CATCH.PNG diff --git a/games/img/FOOT-CATCH.PNG b/games/img/FOOT-CATCH.PNG deleted file mode 100644 index eb5f4daa92a5a1f36042e1f7cf034a3332307e30..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 36663 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 Date: Sat, 2 Sep 2023 19:00:27 -0300 Subject: [PATCH 15/17] add #1130 --- games/metadata.json | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/games/metadata.json b/games/metadata.json index 03a26e77c7..e0171bc081 100644 --- a/games/metadata.json +++ b/games/metadata.json @@ -2918,5 +2918,13 @@ "img": "", "tags": ["dungeon"], "added on": "2023-08-31" + }, + { + "filename": "FOOD-CATCH", + "title": "FOOD-CATCH", + "author": "Jakob", + "img": "", + "tags": ["catch"], + "added on": "2023-09-02" } ] From b9383600fd80877fdd194d30532b1133129bc934 Mon Sep 17 00:00:00 2001 From: oasx <126536553+Oasx@users.noreply.github.com> Date: Thu, 7 Sep 2023 09:26:20 -0700 Subject: [PATCH 16/17] Add files via upload (#1132) * Add files via upload * Rename games/plump_weepinbell.js to mailman.js * Rename mailman.js to games/mailman.js --- games/mailman.js | 357 +++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 357 insertions(+) create mode 100644 games/mailman.js diff --git a/games/mailman.js b/games/mailman.js new file mode 100644 index 0000000000..09603a8fba --- /dev/null +++ b/games/mailman.js @@ -0,0 +1,357 @@ +let badtime = 0; // Initialize badtime +let eviltime = 0; +const tunee = tune` +500: G4~500 + E5^500, +500: A4~500 + F4^500, +500: G4~500, +500: A4~500, +500: B4~500, +500: A4~500 + D4^500 + E5^500, +500: D4^500, +500: A4~500, +500: B4~500 + E5^500 + G4~500, +500: A4~500, +500: C5~500 + E4^500, +500: A4~500, +500: G4~500, +500: B4~500, +500: A4~500 + E5^500, +500, +500: G4^500 + D4^500 + C4^500, +500: C5~500, +500, +500: G4^500 + E5^500, +500, +500: A4~500, +500: C5~500 + E4^500, +500, +500: B4^500 + G4^500, +500, +500: G4^500 + C5^500 + D5^500, +500: E4^500, +500: D5^500, +500: E5^500, +500: F4^500 + A4^500, +500`; +playTune(tunee); +const player = "p"; +const box = "b"; +const goal = "g"; +const wall = "w"; +const BADBOX = "r"; +const EVILBOX = "o"; + +const damage = 1; +setLegend( + [ player, bitmap` +................ +................ +................ +................ +......7777...... +......7771...... +......7772...... +......777777.... +......0...0..... +......0...0..... +.......000...... +........0....... +.......000...... +........0....... +.......0.0...... +................`], + [ box, bitmap` +................ +................ +................ +...CCCCCCCCCCC.. +...C...CC....CLL +...C...CC....CC. +...C...CC....CC. +...CCC.CC....CC. +...CCCCCCCCCCCC. +...C...CC....C.. +...C....C....C.. +...C....C....C.. +...C....C....C.. +...CCCCCCCCCCC.. +................ +................`], + [BADBOX, bitmap` +................ +....33333333.... +...3........3... +...3........3... +...3........3... +...333......3... +...333......3... +...3........3... +...3........3... +...3........3... +....33333333.... +................ +................ +................ +................ +................`], + [EVILBOX, bitmap` +................ +....HHHHHHHH.... +...H........H... +...H........H... +...H........H... +...HHH......H... +...HHH......H... +...H........H... +...H........H... +...H........H... +....HHHHHHHH.... +................ +................ +................ +................ +................`], + [ goal, bitmap` +...............3 +...............3 +...............3 +...............3 +...............3 +...............3 +.LLLLLLLLLLLLLL3 +L...0....0....03 +L..010..010..013 +L...0....0....03 +.LLLLLLLLLLLLLL3 +...............3 +...............3 +...............3 +...............3 +...............3`], + [ wall, bitmap` +0000000000000000 +0000000000000000 +0000000000000000 +0000000000000000 +0000000000000000 +0000000000000000 +0000000000000000 +0000000000000000 +0000000000000000 +0000000000000000 +0000000000000000 +0000000000000000 +0000000000000000 +0000000000000000 +0000000000000000 +0000000000000000`] +); +let level = 0; +const levels = [ + map` +p... +.b.g +..r.`, + map` +p... +..b. +...g`, + map` +p..g +.b.. +.... +....`, + map` +p... +...b +...b +.bbg`, + map` +... +.p. +...`, + map` +p.w. +.bwg +.... +..bg`, + map` +...r.. +...... +p.b..g +......`, + map` +....r..r.. +.......... +.......... +p..b.....g +.......... +.......... +.....oo...`, + map` +.brrrrrrg +......... +.pwwwwwww +..wwwwwww +......... +.boooooog`, + map` +..r..o.o. +...o..orr +pr..o.... +..o.rr.o. +....o..o.`, + map` +p.wwwgwg +.bwww.w. +.bwww.wr +..ooo.o. +........` +]; + +// set the map displayed to the current level +const currentLevel = levels[level]; +setMap(currentLevel); +setSolids([ player, box, wall ]); // other sprites cannot go inside of these sprites +// allow certain sprites to push certain other sprites +setPushables({ + [player]: [box], + [box] : [box] +}); +setInterval(function(){ + badtime += 1; // Increment badtime + if (badtime == 16) { + badtime = 0; + } + if (badtime > 1 && badtime < 5) { + setTimeout(function(){ + getAll(BADBOX).forEach(element => { + element.y += 1 + }) + }, 200); + } + if (badtime > 10 && badtime < 15) { + setTimeout(function(){ + getAll(BADBOX).forEach(element => { + element.y -= 1 + }) // Move the box up by subtracting + }, 200); + } + checkHit(); // check for collision on every update +}, 200); + +setInterval(function(){ + eviltime += 1; // Increment badtime + if (eviltime == 16) { + eviltime = 0; + } + if (eviltime > 1 && eviltime < 5) { + setTimeout(function(){ + getAll(EVILBOX).forEach(element => { + element.y -= 1 + }) + }, 200); + } + if (eviltime > 10 && eviltime < 15) { + setTimeout(function(){ + getAll(EVILBOX).forEach(element => { + element.y += 1 + }) // Move the box up by subtracting + }, 200); + } + checkHit(); // check for collision on every update +}, 200); + + +// inputs for player movement control +onInput("s", () => { + getFirst(player).y += 1; // positive y is downwards +}); +onInput("w", () => { + getFirst(player).y += -1; +}); +onInput("d", () => { + getFirst(player).x += 1; +}); +onInput("a", () => { + getFirst(player).x += -1; +}); +onInput("i",() => { + const currentLevel =levels[6]; + level = 6 + if (currentLevel !== undefined) { + clearText(""); + setMap(currentLevel); + } +}); +// input to reset level +onInput("j", () => { + 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); + } +}); +// these get run after every input +afterInput(() => { + + // count the number of tiles with goals + const targetNumber = tilesWith(goal).length; + // count the number of tiles with goals and boxes + const numberCovered = tilesWith(goal, box).length; + // call the check hit function to check for collision + checkHit(); + + //aa if the number of goals is the same as the number of goals covered + // all goals are covered and we can go to the next level + if (numberCovered === targetNumber) { + // increase the current level number + level = level + 1; + const currentLevel = levels[level]; + console.log(level); + // make sure the level exists and if so set the map + // otherwise, we have finished the last level, there is no level + // after the last level + if (currentLevel !== undefined) { + setMap(currentLevel); + } else { + addText("you win!", { y: 4, color: color`3` }); + } + } +}); + +function checkHit() { + const badhitbox = tilesWith(BADBOX).length; + const baddamage = tilesWith(BADBOX, player).length; + + // Get the current level's map + const currentLevelMap = levels[level]; + + if (baddamage > 0) { + // You're being hit + console.log("evilHIT!"); + console.log(evildamage); + setMap(currentLevelMap); // Reset the current level + } + } + + + + +function checkHit() { + const badBoxHitbox = tilesWith(BADBOX).length; + const evilBoxHitbox = tilesWith(EVILBOX).length; + + const badBoxDamage = tilesWith(BADBOX, player).length; + const evilBoxDamage = tilesWith(EVILBOX, player).length; + + // Get the current level's map + const currentLevelMap = levels[level]; + + if (badBoxDamage > 0 || evilBoxDamage > 0) { + // You're being hit by either BADBOX or EVILBOX + setMap(currentLevelMap); // Reset the current level + console.log("HIT!"); + } +} From 2d22f3c26e214d5ba98a36218cd52558a2079661 Mon Sep 17 00:00:00 2001 From: Lucas <88567622+LucasHT22@users.noreply.github.com> Date: Thu, 7 Sep 2023 13:28:07 -0300 Subject: [PATCH 17/17] add #1132 --- games/metadata.json | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/games/metadata.json b/games/metadata.json index e0171bc081..4a705a8b61 100644 --- a/games/metadata.json +++ b/games/metadata.json @@ -2926,5 +2926,13 @@ "img": "", "tags": ["catch"], "added on": "2023-09-02" + }, + { + "filename": "mailman", + "title": "mailman", + "author": "Akko", + "img": "", + "tags": [], + "added on": "2023-09-07" } ]