Genuary 2023 Day 18 - Definitely not a grid

January 18, 2023
pico-8 open-source
Genuary 2023 Day 18 - Definitely not a grid
-- genuary #18 2023
-- definitely not a grid
-- by carson kompon
worms={}
paths={}

pal({[0]=4,132,128,0},1)

for i=1,16 do
	local dir=(rnd(4)\1)/4
	local tmrmax=3+rnd(3)
	add(worms,{
		x=rnd(128),
		y=rnd(128),
		dir=dir,
		dirto=dir,
		spd=0.25+rnd(.75),
		tmr=tmrmax+rnd(6)-3,
		tmrmax=tmrmax,
		turnspd=0.25/30
	})
end

::_::
	cls()
	
	for p in all(paths) do
		p.c-=rnd(1/30)
		local pc=ceil(p.c)
		circfill(p.x,p.y,1,pc)
		if(pc<=0)del(paths,p)
	end
	
	for c in all(worms) do
		c.x=(c.x+cos(c.dir)*c.spd)%128
		c.y=(c.y+sin(c.dir)*c.spd)%128
		c.tmr-=1/30
		if c.tmr<=0 then
			c.dirto+=rnd({-.25,.25})
			c.tmr=c.tmrmax
		end
		if c.dir~=c.dirto then
			c.dir+=c.turnspd*sgn(c.dirto-c.dir)
			if abs(c.dir-c.dirto)<=.01 then
				c.dir=c.dirto
			end
		end
		add(paths,{
			x=c.x,y=c.y,
			c=2
		})
	end
	
	flip()
goto _