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