'===========================================================================
' Subject: BOUNCING BALLS                     Date: 06-21-96 (11:24)       
'  Author: John Wantland                      Code: QB, QBasic, PDS        
'  Origin: kwantlan@coffey.com              Packet: EGAVGA.ABC
'===========================================================================
REM bouncing balls
' I came up with the idea for this while working on a program to
' bounce balls on the screen. I accidently deleted the erasing line, and
' presto. Worms!
RANDOMIZE TIMER
n = 2              'number of worms works best with no more than five
DIM y(n)
DIM x(n)
DIM d(n)
DIM m(n)
DIM c(n)
FOR i = 1 TO n
x(i) = INT(RND * 600 + 40)
y(i) = INT(RND * 440 + 40)
d(i) = INT(RND * 2 + 1)
m(i) = INT(RND * 2 + 1)
1 c(i) = INT(RND * 15 + 1): IF c = 1 THEN 1
NEXT i
SCREEN 12: CLS
DO
FOR i = 1 TO n
' erase the apostrophe to make balls instead of worms
' PAINT (x(i), y(i)), 0
c(i) = c(i) + 1: IF c(i) > 15 THEN c(i) = 2
IF d(i) = 1 THEN y(i) = y(i) - 1
IF d(i) = 2 THEN y(i) = y(i) + 1
IF m(i) = 1 THEN x(i) = x(i) - 1
IF m(i) = 2 THEN x(i) = x(i) + 1
IF y(i) < 11 THEN d(i) = 2
IF y(i) > 469 THEN d(i) = 1
IF x(i) < 11 THEN m(i) = 2
IF x(i) > 629 THEN m(i) = 1
CIRCLE (x(i), y(i)), 10, c(i)  '10 is size Change if you want
PAINT (x(i), y(i)), c(i)
a$ = INKEY$: IF a$ <> "" THEN END
NEXT i
LOOP
