Play game
1k Roguelike's itch.io pageCompressed Bytes used
1024
Source Code (OPTIONAL)
function _init()
lvl=1vis=40
nl()
end
function nl()
sl={112,104,88,80}
sx=rnd(sl)
sy=rnd(sl)
x=24y=24es=2msg=0hp=3sv=0
el={}
wl={}
adde()
wt={72,56,32,96}
while #wt>3do
dx=rnd(wt)
dy=rnd(wt)
wa=8
wy=8
while wa<128 and wy<128 do
if wa==8 or wa==120 or wy==8 or wy==120 then
addw(wa,wy)
end
if (wy==dy and wa~=64 and wa!=16 and wa!=112)or(wa==dx and wy~=64) then
addw(wa,wy)
end
wa+=8
if wa>=128 then
wa=8
wy+=8
end
end
del(wt,dx)
end
end
function addw(aa,ss)
local w={
x=aa,
y=ss,
v=0
}
add(wl,w)
end
function adde()
local ec={64,48,80,40}
for i=1,es do
es-=1
local e={
x=rnd(ec),
y=rnd(ec),
hp=flr(rnd(3))+1
}
del(ec,e.x)
del(ec,e.y)
add(el,e)
end
end
function _update()
if (btnp(0))x-=8mv()
if (btnp(1))x+=8mv()
if (btnp(2))y-=8mv()
if (btnp(3))y+=8mv()
for p=1,#wl do
if (x==wl[p].x and y==wl[p].y) then
if btnp(0)then
x+=8
elseif btnp(1)then
x-=8
elseif btnp(2)then
y+=8
elseif btnp(3)then
y-=8
end
end
end
for q=1,#el do
if btnp(0)and (x==el[q].x and y==el[q].y)then
el[q].hp-=1
if el[q].hp>0 then
x+=8
hp-=1
end
elseif btnp(1) and (x==el[q].x and y==el[q].y)then
el[q].hp-=1
if el[q].hp>0 then
x-=8
hp-=1
end
elseif btnp(2) and (x==el[q].x and y==el[q].y)then
el[q].hp-=1
if el[q].hp>0 then
y+=8
hp-=1
end
elseif btnp(3) and (x==el[q].x and y==el[q].y)then
el[q].hp-=1
if el[q].hp>0 then
y-=8
hp-=1
end
end
end
if hp<=0 then
_init()
end
for e in all(el) do
if e.hp<=0 then
del(el,e)
end
end
if x==sx and y==sy then
if #el<=0 then
nl()
lvl+=1
if lvl==6 then
msg=2
end
else
msg=1
end
end
cls(1)
?"@",x,y,7
if dist(sx,x,sy,y)<=vis or sv==1 then
?"s",sx,sy,13
sv=1
end
for e in all(el) do
if dist(e.x,x,e.y,y)<=vis then
?"o",e.x,e.y,3
local mhp=e.hp*2
while mhp>0 do
pset(e.x+mhp-3,e.y-2,8)
mhp-=2
end
end
end
for w in all(wl) do
if dist(w.x,x,w.y,y)<=vis or w.v==1 then
?"#",w.x,w.y,5
w.v=1
end
end
?"hp"..hp.." lvl"..lvl,50,1,7
if msg==1 then
?"defeat enemies",50,50,7
elseif msg==2 then
?"win",50,50,7
end
end
function dist(x1,x,y1,y)
return abs(x1-x)+abs(y1-y)
end
function mv()
for e in all(el) do
local bx,by=0,0
if x<e.x then
bx-=8
elseif x>e.x then
bx+=8
else
bx+=0
end
if y<e.y then
by-=8
elseif y>e.y then
by+=8
else
by+=0
end
for h=1,#wl do
if e.x+bx==wl[h].x and e.y+by==wl[h].y then
bx=0
by=0
end
end
if not(e.x+bx==x and e.y+by==y) then
e.y+=by
e.x+=bx
end
end
end
Leave a comment
Log in with itch.io to leave a comment.
Comments
I love me a good roguelike. This is a nice throwback and it looks great for a 1K game!
I do feel like your chance of success is luck-based, mostly because your HP does not regenerate over time. This makes it difficult to rest up before taking on that last enemy and advance to the next level.
Then again, this is a 1K compo, and this is a lovely homage to a timeless game. Excellent!
Thanks for playing it!
I had lots of hopes to make it a little more well rounded but ran into that nasty 1k limit. Now that there's a compression optimizerthat was just released for this jam, I may take another pass at tweaking some things with this. I was really hoping to have enemies randomly drop healing potions to account for the HP difficulty.