Dark Bit Factory & Gravity

PROGRAMMING => Other languages => Yabasic => Topic started by: bikemadness on May 13, 2026

Title: Colliding Redux
Post by: bikemadness on May 13, 2026
But with the added feature of the

squares moving into place.

Code: [Select]
blox=40
dim x(blox)
dim y(blox)
dim x1(blox)
dim y1(blox)

for a=1 to blox
x(a)=int(ran(30))*20+20
y(a)=int(ran(23))*20+20
next a

for a=1 to blox
x1(a)=x(a)
y1(a)=y(a)
next a

xb=320
yb=256
r=5
b=5

xm=1
ym=1

sel=3

open window 640,512
repeat
setdrawbuf vm
vm=1-vm
setdispbuf vm
clear window

for a=1 to blox
rectangle x1(a)-b,y1(a)-b to x1(a)+b,y1(a)+b
next a

circle xb,yb,r
xb=xb+xm
yb=yb+ym
if xb<0+r or xb>640-r xm=-xm
if yb<0+r or yb>512-r ym=-ym

for a=1 to blox
if x1(a)>x(a) x1(a)=x1(a)-.25
if x1(a)<x(a) x1(a)=x1(a)+.25
if y1(a)>y(a) y1(a)=y1(a)-.25
if y1(a)<y(a) y1(a)=y1(a)+.25
next a

for a=1 to blox

if xb+r>x(a)-b and xb-r<x(a)+b and yb>y(a)-b and yb<y(a)+b then
xm=-xm

if sel=1 then
x(a)=int(ran(30))*20+20
y(a)=int(ran(23))*20+20
endif

if sel=2 then
x(a)=a*10+120
y(a)=256
endif

if sel=3 then
x(a)=420
y(a)=a*10+40
endif

if sel=4 then
row=row+1
if row>8 then
row=1
col=col+1
endif
x(a)=row*10+240
y(a)=col*10+100
endif

if sel=5 then
x(a)=cos((a)*(360/blox)*(pi/180))*240+320
y(a)=sin((a)*(360/blox)*(pi/180))*150+256
endif

endif

if yb+r>y(a)-b and yb-r<y(a)+b and xb>x(a)-b and xb<x(a)+b then
ym=-ym

if sel=1 then
x(a)=int(ran(30))*20+20
y(a)=int(ran(23))*20+20
endif

if sel=2 then
x(a)=a*10+120
y(a)=256
endif

if sel=3 then
x(a)=420
y(a)=a*10+40
endif

if sel=4 then
row=row+1
if row>8 then
row=1
col=col+1
endif
x(a)=row*10+240
y(a)=col*10+100
endif

if sel=5 then
x(a)=cos((a)*(360/blox)*(pi/180))*240+320
y(a)=sin((a)*(360/blox)*(pi/180))*150+256
endif

endif

next a

until (1=0)