home *** CD-ROM | disk | FTP | other *** search
- ' The following is a rewrite of the "Walking Lines" code from a Byte Magazine
- ' article in 1981. Several QuickBasic 4.5 lines were added... ACMEWare(i)
-
- '$DYNAMIC
- ON ERROR GOTO errorp
- DEFINT A-Z
- DIM lines(0, 0)
- DEF FNRAND (LIMIT) = INT(RND(1) * LIMIT) + 1
- RANDOMIZE VAL(RIGHT$(TIME$, 2))
-
- cmd$ = COMMAND$
- SELECT CASE LEFT$(LCASE$(cmd$), 3)
- CASE "vga"
- cmd$ = MID$(cmd$, 4)
- sss = 12
- www = 640
- hhh = 480
- ttt = 15
- CASE "ega"
- cmd$ = MID$(cmd$, 4)
- sss = 9
- www = 640
- hhh = 350
- ttt = 15
- CASE "cga"
- cmd$ = MID$(cmd$, 4)
- sss = 1
- www = 320
- hhh = 200
- ttt = 3
- CASE "herc"
- cmd$ = MID$(cmd$, 5)
- sss = 3
- www = 720
- hhh = 348
- ttt = 1
- CASE ELSE
- PRINT
- REM xxxxxxxxxxxxxxx
- PRINT "Lines v1.0 ";
- PRINT "ACMEWare - IdeaRight(i) 1991 Free Software Programmers Foundation"
- PRINT
- PRINT " Usage: lines [herc|cga|ega|vga] {number of trailing lines}"
- END
- END SELECT
-
- IF VAL(cmd$) > 0 THEN
- tot = VAL(cmd$) ' number of lines
- ELSE
- tot = 15
- END IF
- REDIM lines(tot, 4)
-
- SCREEN sss, 0 ' 9 (ega) or 12 (vga)
-
- X1 = FNRAND(www) - 1
- Y1 = FNRAND(hhh) - 1
- DX1 = FNRAND(11) - 6
- DY1 = FNRAND(11) - 6
- X2 = FNRAND(www) - 1
- Y2 = FNRAND(hhh) - 1
- DX2 = FNRAND(11) - 6
- DY2 = FNRAND(11) - 6
-
- TINT = 1
- IX = 0 ' index into lines
- CNT = 0 ' counter of lines
-
- DO
- CHGCNT = FNRAND(255)
-
- here:
- IF INKEY$ <> "" THEN END
- LINE (X1, Y1)-(X2, Y2), TINT
- IX = (IX + 1) MOD tot
- IF CNT = tot THEN
- LINE (lines(IX, 0), lines(IX, 1))-(lines(IX, 2), lines(IX, 3)), B
- END IF
- lines(IX, 0) = X1
- lines(IX, 1) = Y1
- lines(IX, 2) = X2
- lines(IX, 3) = Y2
- IF CNT < tot THEN CNT = CNT + 1
- CHGCNT = CHGCNT - 1
- X1 = X1 + DX1: IF X1 < 0 OR X1 >= www THEN DX1 = -DX1: X1 = X1 + DX1
- Y1 = Y1 + DY1: IF Y1 < 0 OR Y1 >= hhh THEN DY1 = -DY1: Y1 = Y1 + DY1
- X2 = X2 + DX2: IF X2 < 0 OR X2 >= www THEN DX2 = -DX2: X2 = X2 + DX2
- Y2 = Y2 + DY2: IF Y2 < 0 OR Y2 >= hhh THEN DY2 = -DY2: Y2 = Y2 + DY2
- IF CHGCNT > 0 GOTO here
- ' X1 = FNRAND(www) - 1: Y1 = FNRAND(hhh) - 1 ' these two lines give
- ' X2 = FNRAND(www) - 1: Y2 = FNRAND(hhh) - 1 ' you multiple lines...
- DX1 = FNRAND(11) - 6: DY1 = FNRAND(11) - 6
- DX2 = FNRAND(11) - 6: DY2 = FNRAND(11) - 6
- TINT = ((TINT + 1) MOD ttt) + 1
- LOOP
- END
-
- errorp:
- PRINT "Error! Out of memory or bad video mode."
- END
-
-