home *** CD-ROM | disk | FTP | other *** search
GW-BASIC | 1992-12-04 | 2.1 KB | 54 lines |
- 100 ' Kaleidoscope
- 110 '
- 120 ' Judson D. McClendon
- 130 ' 329 37th Court N.E.
- 140 ' Birmingham, AL 35215
- 150 '
- 160 DEFINT A-Z ' Use Integer variables for speed
- 170 RANDOMIZE TIMER ' Initialize random number generator
- 180 XP = 640: YP = 350 ' Width (X) and height (Y) of screen in pixels
- 190 XF = 64: YF = 35 ' Aspect factors (XP & YP reduced by their GCD)
- 200 CX = XP / 2 ' Center X coordinate
- 210 CY = YP / 2 ' Center Y coordinate
- 220 MY = CY - 1 ' Maximum Y value
- 230 NC = 16 ' Number of available colors
- 240 VR = 5
- 250 VS = 2
- 260 SCREEN 9 ' EGA graphics screen 640x350 with 16 colors
- 270 ' Main Loop
- 280 CLS
- 290 X1 = RND * MY + 1 ' Select random line end points
- 300 Y1 = RND * X1
- 310 X2 = RND * MY + 1
- 320 Y2 = RND * X2
- 330 ' Screen Loop
- 340 XV1 = RND * VR - VS ' Select random endpoint velocities
- 350 YV1 = RND * VR - VS ' Keep VR = (VS * 2 + 1)
- 360 XV2 = RND * VR - VS
- 370 YV2 = RND * VR - VS
- 380 HC = RND * 16 ' Select random line color
- 390 ' Line Loop
- 400 XA = X1 * XF / YF ' Adjust X endpoints for screen X/Y ratio
- 410 XB = X2 * XF / YF
- 420 YA = Y1 * XF / YF
- 430 YB = Y2 * XF / YF
- 440 ' Reflect line horizontally & vertically
- 450 LINE (CX + XA, CY - Y1)-(CX + XB, CY - Y2), HC
- 460 LINE (CX - XA, CY + Y1)-(CX - XB, CY + Y2), HC
- 470 LINE (CX + XA, CY + Y1)-(CX + XB, CY + Y2), HC
- 480 LINE (CX - XA, CY - Y1)-(CX - XB, CY - Y2), HC
- 490 ' Reflect again exchanging X & Y coordinates
- 500 LINE (CX + YA, CY - X1)-(CX + YB, CY - X2), HC
- 510 LINE (CX - YA, CY + X1)-(CX - YB, CY + X2), HC
- 520 LINE (CX + YA, CY + X1)-(CX + YB, CY + X2), HC
- 530 LINE (CX - YA, CY - X1)-(CX - YB, CY - X2), HC
- 540 ' Move endpoints
- 550 X1 = (X1 + XV1) MOD MY
- 560 Y1 = (Y1 + YV1) MOD MY
- 570 X2 = (X2 + XV2) MOD MY
- 580 Y2 = (Y2 + YV2) MOD MY
- 590 IF (RND * 30 > 1) THEN GOTO 390
- 600 IF (INKEY$ = CHR$(27)) THEN SCREEN 0: END ' Exit on Escape
- 610 IF (RND * 100 > 1) THEN GOTO 330
- 620 GOTO 270
-