alexthescott.random paint drop

-- random paint drop
-- alexthescott
-- 9/27/21 8:38am

-- new seed every day of the year
srand(31*stat(81)+stat(82))

function new_wave(d,c)
	w={}
	w.init=function(self)
		for p=1,128 do
			add(self.points,p)
		end
	end
	w.c=c
	w.d=d
	w.points={}
	w.step=0
	w:init()
	
	w.draw=function(self)
		if self.d==0 then
			for p in all(self.points) do
				pset(p,self.step,self.c)
			end
		elseif self.d==1 then
			for p in all(self.points) do
				pset(128-self.step,p,self.c)
			end
		elseif self.d==2 then
			for p in all(self.points) do
				pset(p,128-self.step,self.c)
			end
		elseif self.d==3 then
			for p in all(self.points) do
				pset(self.step,p,self.c)
			end
		end
	end
	
	w.update=function(self)
		move=1+(.75*(#self.points/32)\1)
		
		if #self.points>=move then
			for i=1,move do
				self.step+=1
				rnd_index=rnd(#self.points)\1
				del(self.points,self.points[rnd_index])
				self:draw()
			end
		end
	end
	
	return w
end

month=stat(81)
day=stat(82)
col_count=1
col=7
wave=new_wave(rnd(4)\1,col)

_set_fps(60)

cls()
::♥::
if t()<2 then
	print("random paint drop",30,59,7)
	print(month.."/"..day,55,65)
else
	wave:draw()
	wave:update()
	
	if #wave.points<=1 then
		local d=wave.d
		d+=1
		d%=4
		col_count+=1
		if col_count>=4 then
			col_count=1
			col= col==7 and 0 or 7
		end
		wave=new_wave(d,col)
	end
end
flip()
goto ♥