-- bad snakes -- alexthescott -- 9/2/21
p={8,136,130,11,139,131,12,140,129} pal(p,1)
function new_snake(c) s={} -- assign global_color s.c=c -- assign start point s.d=rnd(4)\1 -- assign steps 'left' s.l=(rnd(32)\1)*2
-- top
if s.d==0 then
s.x=2*(rnd(64)\1)
s.y=0
s.dx=0
s.dy=1
-- right
elseif s.d==1 then
s.x=128
s.y=2*(rnd(64)\1)
s.dx=-1
s.dy=0
-- bottom
elseif s.d==2 then
s.x=2*(rnd(64)\1)
s.y=128
s.dx=0
s.dy=-1
else
-- left
s.x=0
s.y=2*(rnd(64)\1)
s.dx=1
s.dy=0
end
s.draw=function(self)
pset(self.x,self.y,self.c)
end
s.update=function(self)
if self.l==0 then
if abs(self.dx)==1 then
self.dx=0
self.dy=1+(-2*(rnd(2)\1))
else
self.dx=1+(-2*(rnd(2)\1))
self.dy=0
end
self.l=(rnd(32)\1)*2
else
self.l-=1
self.x+=self.dx
self.y+=self.dy
end
end
s.destroy=function(self)
if self.x<0 or self.x>129 or self.y<0 or self.y>129 then
del(snakes,self)
seen_snakes+=1
end
end
add(snakes,s)
end
function new_clear() local clr={} clr.i=0
clr.update=function(self)
self.i+=1
end
clr.draw=function(self)
line(self.i,0,self.i,128,0)
line(128-self.i,0,128-self.i,128,0)
end
clr.destroy=function(self)
if self.i>=65 then
del(screen_wipe,self)
end
end
add(screen_wipe,clr)
end
function burn() for p=0,256 do x=rnd(128)\1 y=rnd(128)\1 pc=pget(x,y) if pc!=0 and pc%3!=0 then if rnd(2)\1==0 then pset(x,y,pc+1) end end end end
screen_wipe={} global_color=1
snakes={} seen_snakes=0
-- setup title snakes for i=1,4 do new_snake(global_color) snakes[i].y=66 snakes[i].x=40+i*10 end
cls() ::♥:: if t()<2 then print("bad snakes",44,64,1) else burn()
if t()%0.25==0 then
for i=1,2 do
new_snake(global_color)
end
end
if seen_snakes>=64 then
if global_color==7 then
new_clear()
end
global_color+=3
global_color%=9
seen_snakes=0
end
for clr in all(screen_wipe) do
clr:draw()
clr:update()
clr:destroy()
end
for s in all(snakes) do
s:draw()
s:update()
s:destroy()
end
flip()
end goto ♥