Skip to content

Commit b664451

Browse files
committed
Sprig App - Paws Up!
1 parent accce9e commit b664451

File tree

1 file changed

+354
-0
lines changed

1 file changed

+354
-0
lines changed

games/Paws-Up!.js

Lines changed: 354 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,354 @@
1+
/*
2+
@title: Paws Up!
3+
@description: Paws up is a challenging game where you a cat jump onto platforms.
4+
@tags: ['platformer']
5+
@addedOn: 2025-012-06
6+
7+
@img: ""
8+
*/
9+
10+
const coin = "c"
11+
const player = "p"
12+
const island = "i"
13+
const background = "b"
14+
const counter = "x"
15+
var total = "0";
16+
const portal = "z"
17+
18+
19+
20+
setLegend(
21+
[player, bitmap`
22+
................
23+
........0.....0.
24+
.......010...010
25+
..00...021000120
26+
.0220..011LLL110
27+
01120..0L10110L0
28+
0L10...011111110
29+
010....0L11221L0
30+
0L0....00122220.
31+
010...0L1LLLL0..
32+
01L0001L11LL10..
33+
.0110L11L11110..
34+
..0001L1111110..
35+
....0110110110..
36+
....0220220220..
37+
....0000000000..`],
38+
[coin, bitmap`
39+
................
40+
................
41+
..........LLL...
42+
.......L..LLLL..
43+
L....L..L.LLLLL.
44+
LL.L..L.L.L...LL
45+
.LL.L.L.L.L.L.LL
46+
..LLLLLLLLL...L.
47+
.LL.......LLLL.L
48+
LL..L.L.L.LLL.LL
49+
L..L..L.L.LLLLL.
50+
.....L..L.LLLL..
51+
.......L..LLL...
52+
................
53+
................
54+
................`],
55+
[island, bitmap`
56+
0000000000000000
57+
0DDDDDDDDDDDDDD0
58+
0DDDDDDDDDDDDDD0
59+
00DD00DD00DD00D0
60+
0C00CC00CC00CC00
61+
0CCCCCCCCCCCCCC0
62+
0CCCCCCCCCCCCCC0
63+
0CCCCCCCCCCCCCC0
64+
0CCCCCCCCCCCCCC0
65+
0CCCCCCCCCCCCCC0
66+
0CCCCCCCCCCCCCC0
67+
0CCCCCCCCCCCCCC0
68+
0CCCCCCCCCCCCCC0
69+
0CCCCCCCCCCCCCC0
70+
0CCCCCCCCCCCCCC0
71+
0000000000000000`],
72+
[background, bitmap`
73+
7777777777777777
74+
7777777777777777
75+
7777777777777777
76+
7777777777777777
77+
7777777777777777
78+
7777777777777777
79+
7777777777777777
80+
7777777777777777
81+
7777777777777777
82+
7777777777777777
83+
7777777777777777
84+
7777777777777777
85+
7777777777777777
86+
7777777777777777
87+
7777777777777777
88+
7777777777777777`],
89+
[counter, bitmap`
90+
................
91+
................
92+
................
93+
................
94+
................
95+
................
96+
................
97+
................
98+
................
99+
................
100+
....L.L..L..LL..
101+
....LL.L..L.L.L.
102+
.....LLLLLLLLLLL
103+
....LL......LLL.
104+
....L..L..L.LL..
105+
......L..L......`],
106+
[portal, bitmap`
107+
.....000000.....
108+
....00882200....
109+
...00H3333200...
110+
..00H333333800..
111+
.00333333333800.
112+
0033330000333800
113+
0000002222000000
114+
..022222222220..
115+
..022200002220..
116+
..0220LLLL0220..
117+
..0201111LL020..
118+
..02011111L020..
119+
..02011111L020..
120+
..02011111L020..
121+
..02011111L020..
122+
..02011111L020..`]
123+
)
124+
125+
setSolids([player, island])
126+
127+
let level = 0;
128+
const levels = [
129+
map`
130+
bbbbbbbbbb
131+
bbbbbbbbbb
132+
bbbbbbbbbb
133+
bbbbbbbbbb
134+
bbbbbbbbbb
135+
pbbbbbbbbz
136+
iiiiiiiiii
137+
bbbbbbbbbb`,
138+
map`
139+
....c..x..
140+
..........
141+
.........z
142+
.........i
143+
....i..cii
144+
p.iii..iii
145+
iiiiiiiii.
146+
..........`,
147+
map`
148+
...c...x..
149+
..........
150+
..........
151+
...ii..c..
152+
..iiii....
153+
piiiiiii.z
154+
iiiiiiiiii
155+
..........`,
156+
map`
157+
..c....x..
158+
..i......c
159+
..i..iiiii
160+
..i....iii
161+
.iii....ii
162+
piii....zi
163+
iiiiiiiiii
164+
..........`,
165+
map`
166+
.......x..
167+
..........
168+
...c......
169+
......i...
170+
...i..c...
171+
p........z
172+
i.i..i...i
173+
..........`,
174+
map`
175+
.......x..
176+
..c.......
177+
...c......
178+
.p..c.....
179+
.i...c....
180+
......z...
181+
i.....i...
182+
..........`,
183+
map`
184+
....c..x..
185+
........z.
186+
....i...i.
187+
..........
188+
..i..ci.c.
189+
p.........
190+
i....i..i.
191+
..........`,
192+
map`
193+
c......x..
194+
i.iiii..i.
195+
..........
196+
......ii..
197+
.ii.c.....
198+
p.......z.
199+
i...i...i.
200+
..........`,
201+
map`
202+
.......x..
203+
..........
204+
..cc..cz..
205+
..cc..cc..
206+
.........i
207+
p.i....i..
208+
i..iiii...
209+
..........`,
210+
211+
]
212+
213+
addText("Welcome To \nPaws Up!", {
214+
x: 2,
215+
y: 2,
216+
color: color`0`,});
217+
addText("W: Jump\nA: Right\nD: Left", {
218+
x: 5,
219+
y: 7,
220+
color: color`0`,});
221+
addText("Go to the portal!", {
222+
x: 1,
223+
y: 5,
224+
color: color`0`,});
225+
226+
const endScreen = map`
227+
.......x..
228+
..........
229+
..........
230+
..........
231+
..........
232+
..........
233+
p.........
234+
iiiiiiiiii`;
235+
setMap(levels[level])
236+
setBackground(background);
237+
238+
/*setPushables({
239+
[ player ]: []
240+
})*/
241+
242+
/*onInput("s", () => {
243+
244+
getFirst(player).y += 1
245+
})*/
246+
247+
onInput("w", () => {
248+
if (isGrounded()) {
249+
if (getFirst(player).y < 2) {
250+
getFirst(player).y -= 1;
251+
} else if (getFirst(player).y < 3) {
252+
getFirst(player).y -= 2;
253+
}
254+
255+
getFirst(player).y -= 3
256+
}
257+
})
258+
259+
onInput("a", () => {
260+
getFirst(player).x -= 1
261+
})
262+
263+
onInput("d", () => {
264+
getFirst(player).x += 1
265+
})
266+
267+
var done = false;
268+
269+
function levelEnd() {
270+
let obstacles = getFirst(portal);
271+
let p = getFirst(player);
272+
if (obstacles.x == p.x && obstacles.y == p.y) {
273+
274+
if (level > levels.length - 2) {
275+
276+
277+
setMap(endScreen)
278+
addText("Thank You \nFor Playing", {
279+
x: 5,
280+
y: 5,
281+
color: color`0`,
282+
});
283+
done = true;
284+
return;
285+
}
286+
287+
level++;
288+
clearText();
289+
addText(total.toString(), {
290+
x: 17,
291+
y: 1,
292+
color: color`0`,
293+
})
294+
setMap(levels[level]);
295+
}
296+
297+
298+
}
299+
300+
function isGrounded() {
301+
let obstacles = getAll(island);
302+
let p = getFirst(player);
303+
for (let i = 0; i < obstacles.length; i++) {
304+
if (obstacles[i].x == p.x && obstacles[i].y == (p.y + 1)) {
305+
return true;
306+
}
307+
}
308+
return false;
309+
}
310+
311+
function checkHit() {
312+
let obstacles = getAll(coin);
313+
let p = getFirst(player);
314+
315+
for (let i = 0; i < obstacles.length; i++) {
316+
if (obstacles[i].x == p.x && obstacles[i].y == p.y) {
317+
let tempX = p.x;
318+
let tempY = p.y;
319+
clearTile(tempX, tempY);
320+
addSprite(tempX, tempY, player);
321+
return true;
322+
}
323+
}
324+
return false;
325+
}
326+
327+
addText("0", {
328+
x: 17,
329+
y: 1,
330+
color: color`0`,
331+
})
332+
let check = 0;
333+
var gameLoop = setInterval(() => {
334+
check++;
335+
isGrounded();
336+
if (!done) {
337+
levelEnd();
338+
}
339+
if (getFirst(player).y > 6) {
340+
getFirst(player).y = 5;
341+
getFirst(player).x = 0;
342+
}
343+
if (checkHit()) {
344+
total++;
345+
addText(total.toString(), {
346+
x: 17,
347+
y: 1,
348+
color: color`0`,
349+
})
350+
}
351+
if ((check % 2) == 0) {
352+
getFirst(player).y += 1;
353+
}
354+
}, 100);

0 commit comments

Comments
 (0)