experiments-pico8/games/ocean.p8
2023-04-23 00:20:55 -05:00

260 lines
24 KiB
Lua

pico-8 cartridge // http://www.pico-8.com
version 41
__lua__
--
function _init()
start_scene("title")
end
function _update()
if _scene and _scene.update then
_scene.update()
end
end
function _draw()
if _scene and _scene.draw then
_scene.draw()
end
end
function start_scene(name)
_scene = _scenes[name]
_scene_start = time()
if _scene.start then
_scene.start()
end
end
function scene_time()
return time() - _scene_start
end
_scene = nil
_scenes = {}
_scene_start = 0
function draw_title()
cls()
print("title " .. scene_time())
end
function update_title()
if scene_time() > 0 then
start_scene("ocean")
end
end
_scenes.title = {start=nil, draw=draw_title, update=update_title}
function start_ocean()
ocean_wind_x = 0
ocean_wind_y = 0
end
function draw_ocean()
cls(12)
local ocean_anim = {[0]=0, 0, 1, 2, 3, 4, 0, 0, 0, 0, 0, 0, 0}
if ocean_wind_x != 0 or ocean_wind_y != 0 then
for x=0,15 do
for y=0,15 do
local anim = ocean_anim[(flr(time()*4) - ocean_wind_y*y - ocean_wind_x*x) % #ocean_anim]
local base = 0
if ocean_wind_y != 0 then base = 5 end
if anim > 0 then
spr(base+anim, 8*x, 8*y, 1, 1, ocean_wind_x < 0, ocean_wind_y < 0)
end
end
end
end
print("wind: "..ocean_wind_x..", "..ocean_wind_y)
draw_ship(player_ship, 64, 64)
end
function update_ocean()
if btn(0) then
ocean_wind_x = -1
elseif btn(1) then
ocean_wind_x = 1
else
ocean_wind_x = 0
end
if btn(2) then
ocean_wind_y = -1
elseif btn(3) then
ocean_wind_y = 1
else
ocean_wind_y = 0
end
end
_scenes.ocean = {start=start_ocean, draw=draw_ocean, update=update_ocean}
function draw_ship(ship, x, y)
spr(ship.n, x-ship.w*4, y-ship.h*4, 1, ship.h)
if ship.w > 1 then
spr(ship.n, x-ship.w*4+8, y-ship.h*4, 1, ship.h, true)
end
end
ship_type = {
small={n=64, w=1, h=1},
medium={n=65, w=1, h=2},
large={n=66, w=2, h=2},
ghost={n=67, w=2, h=3}
}
player_ship = ship_type.ghost
__gfx__
ccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc7cccccccccc7ccc333333333333333333333333555555555555555555555555
ccccccccc7ccccccccc7ccccccccc7ccccccccc7ccccccccccccccccccccc7cccccccccccccccccc333333333333333333333333555555555595555555555555
ccccccccccccccccccccccccccccccccccccccccccccccccccccccccc7cccccccccc7ccccccccccc33a3333333a3338333333383555555555555555555555555
ccccccccccccccccccccccccccccccccccccccccccccccccccccc7cccccccccccccccccccccccccc333333333333333333333333555555555559559555555555
cccccccccc7cccccccccc7ccccccccc7ccccccccccccccccc7cccccccccccccccccccccccccccccc333333333333333333333333555555555555555555559555
ccccccccccccccccccccccccccccccccccccccccccccc7cccccccccccccc7ccccccccccccccccccc33a3333333a3383333833333555555555555555555955555
ccccccccc7ccccccccc7cccccccccc7cccccccccc7ccccccccc7cccccccccccccccccccccccccccc333333333333333333333333559555555555559555559555
cccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc333333333333333333333333555555555555555555555555
cccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc
cccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc
ccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc4444444
ccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc4444444
cccccccffffffffffcccccccccccccc3333333333cccccccccccccc6666666666ccccccccccccccddddddddddcccccccccccccc2222222222cccccccc4444444
ccccccffffffffffffcccccccccccc333333333333cccccccccccc677777777776ccccccccccccddddddddddddcccccccccccc2dddddddddd2ccccccc4004004
cccccffffffffffffffcccccccccc33333333333333cccccccccc67777777777776ccccccccccddddddddddddddcccccccccc2dddddddddddd2ccccccccccccc
ccccffffffffffffffffcccccccc3333333333333333cccccccc6777777777777776ccccccccddddddddddddddddcccccccc2dddddddddddddd2cccccccccccc
ccccffffffffffffffffcccccccc3333333333333333cccccccc6777777777777776ccccccccddddddddddddddddcccccccc2dddddddddddddd2cccccc4444cc
ccccffffffffffffffffcccccccc3333333333333333cccccccc6777777777777776ccccccccddddddddddddddddcccccccc2dddddddddddddd2cccccc4440cc
ccccffffffffffffffffcccccccc3333333333333333cccccccc6777777777777776ccccccccddddddddddddddddcccccccc2dddddddddddddd2cccccc4440cc
ccccffffffffffffffffcccccccc3333333333333333cccccccc6777777777777776ccccccccddddddddddddddddcccccccc2dddddddddddddd2cccccc4444cc
ccccffffffffffffffffcccccccc3333333333333333cccccccc6777777777777776ccccccccddddddddddddddddcccccccc2dddddddddddddd2cccccc4440cc
ccccffffffffffffffffcccccccc3333333333333333cccccccc6777777777777776ccccccccddddddddddddddddcccccccc2dddddddddddddd2cccccc4440cc
ccccffffffffffffffffcccccccc3333333333333333cccccccc6777777777777776ccccccccddddddddddddddddcccccccc2dddddddddddddd2cccccc4444cc
ccccffffffffffffffffcccccccc3333333333333333cccccccc6777777777777776ccccccccddddddddddddddddcccccccc2dddddddddddddd2cccccccccccc
ccccffffffffffffffffcccccccc3333333333333333cccccccc6777777777777776ccccccccddddddddddddddddcccccccc2dddddddddddddd2cccccccccccc
cccccffffffffffffffcccccccccc33333333333333cccccccccc67777777777776ccccccccccddddddddddddddcccccccccc2dddddddddddd2ccccccccccccc
ccccccffffffffffffcccccccccccc333333333333cccccccccccc677777777776ccccccccccccddddddddddddcccccccccccc2dddddddddd2cccccccccccccc
cccccccffffffffffcccccccccccccc3333333333cccccccccccccc6666666666ccccccccccccccddddddddddcccccccccccccc2222222222ccccccccccccccc
cccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc
cccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc
cccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc
cccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc
00000000000440000000000400000005000000000000000000000000000000000000000000000000000000001111119111149111111110010000000000000000
00000000004444000000004400000055000000000000000000000000000000000000000000000000000000001111144911149111111100000000000000000000
00044000004444000000044400000556000000000000000000000000000000000000000000000000000000001111994111999911111990000000000000000000
004ff400044ff440000044ff00000566000000000000000000000000000000000000000000000000000000001114491119149191110009010000000000000000
004ff40004f44f4000004fff00005566000000000000000000000000000000000000000000000000000000001999411191149991199009110000000000000000
004ff40004f44f400077777400005566000000000000000000000000000000000000000000000000000000009669111191149119004441110000000000000000
0044440004f44f400004466700005566000000000000000000000000000000000000000000000000000000009669111119149191004941110000000000000000
000000007777777700044ff507777775000000000000000000000000000000000000000000000000000000001991111111999911104441110000000000000000
00000000077777700777777400077777000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
00000000046556400077777700055566000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
0000000004f55f400004566500055565000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
0000000004f44f4000044fff07777775000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
0000000004f44f4000044fff00077777000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
00000000044ff440000044ff00055566000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
00000000004444000000444f00055566000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
00000000000440000000044400055566000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
00000000000000000000000077777775000000000000000011111111111111111111111111111111111111110000000000000000000000000000000000000000
0000000000000000000000000077777700000000000000000077770077777777aaaaaaaa3333333322d22dd20000000000000000000000000000000000000000
0000000000000000000000000005556600000000000000000077770099999999aa8aa8aa333333332dd22d220000000000000000000000000000000000000000
0000000000000000000000000000556600000000000000000007700077977977aaa88aaacccccccc22d22dd20000000000000000000000000000000000000000
0000000000000000000000000000556600000000000000000070070077977977aaa88aaacccccccc2dd22d220000000000000000000000000000000000000000
0000000000000000000000000000055500000000000000000007700099999999aa8aa8aa3333333322d22dd20000000000000000000000000000000000000000
0000000000000000000000000000005500000000000000000070070077777777aaaaaaaa333333332dd22d220000000000000000000000000000000000000000
00000000000000000000000000000000000000000000000011111111111111111111111111111111111111110000000000000000000000000000000000000000
00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000000000000000000000007776cccc00000000000000000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000000000000000000000007776cccc00000000000000000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000000000000000000000007776cccc00000000000000000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000000000000000000000007776cccc00000000000000000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000000000000000000000007776cccc00000000000000000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000000000000000000000007776cccc00000000000000000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000000000000000000000007776cccc00000000000000000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000000000000000000000007776cccc00000000000000000000000000000000000000000000000000000000
000000000000000000000000000000000000000000000000cccc6777777777777776cccc00000000000000000000000000000000000000000000000000000000
000000000000000000000000000000000000000000000000ccccc67777777777776ccccc00000000000000000000000000000000000000000000000000000000
000000000000000000000000000000000000000000000000cccccc677777777776cccccc00000000000000000000000000000000000000000000000000000000
000000000000000000000000000000000000000000000000ccccccc6666666666ccccccc00000000000000000000000000000000000000000000000000000000
000000000000000000000000000000000000000000000000cccccccccccccccccccccccc00000000000000000000000000000000000000000000000000000000
000000000000000000000000000000000000000000000000cccccccccccccccccccccccc00000000000000000000000000000000000000000000000000000000
000000000000000000000000000000000000000000000000cccccccccccccccccccccccc00000000000000000000000000000000000000000000000000000000
000000000000000000000000000000000000000000000000cccccccccccccccccccccccc00000000000000000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1
b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1
__map__
2727272727272727272727272727272727272727272727272727272727272727272727272727272727272727272727272727272727272727272727272727272727272727272727272727272727272727272727272727272727272727272727272727272727272727272727272727272727272727272727272727272727272727
3737373737373737373737373737373737373737373737373737373737373737373737373737373737373737373737373737373737373737373737373737373737373737373737373737373737373737373737373737373737373737373737373737373737373737373737373737373737373737373737373737373737373737
3f3f3f3f3f3f3f3f3f3f3f3f3f3f000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000909090909090900000000000000000000000000000000000000000000000000000000000000
3f3f3f1617171717171717183f3f000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
3f3f3f2627272727272727283f3f000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
3f3f3f3638262727272727283f3f000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
3f3f3f3f3f262727272727283f3f000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
3f3f3f3f3f262727272727283f3f000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
3f3f3f3f3f363737272728383f3f000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
3f3f3f3f3f373f26272728000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
0000000013101426272728370000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
0000000013101426272728000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
0000000013101436373738000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
0000001609100c0f000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
0000001310101014000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
0000001310101014000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
0000001310101014000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
0000001310101014000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
0000001310101014000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
0000001310101014000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
0000001811111115000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000