diff --git a/games/subway-surfish.js b/games/subway-surfish.js new file mode 100644 index 0000000000..5c159b5a05 --- /dev/null +++ b/games/subway-surfish.js @@ -0,0 +1,229 @@ +/* +First time? Check out the tutorial game: +https://sprig.hackclub.com/gallery/getting_started + +@title: subway surfish +@author: scottwellcorn +@tags: [] +@addedOn: 2024-01-22 +*/ +const player = "p" +const wall = "w" +const wall2 = "m" +const wall3 = "q" +const wall4 = "a" +const end = "e" +const floor = "f" +setLegend( + [player, bitmap` +................ +....CCCC........ +....CCCCC....... +.....C6226...... +.....66026...... +.....622666..... +.....622266..... +....6633222..... +666.666326...... +6666666666...... +66066666........ +.606666......... +..0..0.......... +..0..0.......... +..0..00......... +..000...........`], + [wall, bitmap` +................ +................ +................ +L0L0L0L0L0L0L0L0 +0L0L0L0L0L0L0L0L +0L0L0L0L0L0L0L0L +2733333333333327 +72339CCCC9333372 +2733C9CC9C333327 +3333191191333333 +6333C9CC9C333336 +63339CCCC9333336 +3333333333333333 +3300033000330003 +..0L0..0L0..0L0. +..000..000..000.`], + [wall2, bitmap` +................ +................ +................ +L0L0L0L0L0L0L0L0 +0L0L0L0L0L0L0L0L +0L0L0L0L0L0L0L0L +2744444444444427 +72449CCCC9444472 +2744C9CC9C444427 +4444191191444444 +6444C9CC9C444446 +64449CCCC9444446 +4444444444444444 +4400044000440004 +..0L0..0L0..0L0. +..000..000..000.`], + [wall3, bitmap` +................ +................ +................ +L0L0L0L0L0L0L0L0 +0L0L0L0L0L0L0L0L +0L0L0L0L0L0L0L0L +2755555555555527 +72559CCCC9555572 +2755C9CC9C555527 +5555191191555555 +6555C9CC9C555556 +65559CCCC9555556 +5555555555555555 +5500055000550005 +..0L0..0L0..0L0. +..000..000..000.`], + [wall4, bitmap` +................ +................ +................ +L0L0L0L0L0L0L0L0 +0L0L0L0L0L0L0L0L +0L0L0L0L0L0L0L0L +27HHH8HHHHH8HH27 +728H9CCCC9HHHH72 +27HHC9CC9CH8HH27 +H8HH191191HHH8HH +6HH8C9CC9CH8HH86 +6H8H9CCCC9H8HHH6 +HHHHHHH8HHHHHHHH +H80008H000HH000H +..0L0..0L0..0L0. +..000..000..000.`], + [end, bitmap` +..2............. +..222........... +..2............. +..222.2.2....... +..22..22.2..27.3 +..22272772..72.. +..777772.77.7.2. +772277.227.7..2. +..2772777227.2.2 +777722.2.27..2.2 +7...777777777772 +7777...227772272 +.......2772777.. +.......7777..... +.....777........ +................`], + [floor, bitmap` +1FF1FF1FF1FF1FF1 +CCCCCCCCCCCCCCCC +CCCCCCCCCCCCCCCC +1FF1FF1FF1FF1FF1 +1FF1FF1FF1FF1FF1 +1FF1FF1FF1FF1FF1 +1FF1FF1FF1FF1FF1 +1FF1FF1FF1FF1FF1 +1FF1FF1FF1FF1FF1 +1FF1FF1FF1FF1FF1 +1FF1FF1FF1FF1FF1 +1FF1FF1FF1FF1FF1 +1FF1FF1FF1FF1FF1 +CCCCCCCCCCCCCCCC +CCCCCCCCCCCCCCCC +1FF1FF1FF1FF1FF1`], +) + +setSolids([player, wall, wall2, wall3, wall4]) + +onInput("s", () => { + getFirst(player).y += 1 +}) + +onInput("w", () => { + getFirst(player).y -= 1 +}) + +let currentLevel = 0; +const levels = [ + map` +....wmw.....qmw............mwmw.aw........ +..wa...wq.mw...wq..qw.qw..w....w..a..w.... +wm...m....w..a...mw..w.qmw..w.qw.qw.a.wmmq +.p..wa.wm.q..aq........w....q...........ew +wq...q.......w.w.wa.wmaqmw.w..wmw.qq..w.q. +..wm...qw.wq...mw.w.........a..a...w.wq... +....w.............wqmamwqmwa.w...q.....w..`, + map` +ffffwmwfffffqmwffffffffffffmwmwfawffffffff +ffwafffwqfmwfffwqffqwfqwffwffffwffaffwffff +qqfffmffffwffafffmwffwfqmwffwfqwfqwfafwmmq +pfffwqfwmfqmfaqffffffffwffffqfffffffffffew +qqfffafffffffwfwfwafwmaqmwfwffwmwfqqffwfqf +ffwmfffqwfwqfffmwfwfffffffffaffafffwfwqfff +ffffwfffffffffffffwqmamwqmwafwfffqfffffwff` +] + +setBackground(floor) + +setMap(levels[0]) + +const melody = tune` +179.64071856287424: C4^179.64071856287424 + B5/179.64071856287424 + A5-179.64071856287424, +179.64071856287424: C4^179.64071856287424 + D4~179.64071856287424 + B5/179.64071856287424, +179.64071856287424: C4^179.64071856287424 + B5/179.64071856287424 + A5-179.64071856287424, +179.64071856287424: C4^179.64071856287424 + D4~179.64071856287424 + B5/179.64071856287424, +179.64071856287424: C4^179.64071856287424 + B5/179.64071856287424 + A5-179.64071856287424, +179.64071856287424: C4^179.64071856287424 + D4~179.64071856287424 + B5/179.64071856287424, +179.64071856287424: C4^179.64071856287424 + B5/179.64071856287424 + A5-179.64071856287424, +179.64071856287424: C4^179.64071856287424 + D4~179.64071856287424 + B5/179.64071856287424, +179.64071856287424: C4^179.64071856287424 + B5/179.64071856287424 + A5-179.64071856287424, +179.64071856287424: C4^179.64071856287424 + D4~179.64071856287424 + B5/179.64071856287424, +179.64071856287424: C4^179.64071856287424 + B5/179.64071856287424 + A5-179.64071856287424, +179.64071856287424: C4^179.64071856287424 + D4~179.64071856287424 + B5/179.64071856287424, +179.64071856287424: C4^179.64071856287424 + B5/179.64071856287424 + A5-179.64071856287424, +179.64071856287424: C4^179.64071856287424 + D4~179.64071856287424 + B5/179.64071856287424, +179.64071856287424: C4^179.64071856287424 + B5/179.64071856287424 + A5-179.64071856287424, +179.64071856287424: C4^179.64071856287424 + D4~179.64071856287424 + B5/179.64071856287424, +179.64071856287424: C4^179.64071856287424 + B5/179.64071856287424 + A5-179.64071856287424, +179.64071856287424: C4^179.64071856287424 + D4~179.64071856287424 + B5/179.64071856287424, +179.64071856287424: C4^179.64071856287424 + B5/179.64071856287424 + A5-179.64071856287424, +179.64071856287424: C4^179.64071856287424 + D4~179.64071856287424 + B5/179.64071856287424, +179.64071856287424: C4^179.64071856287424 + B5/179.64071856287424 + A5-179.64071856287424, +179.64071856287424: C4^179.64071856287424 + D4~179.64071856287424 + B5/179.64071856287424, +179.64071856287424: C4^179.64071856287424 + B5/179.64071856287424 + A5-179.64071856287424, +179.64071856287424: C4^179.64071856287424 + D4~179.64071856287424 + B5/179.64071856287424, +179.64071856287424: C4^179.64071856287424 + B5/179.64071856287424 + A5-179.64071856287424, +179.64071856287424: C4^179.64071856287424 + D4~179.64071856287424 + B5/179.64071856287424, +179.64071856287424: C4^179.64071856287424 + B5/179.64071856287424 + A5-179.64071856287424, +179.64071856287424: C4^179.64071856287424 + D4~179.64071856287424 + B5/179.64071856287424, +179.64071856287424: C4^179.64071856287424 + B5/179.64071856287424 + A5-179.64071856287424, +179.64071856287424: C4^179.64071856287424 + D4~179.64071856287424 + B5/179.64071856287424, +179.64071856287424: C4^179.64071856287424 + B5/179.64071856287424 + A5-179.64071856287424, +179.64071856287424: C4^179.64071856287424 + D4~179.64071856287424 + B5/179.64071856287424` + +const playback = playTune(melody, Infinity) + +let intervalTime = 200; + +let interval = setInterval(intervalFunc, intervalTime) + +function intervalFunc() { + if (getFirst(player).x == 40 && getFirst(player).y == 3) { + console.log("Hello World") + if (currentLevel == 0) currentLevel = 1 + if (currentLevel == 1) currentLevel = 0 + clearInterval(interval) + intervalTime -= 100 + setInterval(intervalFunc, intervalTime) + setMap(levels[currentLevel]) + } else { + getFirst(player).x += 1 + } +} + +afterInput(() => { + console.log(getFirst(player).x, getFirst(player).y) +})