Skip to content

Instantly share code, notes, and snippets.

@cdata
Created December 27, 2024 22:38
Show Gist options
  • Save cdata/9c9ba55466553c6895944a434142457c to your computer and use it in GitHub Desktop.
Save cdata/9c9ba55466553c6895944a434142457c to your computer and use it in GitHub Desktop.
pico-8 cartridge // http://www.pico-8.com
version 42
__lua__
x = 16
vx = 0
y = 8
vy = 0
camera_x = 0
camera_y = 0
tx = 0
ty = 0
tx_1 = 0
ty_1 = 0
tile = 0
tile_1 = 0
jumping = false
falling = false
fall_frames = 0
game_over = false
backpack = {
collected = false,
carrots = 0
}
is_on_mommy = false
is_on_platform = false
is_in_shop = false
function vec2(x, y)
v = {}
v.x = x
v.y = y
return v
end
carrots = {
[1] = vec2(2, 2),
[2] = vec2(3, 1),
[3] = vec2(4, 0),
[4] = vec2(5, 0),
[5] = vec2(6, 0),
[6] = vec2(7, 0),
[7] = vec2(10, 0),
[8] = vec2(11, 0),
[9] = vec2(4, 3),
[10] = vec2(6, 2),
[11] = vec2(9, 2),
[12] = vec2(2, 5),
[13] = vec2(3, 5),
[14] = vec2(4, 5),
[15] = vec2(5, 4),
[16] = vec2(8, 4),
[17] = vec2(9, 4),
[18] = vec2(12, 4),
[18] = vec2(6, 5),
[18] = vec2(7, 5),
}
function next_tile()
return mget(
flr((x + vx) / 8 + 0.5),
flr((y - vy) / 8)
)
end
function _init()
end
function _update()
tx = flr(x / 8 + 0.5)
ty = flr(y / 8 + 0.25)
tx_1 = flr((x + vx) / 8 + 0.5)
ty_1 = flr((y - vy) / 8)
tile = mget(tx, ty)
if (vy > -4) vy -= 1
tile_1 = mget(tx_1, ty_1)
is_on_mommy = tile == 21 or tile == 22
is_on_platform = tile_1 == 11 or tile_1 == 2 or tile_1 == 23 or tile_1 == 51 or tile_1 == 52
is_in_shop = tile_1 == 51 or tile_1 == 52
//if (btn(➡️) and vy != 0) then
// vx = 1
//end
//if (btn(⬅️) and vy != 0) then
// vx = -1
//end
if (is_in_shop) then
backpack.collected = true
end
if (btn(⬆️) and not jumping and vy <= 0) then
jumping = true
vy = 5
end
if ((is_on_platform
or is_on_mommy)
and vy < 0) then
vy = 0
vx = 0
jumping = false
y = ty_1 * 8
if (btn(➡️)) then
vy = 2
vx = 1
end
if (btn(⬅️)) then
vy = 2
vx = -1
end
if (btn(⬇️)) then
vy = -4
end
end
y -= vy
x += vx
if (x > 100) then
camera_x = x - 100
end
if y > 200 then
y = -10
end
camera(camera_x, camera_y)
if (vy < 0) then
fall_frames += 1
else
fall_frames = 0
end
if (fall_frames > 20) then
falling = true
else
falling = false
end
if (fall_frames > 160) then
game_over = true
end
update_particles()
update_carrots()
end
function _draw()
cls(1)
draw_particles()
map(0, 0, 0, 0, 30, 20)
spr(3, 106, 40)
spr(4, 114, 40)
for i, carrot in ipairs(carrots) do
//print(i .. ") x: " .. carrot.x .. ", y: " .. carrot.y, 0, i * 8)
spr(7, carrot.x * 8, carrot.y * 8)
end
for i=1,16 do
for j = 0, 2 do
base = 76
if j > 0 or i > 10 then
spr(17, 8 * i, 76 + 8 * j)
end
end
end
//spr(17, 8, 84)
tx = flr(x / 8)
ty = flr(y / 8)
tile = mget(tx, ty)
if (falling) then
print("aaahhhhhhhh", x - 20, y + 10)
end
if (is_on_mommy) then
print("mommy!", x - 20, y + 10)
if (backpack.collected) then
print("oh look! your baby", 40, 20)
print("brother is in your", 40, 28)
print("backpack!", 40, 36)
end
end
// player
if (backpack.collected) then
spr(14, x, y - 2)
end
spr(1, x, y - 2)
if (game_over) then
print("game over", camera_x + 46, 60)
end
color(1)
rectfill(camera_x, 0, camera_x + 200, 8)
color(0)
print("carrots: " .. backpack.carrots, camera_x + 1, 1)
//color(2)
//rectfill(camera_x, 0, camera_x + 100, 14)
//color(0)
//print("fall frames: " .. fall_frames, camera_x + 1, 1)
//print("game over: " .. tostring(game_over), camera_x + 1, 8)
//print("tile: " .. tile .. " @ (" .. tx .. ", " .. ty .. ")", 1, 1)
//print("next tile: " .. tile_1 .. " @ (" .. tx_1 .. ", " .. ty_1 .. ")" , 1, 9)
//print("vel: (" .. vx .. ", " .. vy .. ")")
end
function update_carrots()
for carrot in all(carrots) do
if tx_1 == carrot.x and ty_1 == carrot.y then
del(carrots, carrot)
backpack.carrots += 1
particle(x + 4, y + 4)
end
end
end
particles = {}
function particle(x, y)
//for i=0,10 do
for i=1,20 do
add(particles,{x=x,y=y,
dx=rnd(2)-1,dy=rnd(2)-1,
rad=rnd(3),act=20,
clr=rnd({1,9,10})})
end
//end
end
function update_particles()
for p in all(particles) do
p.x+=p.dx*0.5
p.y+=p.dy*0.5
p.act-=1
if p.act<16 then p.rad=min(p.rad, 2) end
if p.act<8 then p.rad=min(p.rad, 1) end
if p.act<0 then
del(particles,p)
end
end
end
function draw_particles()
for p in all(particles) do
circfill(p.x,p.y,p.rad,p.clr)
end
end
__gfx__
0000000000e00e0000000000000000000000000000000000000000000000bbbb444444b400000000ffffffff0000000055555555000000000000000000000000
0000000000e00e00000000000e00e0000000000000444444444440000000033b5444444400000000ffffffff00000000555555550000000000000e0e00000000
0070070000eeee00000000000e00e0000000000004000000000004000000093b4444445400000000f777777f000000005566665500000000000005e500000000
00077000001e1e00000000000e00e02220000000400000000000004000009993444b444400000000f777777f00000000556776550000000000000aaa00000000
0007700000e8ee00070707070eeee222220000000000000000000004000994994544444400000000f766667f00000000556776550000000000000a6a00000000
0070070000e77e007e7e7e7e00e0e222222000000000000000000004009499904444454400000000f777777fb3b3b3b3556666550000000000000aaa00000000
0000000000e77e00e2e2e2e20eeee222222e00000000000000000004099999004b4544b400000000ffffffff4f4ff4f455555555000000000000000000000000
0000000000e77ee02020202000000e0e0e0000000000000000000004494900004444444400000000ffffffff5566556555555555000000000000000000000000
00000000000000000000000000000000000000000000006666600004444444440000000000000000655565650060600000000000000000000000000000000000
000000000000000000000000000000000000000000000666666600040404040400000000000000005c565c560066600000000000000000000600006000000000
00000000000000000000000000000000000000000000666666666774000000000000000000000000000000000065600000000000000000000055550000000000
0000000000e00e000000000000000000000000000006666666667774000000000000000000000000000000000065600000848000000000000055550000000000
0000000000e00e000000000000000000000000000066666666677774000000000000000000000000000000000065600008888800000000000055550000000000
00000000005ee5000000000000000000000000000666666666777774000000000000000000000000000000000fffff0000888000000000000055550000000000
0000000000eeee000000000000000000000000006666666667777774b44b44b4000000000000000000000000000f000000080000000000000000000000000000
0000000000e77e00000000000000000000000000bbbbbbbbbbbbbbb444b4b44b00000000000000000000000000e0000000000000000000000000000000000000
00000000000000000000000044444444444444440000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
00000000000000000000000044444444444444440000000000000000000000000000000000000000000000000000000000000000000000000007770000000000
00000000000000000000000044444444444444440000000000000000000000000000000000000000000000000000000000000000000000000007770000099000
00000000000000000000000044444444444444440000000000000000000000000000000000000000000000000000000000000000000000000000700000999900
000000000000000000000000400000000000a00400000000000000000000000000000000000000000000000000000000000000000000000000b0b0b000777700
00000000000000000000000040070000000aaa04000000000000000000000000000000000000000000000000000000000000000000000000000bbb0000776600
00000000000000000000000040767000000aaa040000000000000000000000000000000000000000000000000000000000000000000000000000b00000777700
00000000000000000000000040767000000aaa040000000000000000000000000000000000000000000000000000000000000000000000000000000000776600
0000000000000000000000004076700040000004000000000000000005bbb5000000000000000000000000000000000000000000000000000000400000000000
0555500000000000000000004076700888000004000000000000000050bbb0500000000000000000000000000000000000000000000000000004440000000000
05ff5000000000000000000045555508880000040000000000000000055555000070070000000000000000000000000000000000000000000044444000000000
05ff5000000000000000000040050008880000040000000003333330055555000057570000000000000000000000000000000000000000000055555000000000
0f88f000000000000000000044444444444444440000000003bbbb3005ddd5000077770000000000000000000000000000000000000000000044444000000000
0f88f0000000000000000000444444444444444400000000035bb5300b555b000007700000000000000000000000000000000000000000000044444000000000
00770000000000000000000044444444444444440000000003bbbb30005550000007707000000000000000000000000000000000000000000044444000000000
00770000000000000000000044444444444444440000000003333330005550000007770000000000000000000000000000000000000000000000000000000000
__map__
0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
0000000002020202000002020000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
0000000200000023240000000b0b0b0b00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
000002000000023334020000000000000b0b0b0b000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
00000000020000000000000000050600000000000b0b0b000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
000000000002000002020000021516000b00000b0000000b0b0b000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
00000202020202020808170808080800000000000000000000000b0000000b00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
080808080808080808080817080805060000000b000b00000000000b0b000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
08080808081717171717171717171516000b0b0b000000000b00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
08080808170808080808080808080808000b000b0b0b0b0b0b0b0b0b0b0b0b00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
17081717080808080808080a0a0a0a0a0a00000c0c0c0c0c0c0c0c0c0c0c0c00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
000a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a00000c0c0c0c0c0c0c0c0c0c0c0c00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
170a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a00000c0c0c0c0c0c0c0c0c0c0c0c00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
001717171717171717171717171717170000001a1a1a1a1a1a1a1a1a1a1a1a00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment