diff --git a/.DS_Store b/.DS_Store index db1bcd7..1e1c0cf 100644 Binary files a/.DS_Store and b/.DS_Store differ diff --git a/16.p8l b/16.p8l new file mode 100644 index 0000000..825557b --- /dev/null +++ b/16.p8l @@ -0,0 +1,44 @@ +48 +48 +48 +48 +48 +48 +48 +48 +48 +48 +48 +48 +48 +48 +48 +48 +48 +48 +48 +48 +48 +48 +48 +48 +48 +48 +48 +48 +48 +48 +48 +48 +48 +48 +48 +48 +48 +48 +48 +48 +48 +48 +48 +48 diff --git a/24.p8l b/24.p8l new file mode 100644 index 0000000..ac65815 --- /dev/null +++ b/24.p8l @@ -0,0 +1,12 @@ +40 +40 +40 +40 +40 +40 +40 +40 +40 +40 +40 +40 diff --git a/25.p8l b/25.p8l new file mode 100644 index 0000000..f3e7364 --- /dev/null +++ b/25.p8l @@ -0,0 +1,28 @@ +48 +48 +48 +48 +48 +48 +48 +48 +48 +48 +48 +48 +48 +48 +48 +48 +48 +48 +48 +48 +48 +48 +48 +48 +48 +48 +48 +48 diff --git a/26.p8l b/26.p8l new file mode 100644 index 0000000..087a332 --- /dev/null +++ b/26.p8l @@ -0,0 +1,21 @@ +48 +48 +48 +48 +48 +48 +48 +48 +48 +48 +48 +48 +48 +48 +48 +48 +48 +48 +48 +48 +48 diff --git a/level_crawler/level_test.p8 b/level_crawler/level_test.p8 new file mode 100644 index 0000000..5f20742 --- /dev/null +++ b/level_crawler/level_test.p8 @@ -0,0 +1,193 @@ +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 diff --git a/level_crawler/readme.md b/level_crawler/readme.md new file mode 100644 index 0000000..a75d63e --- /dev/null +++ b/level_crawler/readme.md @@ -0,0 +1,8 @@ +# levelcrawler + +tldr it's a poc to move from level to level only drawing partial data from the map + +This is kindof like a test to make a dungeon crawler type thing with a map? +Basically i wanted to only draw parts of the map and have level transitions, so that's what i did so far :p + + diff --git a/lou/lou.p8 b/lou/lou.p8 index d643f6d..f8cbc93 100644 --- a/lou/lou.p8 +++ b/lou/lou.p8 @@ -32,8 +32,8 @@ function _update() -- wsong() async(function() while true do - poke(rnd(0x6000),rnd(0x00ff)) - poke(rnd(0x6000),rnd(0x00ff)) + poke(rnd(0x6000),rnd(0xf)) +-- poke(rnd(0x6000),rnd(0xf)) yield() end end) diff --git a/smbreplay.p8 b/smbreplay.p8 new file mode 100644 index 0000000..b25a7ae --- /dev/null +++ b/smbreplay.p8 @@ -0,0 +1,449 @@ +pico-8 cartridge // http://www.pico-8.com +version 42 +__lua__ +function _init() + + for i=0,20 do + printh("") + end + + printh("init") +end + +function _update60() + if statechange then + statechange=false + states[state]:init() + end + states[state]:update() + +end + +function _draw() + states[state]:draw() + for r in all(states[state].routines) do + if costatus(r) == "dead" then + del(states[state].routines,r) + else + assert(coresume(r)) + end + end +end +-->8 +--globals +--global environment +global=_ENV + +--timer +tim=0 + +--class +class=setmetatable({ + new=function(_ENV,tbl) + tbl=setmetatable(tbl or {},{ + __index=_ENV + }) + + tbl:init() + + return tbl + end, + init=function()end +},{__index=_ENV}) + + +--states +state="intro" +statechange=true +states={ +--state.intro +intro={ + init=function(self) + self.x=45 + self.y=128 + self.intro=cocreate(function() + for i=80,30,-1 do + self.y=i + yield() + end + end) + end, + update=function(self) + if btnp(🅾️) then + statechange=true + state="gameplay" + end + if costatus(self.intro)!="dead" then + coresume(self.intro) + end + + end, + draw=function(self) + cls() + cursor(self.x,self.y) + print("welcome!") + print("⬅️ left") + print("➡️ right") + print("❎ jump") + print("🅾️ reset") + print("press 🅾️ to continue") + end +}, +--state.gameplay +gameplay={ + routines={}, --todo add death anims + init=function() + pl = player:new() + tim=time() + pl.x,pl.y=maps[currentmap]:init() + add(entities,pl) + end, + update=function() + buttons=btn() + for entity in all(entities) do + entity:update() + end + end, + draw=function() + cls() + maps[currentmap]:draw() + for e in all(entities) do + e:draw() + end + cursor(0,100) + color(7) + print("time:"..time()-tim) + print("attempts:"..count(replays)) + + end +}, +--state.replay +replay={ + routines={}, + init=function(self) + printh(#replays) + + end, + update=function(self) + for entity in all(entities) do + entity:update() + + end + if #entities==0 then + entities={} + printh("replays:"..#replays) + for a in all(replays) do + t={} + for item in all(a) do + add(t,item) + end + rep=replayer:new({actions=t,c=rnd(16)}) + rep.x,rep.y=maps[currentmap]:init() + add(entities,rep) + end + end + end, + draw=function(self) + cls() + maps[currentmap]:draw() + for e in all(entities) do + e:draw() + end + cursor(10,100) + print("you won! in only "..#replays.." attempts!") + print("press 🅾️ to go to next level") + + end, + +} +} + +--entity +entity=class:new({ +x=1, +y=1, +w=8, +h=8, +routines={}, +actions={}, +}) +entities={} + +--btn +buttons=0 + +--replays +replays={} + +--gravity +gravity=.2 + +--helper functions +function hitx(e) + fl=0 + for x=0,e.w do + x1,y1,y2=(e.x+x)/8,e.y-1/8,(e.y+e.h-1)/8 + fl=fl|fget(mget(x1,y1))|fget(mget(x1,y2)) + end + return fl +end + +function hity(e) + fl=0 + for y=0,e.h do + x1,x2,y1=e.x/8,(e.x+e.w)/8,(e.y+y)/8 + fl=fl|fget(mget(x1,y1))|fget(mget(x2,y1)) + end + return fl +end + +function hitbottom(obj) + fl=0 + for x=0,obj.w,obj.w do + x1,y1=(obj.x+x)/8,(obj.y+obj.h+1)/8 --1 below + fl=fl|fget(mget(x1,y1)) + end + return (fl==1) +end + +--restart(win?,actions) +function restart(w,obj) + add(replays,obj.actions) + if w then + sfx(10,1) + entities={} + tim=time() + for a in all(replays) do + t={}--this is necessary because it otherwise stores a ref, not a clone + for item in all(a) do + add(t,item) + end + rep=replayer:new({actions=t,c=rnd(16)}) + rep.x,rep.y=maps[currentmap]:init() + add(entities,rep) + end + state="replay" + statechange=true + else + sfx(9) + add(states[state].routines,cocreate(function() + a={16,16,32,32,48,48,48} + bx,by=obj.x,obj.y + for x in all(a) do + printh(bx) + spr(x,bx,by) + yield() + end + end)) + entities,tim={},time() + sx,sy=maps[currentmap]:init() + add(entities,player:new({actions={},x=sx,y=sy})) + + end +end + + +-->8 +--characters + +--npc +npc=entity:new({ + spd=.5, + s=0,--sprite + v=.5, + c=8, + f=false, + update=function(_ENV) + end, + draw=function(_ENV) + pal(8,c) + spr(s,x-(8-w)/2,y-(8-h)/2,1,1,f) + pal() + end + +}) + +player=npc:new({ + x=6, + y=6, + s=0, + yv=0, + xv=0, +-- w=6, +-- h=6, + j=3, --jump height + friction=.5, + actions={}, + update=function(self) +-- self.xv,self.yv=0,0 --l,r,u,d + self.xv*=self.friction + self:grav() + self:move() + self.x+=self.xv + self.y+=self.yv + if (self.xv>0) self.f=false + if (self.xv<0) self.f=true + end, + grav=function(self) + self.yv+=gravity + end, + jump=function(self) + if (hitbottom(self)) then + sfx(8,-1,0,rnd(16)) + self.yv-=self.j + end + end, + move=function(self) + local b=global.buttons + if ((b&0b0001)!=0) self.xv-=self.v + if ((b&0b0010)!=0) self.xv+=self.v + if ((b&0x10)!=0) self:jump() + if (btnp(❎)) restart(false,self) + t=player:new({x=self.x+self.xv,y=self.y+self.yv}) + fx,fy=hitx(t),hity(t) + if (((fx|fy)&0x4)!=0) restart(false,self) + if (((fx|fy)&0x2)!=0) restart(true,self) +-- if ((fx&0x1)!=0) self.xv=0 + if ((fy&0x1)!=0) self.yv=0 + + add(self.actions,b) + end +}) + +replayer=player:new({ + i=1, + alive=true, + c=8, + move=function(self) + local b = self.actions[1] or 0x0 + if ((b&0x1)!=0) self.xv-=self.v + if ((b&0x2)!=0) self.xv+=self.v + if ((b&0x10)!=0) self:jump() + + t=player:new({x=self.x+self.xv,y=self.y+self.yv}) + fx,fy=hitx(t),hity(t) + if ((fx&0x1)!=0) self.xv=0 + if ((fy&0x1)!=0) self.yv=0 + deli(self.actions,1) + if (#self.actions==0) then + del(entities,self) + sfx(9) + end + + end +}) +-->8 +--maps +maps={ +forrest={ +x=0, +y=0, +pl={}, +init=function(self) + map(self.x,self.y) + for x=0,15 do + for y=0,15 do + if (mget(x,y)==0) then + px,py=x*8,y*8 + end + end + end + return px,py +end, +draw=function(self) + pal(pl) + map(self.x,self.y) + + for x=0,128,8 do + for y=0,128,8 do + if fget(mget(x/8,y/8),0x0) then + if (not fget(mget(x/8,y/8-1),0x0)) then + sspr(16,8,8,2,x,y) + end + end + end + end +end, +} +} +currentmap="forrest" +__gfx__ +000000008888888855555555eeeeeeee000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000008888888855555555eeeeeeee000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +088888808888888855555555eeeeeeee000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +088080808888888855555555eeeeeeee000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +088080808888888855555555eeeeeeee000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +088888808888888855555555eeeeeeee000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +088888808888888855555555eeeeeeee000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +008008008888888855555555eeeeeeee000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +0000000000000000b3bb33bb00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +00000000000075503b00000b00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +00000000000005c00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +00080000000005500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +0000800000000bb00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +0000000000008b800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +00000000000080800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +00008000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +00008000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +00888080000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +00080000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +00000000000000009999999900000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +00000000000000009999999900000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +00800800000000009999999900000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +00808000000000009999999900000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +00088800000000009999999900000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +00808000000000009999999900000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +00008800000000009999999900000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +00000000000000009999999900000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +__gff__ +0004010200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +__map__ +2222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222220000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +2222222222222222220222222222032222222222222222222222222222222222222222222222222222222222222222222222222222220000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +2222222222222222220222222222222222222222222222222222222222222222222222222222222222222222222222222222222222220000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +2222222222020222220222222222222222220222222222222222222222222222222222222222222222222222222222222222222222220000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +2222222222220222220222022222222222222222222222222222222222222222222222222222222222222222222222222222222222220000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +2222222202220222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222220000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +2222222222220222222222222202222222222222222222222222222222222222222222222222222222222222222222222222222222220000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +0222222222220222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222220000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +0022220222220222022222022222222222222222222222222222222222222222222222222222222222222222222222222222222222220000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +2222222222220222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222220000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +0022022222220222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222220000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +0202020202020201010101010101010102222222222222222222222222222222222222222222222222222222222222222222222222220000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +2222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222220000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +2222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222220000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +2222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222220000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +2222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222220000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +2222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222220000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +2222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222220000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +2222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222220000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +2222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222220000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +2222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222220000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +2222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222220000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +2222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222220000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +2222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222220000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +2222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222220000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +2222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222220000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +2222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222220000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +2222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222220000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +2222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222220000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +2222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222220000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +2222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222220000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +__sfx__ +000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +0001000029050340502f0502505016050090500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +0004000017750097500c750157502c750147501475014750057500a75005750057500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000500001a2501e2501f2502325000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 diff --git a/untitled.p8 b/untitled.p8 new file mode 100644 index 0000000..0314200 --- /dev/null +++ b/untitled.p8 @@ -0,0 +1,147 @@ +pico-8 cartridge // http://www.pico-8.com +version 42 +__lua__ +function _init() + add(entities,player:new()) + for i=0,20 do + printh("") + end +end + +function _update60() + b=btn() + for e in all(entities) do + e:update() + end +end + +function _draw() + cls() + map() + for e in all(entities) do + e:draw() + + end + +end +-->8 +--globals +--global environment +global=_ENV + +--class +class=setmetatable({ + new=function(_ENV,tbl) + tbl=setmetatable(tbl or {},{ + __index=_ENV + }) + + tbl:init() + + return tbl + end, + init=function()end +},{__index=_ENV}) + + +--entity +entity=class:new({ +x=1, +y=1, +w=8, +h=8 +}) +entities={} + +--btn +b=0 + +--helper functions +function hitx(e) + fl=0 + for x=0,e.w do + x1,y1,y2=(e.x+x)/8,e.y/8,(e.y+e.h)/8 + fl=fl|fget(mget(x1,y1))|fget(mget(x1,y2)) + end + return fl +end + +function hity(e) + fl=0 + for y=0,e.h do + x1,x2,y1=e.x/8,(e.x+e.w)/8,(e.y+y)/8 + fl=fl|fget(mget(x1,y1))|fget(mget(x2,y1)) + end + return fl +end +-->8 +--npc +npc=entity:new({ + spd=.5, + s=0,--sprite + + update=function(_ENV) + + end, + draw=function(_ENV) + + spr(s,x,y) + end + +}) + +player=npc:new({ + x=6, + y=6, + s=0, + update=function(self) +-- hit(self) + b=global.b + xv,yv=0,0 + --left,right,up,down + if ((b & 0x1)!=0) xv-=1 + if ((b&0x2)!=0) xv+=1 + if ((b&0x4)!=0) yv-=1 + if ((b&0x8)!=0) yv+=1 + if xv!=0 or yv!=0 then +-- if (hity(player:new({y=self.y+yv}))) self.y+=yv +-- if hit(player:new({ +-- x=self.x+xv, +-- y=self.y+yv +-- })) then +-- printh("hit") +-- else +-- if (hitx(player:new({x=self.x+xv}))) printh("x?") + t=player:new({x=self.x+xv,y=self.y+yv}) + fx=hitx(t) --flags x + fy=hity(t) --flags y + if ((fx&0x1)==0) self.x+=xv + if ((fy&0x1)==0) self.y+=yv + end + end +}) +__gfx__ +0000000088888888cccccccceeeeeeee000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +0000000088888888cccccccceeeeeeee000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +0070070088888888cccccccceeeeeeee000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +0007700088888888cccccccceeeeeeee000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +0007700088888888cccccccceeeeeeee000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +0070070088888888cccccccceeeeeeee000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +0000000088888888cccccccceeeeeeee000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +0000000088888888cccccccceeeeeeee000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +__gff__ +0000010200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +__map__ +0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +0000000000000200000000000000000000000200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +0000000000000300000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +0000000002000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000