_Title "Bouncing Search Lights" 'started 2019-04-28 B+, continued by Petr to REAL TEXT SCREEN :-D 'continued by B+ with normal letter size :-))
' 2019-04-29 another variation
' 2019-04-29 now same as graphics mode!!! Thanks Petr!!!
'this really text mode??? ;-))
b$ = ""
txt
(i
) = b$: v
(i
) = Int(Rnd * 3) + 1balls = 15
Dim x
(balls
), y
(balls
), r
(balls
), c
(balls
), dx
(balls
), dy
(balls
), a
(balls
), rr
(balls
), gg
(balls
), bb
(balls
) r(i) = rand(10, 65)
x(i) = rand(r(i), xmax - r(i))
y(i) = rand(r(i), ymax - r(i))
c(i) = rand(1, 15)
dx(i) = rand(1, 5) * rdir
dy(i) = rand(1, 5) * rdir
rr(i) = rand(150, 255)
gg(i) = rand(150, 255)
bb(i) = rand(150, 255)
'ready for collision
power1 = (dx(i) ^ 2 + dy(i) ^ 2) ^ .5
imoved = 0
If Sqr((x
(i
) - x
(j
)) ^ 2 + (y
(i
) - y
(j
)) ^ 2) < r
(i
) + r
(j
) Then imoved = 1
a
(i
) = _Atan2(y
(i
) - y
(j
), x
(i
) - x
(j
)) a
(j
) = _Atan2(y
(j
) - y
(i
), x
(j
) - x
(i
)) 'update new dx, dy for i and j balls
power2 = (dx(j) ^ 2 + dy(j) ^ 2) ^ .5
power = (power1 + power2) / 2
dx
(i
) = power
* Cos(a
(i
)) dy
(i
) = power
* Sin(a
(i
)) dx
(j
) = power
* Cos(a
(j
)) dy
(j
) = power
* Sin(a
(j
)) x(i) = x(i) + dx(i)
y(i) = y(i) + dy(i)
x(j) = x(j) + dx(j)
y(j) = y(j) + dy(j)
x(i) = x(i) + dx(i)
y(i) = y(i) + dy(i)
If x
(i
) < r
(i
) Then dx
(i
) = -dx
(i
): x
(i
) = r
(i
) If x
(i
) > xmax
- r
(i
) Then dx
(i
) = -dx
(i
): x
(i
) = xmax
- r
(i
) If y
(i
) < r
(i
) Then dy
(i
) = -dy
(i
): y
(i
) = r
(i
) If y
(i
) > ymax
- r
(i
) Then dy
(i
) = -dy
(i
): y
(i
) = ymax
- r
(i
) fcirc x
(i
), y
(i
), rad
, _RGBA32(rr
(i
), gg
(i
), bb
(i
), 20)
txt
(i
) = Mid$(txt
(i
), v
(i
)) + Mid$(txt
(i
), 1, v
(i
) - 1) If i
Mod 2 Then midInk
60, 0, 0, 0, 0, 60, l
/ 80 Else midInk
0, 0, 60, 60, 0, 0, l
/ 80
_Dest 0 'redirecting to text screen
rand
= (Rnd * (hi
- lo
+ 1)) \
1 + lo
Radius
= Abs(R
): RadiusError
= -Radius: X
= Radius: Y
= 0 Line (CX
- X
, CY
)-(CX
+ X
, CY
), C
, BF
RadiusError = RadiusError + Y * 2 + 1
Line (CX
- Y
, CY
- X
)-(CX
+ Y
, CY
- X
), C
, BF
Line (CX
- Y
, CY
+ X
)-(CX
+ Y
, CY
+ X
), C
, BF
X = X - 1
RadiusError = RadiusError - X * 2
Y = Y + 1
Line (CX
- X
, CY
- Y
)-(CX
+ X
, CY
- Y
), C
, BF
Line (CX
- X
, CY
+ Y
)-(CX
+ X
, CY
+ Y
), C
, BF
Sub midInk
(r1%
, g1%
, b1%
, r2%
, g2%
, b2%
, fr##
) Color _RGB32(r1%
+ (r2%
- r1%
) * fr##
, g1%
+ (g2%
- g1%
) * fr##
, b1%
+ (b2%
- b1%
) * fr##
)