Skip to content

Commit ac817ac

Browse files
committed
Sprig App - mazed and confused
1 parent 26f9f8d commit ac817ac

File tree

2 files changed

+303
-0
lines changed

2 files changed

+303
-0
lines changed

games/img/mazed-and-confused.png

28.9 KB
Loading

games/mazed-and-confused.js

Lines changed: 303 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,303 @@
1+
/*
2+
First time? Check out the tutorial game:
3+
https://sprig.hackclub.com/gallery/getting_started
4+
5+
@title: a-maze-ing
6+
@author:
7+
@tags: []
8+
@addedOn: 2025-00-00
9+
*/
10+
11+
const player = "p"
12+
const wall = "w"
13+
const checkpoint = "c"
14+
const melody = tune`
15+
500,
16+
500: D4~500 + B4^500,
17+
500: D4~500 + B4^500,
18+
500: G4~500 + D5^500,
19+
500: G4~500 + D5^500,
20+
500: E4~500 + B4^500,
21+
500: D4^500 + A4~500,
22+
500: E4~500 + B4^500,
23+
500: G4~500 + A4^500 + F4-500,
24+
500,
25+
500: G4~500 + A4^500 + F4-500,
26+
500: G4~500 + A4^500 + F4-500,
27+
500: D4/500,
28+
500: E4/500,
29+
500: D4~500 + B4^500 + F4/500,
30+
500: D4~500 + B4^500,
31+
500: G4~500 + D5^500,
32+
500: G4~500 + D5^500,
33+
500: E4~500 + B4^500,
34+
500: A4~500 + D4^500,
35+
500: E4~500 + B4^500,
36+
500: G4~500 + A4^500 + F4-500,
37+
500,
38+
500: G4~500 + A4^500 + F4-500,
39+
500: G4~500 + A4^500 + F4-500,
40+
500: D4/500,
41+
500: E4/500 + A4^500,
42+
500: F4/500 + B4~500 + G4^500,
43+
500: A4~500 + F4^500,
44+
500: G4~500 + E4^500,
45+
500: F4~500 + D4^500,
46+
500: C4^500 + E4~500`
47+
const teleport = tune`
48+
500,
49+
500: C5/500,
50+
15000`
51+
const falsewall = "f"
52+
const greg ="g"
53+
const gork = "r"
54+
55+
56+
setLegend(
57+
[ player, bitmap`
58+
4444444444444444
59+
4444444444444444
60+
4444444444444444
61+
4444444444444444
62+
4440044444400444
63+
4440044444400444
64+
4444444444444444
65+
4444444444444444
66+
4440000000000444
67+
4444000000004444
68+
4444444444444444
69+
4444444444444444
70+
4444444444444444
71+
4444444444444444
72+
4444444444444444
73+
4444444444444444` ],
74+
[ wall, bitmap`
75+
0000000000000000
76+
0000000000000000
77+
0000000000000000
78+
0000000000000000
79+
0000000000000000
80+
0000000000000000
81+
0000000000000000
82+
0000000000000000
83+
0000000000000000
84+
0000000000000000
85+
0000000000000000
86+
0000000000000000
87+
0000000000000000
88+
0000000000000000
89+
0000000000000000
90+
0000000000000000` ],
91+
[ checkpoint, bitmap`
92+
....00000000....
93+
...0888888880...
94+
..008000000800..
95+
.00007777770000.
96+
0880000000000880
97+
0807000880007080
98+
0807000000007080
99+
0807080770807080
100+
0807080770807080
101+
0807000000007080
102+
0807000880007080
103+
0880000000000880
104+
.00007777770000.
105+
..008000000800..
106+
...0888888880...
107+
....00000000....`],
108+
[ falsewall, bitmap`
109+
0000000000L00000
110+
000L000000LL0000
111+
0LL0L0000L00LL00
112+
L0000L0LL0000000
113+
0000000000000000
114+
0000000000000000
115+
000000000000LLL0
116+
00LLLLLL000LL00L
117+
LL00000L00L00000
118+
00000000LL000000
119+
000000LL0000L0L0
120+
0000000000000000
121+
0000000000L00000
122+
000LLLL0000LLLL0
123+
0LL0000000LLL000
124+
L000000000L00000`],
125+
[ greg, bitmap`
126+
................
127+
....00000000....
128+
...000LLLLL00...
129+
..000L00000L00..
130+
.000L0000000L00.
131+
.00L110011111L0.
132+
.000L110110LLL0.
133+
.0000LL100L0000.
134+
.00000L0111L000.
135+
.00000L101L0000.
136+
.0011110011L000.
137+
.00L00000010L00.
138+
..00L000001L00..
139+
...00LLLLLL00...
140+
....00000000....
141+
................`],
142+
[ gork, bitmap`
143+
0000000000000000
144+
0000000000000000
145+
0000000000000000
146+
0000000000000000
147+
0000033333300000
148+
0000300000030000
149+
0200302002030020
150+
0020300000030200
151+
0002700000072000
152+
0000700000070000
153+
0000700000070000
154+
0000077777700000
155+
0000000000000000
156+
0000000000000000
157+
0000000000000000
158+
0000000000000000`]
159+
)
160+
161+
setSolids([player, wall, gork, greg]);
162+
setPushables({
163+
[player]: [falsewall]
164+
});
165+
166+
167+
let level = 0
168+
const levels = [
169+
map`
170+
wwwwwwwww
171+
wpw...w.w
172+
w.w.w.w.w
173+
w.w.w.w.w
174+
w.w.w.w.w
175+
w...w...w
176+
www.w.w.w
177+
w.....w.c
178+
wwwwwwwww`,
179+
map`
180+
pf.w.w.
181+
.www.f.
182+
...w.w.
183+
ww.w.w.
184+
...w.wc
185+
.wwwrww
186+
.......`,
187+
map`
188+
pw..w....
189+
.ww.w.wwf
190+
......w..
191+
www.www.w
192+
....w....
193+
.wwww.ww.
194+
......wc.`,
195+
map`
196+
p....w.....
197+
wwww.f.www.
198+
..cw.w.w...
199+
.wwf.w.f.ww
200+
.w.....w...
201+
.wwwwwwww.w
202+
.....r.....`,
203+
map`
204+
.f..w...w
205+
pww...w..
206+
wwwwwww.w
207+
..cw..f..
208+
..ww..rw.
209+
.wgwwwfw.
210+
.w.......
211+
.....www.`,
212+
map`
213+
pw...w...
214+
.wcw...w.
215+
..wwwfwr.....
216+
w........`,
217+
map`
218+
p..ww.wwc
219+
ww....r..
220+
...wwww.w
221+
fwww.....
222+
.....wwww`,
223+
map`
224+
c....rwww
225+
wwwww....
226+
....wfwww
227+
www.w.w..
228+
p.....w..`
229+
]
230+
231+
const playback = playTune(melody, Infinity)
232+
233+
234+
setMap(levels[level])
235+
236+
onInput("w", () => {
237+
getFirst(player).y -= 1
238+
})
239+
onInput("s", () => {
240+
getFirst(player).y += 1
241+
})
242+
onInput("a", () => {
243+
getFirst(player).x -= 1
244+
})
245+
onInput("d", () => {
246+
getFirst(player).x += 1
247+
})
248+
249+
250+
251+
onInput("i", () => {
252+
const g = getFirst(gork)
253+
if (!g) return
254+
g.y -= 1
255+
})
256+
257+
onInput("k", () => {
258+
const g = getFirst(gork)
259+
if (!g) return
260+
g.y += 1
261+
})
262+
263+
onInput("j", () => {
264+
const g = getFirst(gork)
265+
if (!g) return
266+
g.x -= 1
267+
})
268+
269+
onInput("l", () => {
270+
const g = getFirst(gork)
271+
if (!g) return
272+
g.x += 1
273+
})
274+
275+
276+
afterInput(() => {
277+
278+
})
279+
280+
281+
afterInput(() => {
282+
// check if the player is on a checkpoint
283+
const playerOnCheckpoint = tilesWith(player, checkpoint).length > 0;
284+
285+
if (playerOnCheckpoint) {
286+
// increase the current level number
287+
level = level + 1;
288+
playTune(teleport)
289+
290+
291+
const currentLevel = levels[level];
292+
293+
// make sure the level exists and if so set the map
294+
if (currentLevel !== undefined) {
295+
setMap(currentLevel);
296+
} else {
297+
addText("you win!", { y: 8, color: color`7` });
298+
}
299+
}
300+
});
301+
302+
303+

0 commit comments

Comments
 (0)