Files
pico8/level_crawler/level_test.p8
2025-08-10 00:06:15 +02:00

194 lines
6.2 KiB
Lua
Raw Blame History

This file contains invisible Unicode characters

This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

pico-8 cartridge // http://www.pico-8.com
version 42
__lua__
entities={}
function _init()
maps[currentmap]:init()
end
function _update()
maps[currentmap]:update()
player:update()
for e in all(entities) do
e:update()
end
end
function _draw()
maps[currentmap]:draw()
player:draw()
for e in all(entities) do
e:draw()
end
end
-->8
--globals
--types
entity={
x=0,
y=0,
s=0,
w=8,
h=8,
ox=0,
oy=0,
draw=function(self)
spr(self.s,self.x*8,self.y*8)
end,
update=function(self)
end,
init=function(self)
end,
new=function(self,obj)
obj = obj or self
return setmetatable(obj, {__index=self})
end
}
maptype={
x=0,
y=0,
w=6,
h=8,
exits={
first={
x=3,
y=1,
s=3,
n="red",
px=3,
py=1
}
},
update=function(self)
for goal in all(self.exits) do
if player.x == goal.x and player.y ==goal.y then
player.x,player.y=goal.px,goal.py
currentmap=goal.n
maps[currentmap]:init()
end
end
end,
draw=function(self)
cls()
map(self.x,self.y,0,0,self.w,self.h)
camera(-64+self.w*8/2,-64+self.h*8/2)
printh("exits".. #self.exits)
for goal in all(self.exits) do
printh(goal)
spr(goal.s,goal.x*8,goal.y*8)
end
end,
init=function(self)
end,
new=function(self,obj)
local obj = obj or self
return setmetatable(obj, {__index=self})
end
}
--functions
function hit(obj, x, y)
return fget(mget(obj.x+x,obj.y+y),1)
end
-->8
--player
player=entity:new({
x=1,
y=1,
update=function(self)
if btnp() then
if not (hit(self,0,-1)) then
self.y-=1
end
end
if btnp() then
if not (hit(self,0,1)) then
self.y+=1
end
end
if btnp() then
if not (hit(self,-1,0)) then
self.x-=1
end
end
if btnp() then
if not (hit(self,1,0)) then
self.x+=1
end
end
end,
})
-->8
--maps
currentmap="red"
maps={
red=maptype:new({
exits={
{
x=3,
y=1,
s=3,
n="green",
px=3,
py=1
}
},
}),
green=maptype:new({
x=7,
y=0,
w=6,
h=8,
exits={
{
x=4,
y=4,
s=3,
n="red",
px=4,
py=4
}
},
})
}
__gfx__
00000000444444443333333300111110000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
00000000488888853bbbbbbd01100010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
00700700488888853bbbbbbd01000011000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
00077000488888853bbbbbbd01000001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
00077000488888853bbbbbbd01000001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
00700700488888853bbbbbbd01000001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
00000000488888853bbbbbbd01101111000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
0000000055555555dddddddd00110000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
0000000088d8888dbbdbbbbd00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
0000000088d8888dbbdbbbbd00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
00000000dd8dddd8ddbddddb00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
00000000d888d888dbbbdbbb00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
00000000d888d888dbbbdbbb00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
00000000dddddddddddddddd00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
000000008d888d88bdbbbdbb00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
000000008d888d88bdbbbdbb00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
__gff__
0002020000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
__map__
0101010101010002020202020200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
0111111111010002121212120200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
0111111111010002121212120200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
0111111111010002121212120200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
0111111111010002121212120200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
0111111111010002121212120200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
0101010101010002020202020200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000