home *** CD-ROM | disk | FTP | other *** search
/ Power-Programmierung / CD1.mdf / basic / library / gwbasic / unprotec / test.bas (.txt) < prev   
Encoding:
GW-BASIC  |  1992-12-04  |  2.1 KB  |  54 lines

  1. 100  ' Kaleidoscope
  2. 110  '
  3. 120  ' Judson D. McClendon
  4. 130  ' 329 37th Court N.E.
  5. 140  ' Birmingham, AL 35215
  6. 150  '
  7. 160  DEFINT A-Z             ' Use Integer variables for speed
  8. 170  RANDOMIZE TIMER        ' Initialize random number generator
  9. 180  XP = 640: YP = 350     ' Width (X) and height (Y) of screen in pixels
  10. 190  XF = 64: YF = 35       ' Aspect factors (XP & YP reduced by their GCD)
  11. 200  CX = XP / 2            ' Center X coordinate
  12. 210  CY = YP / 2            ' Center Y coordinate
  13. 220  MY = CY - 1            ' Maximum Y value
  14. 230  NC = 16                ' Number of available colors
  15. 240  VR = 5
  16. 250  VS = 2
  17. 260  SCREEN 9               ' EGA graphics screen 640x350 with 16 colors
  18. 270  ' Main Loop
  19. 280    CLS
  20. 290    X1 = RND * MY + 1    ' Select random line end points
  21. 300    Y1 = RND * X1
  22. 310    X2 = RND * MY + 1
  23. 320    Y2 = RND * X2
  24. 330    ' Screen Loop
  25. 340      XV1 = RND * VR - VS  ' Select random endpoint velocities
  26. 350      YV1 = RND * VR - VS  ' Keep VR = (VS * 2 + 1)
  27. 360      XV2 = RND * VR - VS
  28. 370      YV2 = RND * VR - VS
  29. 380      HC = RND * 16        ' Select random line color
  30. 390      ' Line Loop
  31. 400        XA = X1 * XF / YF    ' Adjust X endpoints for screen X/Y ratio
  32. 410        XB = X2 * XF / YF
  33. 420        YA = Y1 * XF / YF
  34. 430        YB = Y2 * XF / YF
  35. 440                             ' Reflect line horizontally & vertically
  36. 450        LINE (CX + XA, CY - Y1)-(CX + XB, CY - Y2), HC
  37. 460        LINE (CX - XA, CY + Y1)-(CX - XB, CY + Y2), HC
  38. 470        LINE (CX + XA, CY + Y1)-(CX + XB, CY + Y2), HC
  39. 480        LINE (CX - XA, CY - Y1)-(CX - XB, CY - Y2), HC
  40. 490                             ' Reflect again exchanging X & Y coordinates
  41. 500        LINE (CX + YA, CY - X1)-(CX + YB, CY - X2), HC
  42. 510        LINE (CX - YA, CY + X1)-(CX - YB, CY + X2), HC
  43. 520        LINE (CX + YA, CY + X1)-(CX + YB, CY + X2), HC
  44. 530        LINE (CX - YA, CY - X1)-(CX - YB, CY - X2), HC
  45. 540                             ' Move endpoints
  46. 550        X1 = (X1 + XV1) MOD MY
  47. 560        Y1 = (Y1 + YV1) MOD MY
  48. 570        X2 = (X2 + XV2) MOD MY
  49. 580        Y2 = (Y2 + YV2) MOD MY
  50. 590      IF (RND * 30 > 1) THEN GOTO 390
  51. 600      IF (INKEY$ = CHR$(27)) THEN SCREEN 0: END  ' Exit on Escape
  52. 610    IF (RND * 100 > 1) THEN GOTO 330
  53. 620  GOTO 270
  54.