'===========================================================================
' Subject: BOUNCING LINES                     Date: 06-28-96 (18:02)       
'  Author: Edward Blake                       Code: QB, QBasic, PDS        
'  Origin: eblake2@quebectel.com            Packet: EGAVGA.ABC
'===========================================================================
' 1996 Edward Blake, Bouncing lines similar to windows screen saver mystify
' But can be more customized, up to making a multicolor rectangle
' The constants below are for customizing.
DEFINT A-Z             ' Make em all integers! need speed!
CONST LINE1COL = 1     ' Line #1's color
CONST LINE2COL = 2     ' Line #2's color
CONST LINE3COL = 3     ' Line #3's color
CONST LINE4COL = 4     ' Line #4's color
CONST LINE1SCOL = 12   ' Line #1's interval color
CONST LINE2SCOL = 11   ' Line #2's interval color
CONST LINE3SCOL = 10   ' Line #3's interval color
CONST LINE4SCOL = 9    ' Line #4's interval color
CONST NUMLINES = 10    ' The "width" of the polygone
CONST INTERVALSCOL = 2 ' make Interval after N times of repainting polygone

DIM LASTLINEX(NUMLINES)
DIM LASTLINEY(NUMLINES)
DIM LASTLINEX2(NUMLINES)
DIM LASTLINEY2(NUMLINES)
DIM LASTLINEX3(NUMLINES)
DIM LASTLINEY3(NUMLINES)
DIM LASTLINEX4(NUMLINES)
DIM LASTLINEY4(NUMLINES)
SCREEN 12
XD = 1
YD = 2
XD2 = 3
YD2 = 4
XD3 = 5
YD3 = 6
XD4 = 7
YD4 = 8
X = 320
Y = 241
X2 = 320
Y2 = 241
CLS
DO
FOR I = 1 TO INTERVALSCOL
X = X + XD
Y = Y + YD
X2 = X2 + XD2
Y2 = Y2 + YD2
X3 = X3 + XD3
Y3 = Y3 + YD3
X4 = X4 + XD4
Y4 = Y4 + YD4
LINE (X, Y)-(X2, Y2), LINE1COL
LINE (X, Y)-(X4, Y4), LINE2COL
LINE (X2, Y2)-(X3, Y3), LINE3COL
LINE (X3, Y3)-(X4, Y4), LINE4COL
IF X >= 640 THEN XD = -INT(RND * 5)
IF X <= 0 THEN XD = INT(RND * 5)
IF Y >= 480 THEN YD = -INT(RND * 5)
IF Y <= 0 THEN YD = INT(RND * 5)
IF X2 >= 640 THEN XD2 = -INT(RND * 5)
IF X2 <= 0 THEN XD2 = INT(RND * 5)
IF Y2 >= 480 THEN YD2 = -INT(RND * 5)
IF Y2 <= 0 THEN YD2 = INT(RND * 5)
IF X3 >= 640 THEN XD3 = -INT(RND * 5)
IF X3 <= 0 THEN XD3 = INT(RND * 5)
IF Y3 >= 480 THEN YD3 = -INT(RND * 5)
IF Y3 <= 0 THEN YD3 = INT(RND * 5)
IF X4 >= 640 THEN XD4 = -INT(RND * 5)
IF X4 <= 0 THEN XD4 = INT(RND * 5)
IF Y4 >= 480 THEN YD4 = -INT(RND * 5)
IF Y4 <= 0 THEN YD4 = INT(RND * 5)
LASTLINEX(NUMLINES) = X
LASTLINEY(NUMLINES) = Y
LASTLINEX2(NUMLINES) = X2
LASTLINEY2(NUMLINES) = Y2
LASTLINEX3(NUMLINES) = X3
LASTLINEY3(NUMLINES) = Y3
LASTLINEX4(NUMLINES) = X4
LASTLINEY4(NUMLINES) = Y4
FOR T = 0 TO NUMLINES - 1
LASTLINEX(T) = LASTLINEX(T + 1)
LASTLINEY(T) = LASTLINEY(T + 1)
LASTLINEX2(T) = LASTLINEX2(T + 1)
LASTLINEY2(T) = LASTLINEY2(T + 1)
LASTLINEX3(T) = LASTLINEX3(T + 1)
LASTLINEY3(T) = LASTLINEY3(T + 1)
LASTLINEX4(T) = LASTLINEX4(T + 1)
LASTLINEY4(T) = LASTLINEY4(T + 1)
NEXT T
LINE (LASTLINEX(0), LASTLINEY(0))-(LASTLINEX2(0), LASTLINEY2(0)), 0
LINE (LASTLINEX(0), LASTLINEY(0))-(LASTLINEX4(0), LASTLINEY4(0)), 0
LINE (LASTLINEX2(0), LASTLINEY2(0))-(LASTLINEX3(0), LASTLINEY3(0)), 0
LINE (LASTLINEX3(0), LASTLINEY3(0))-(LASTLINEX4(0), LASTLINEY4(0)), 0
NEXT I
LINE (X, Y)-(X2, Y2), LINE1SCOL
LINE (X, Y)-(X4, Y4), LINE2SCOL
LINE (X2, Y2)-(X3, Y3), LINE3SCOL
LINE (X3, Y3)-(X4, Y4), LINE4SCOL
LOOP
