home *** CD-ROM | disk | FTP | other *** search
/ Visual Basic Source Code / Visual Basic Source Code.iso / vbsource / liferu1a / life2.bas < prev   
Encoding:
BASIC Source File  |  1999-09-09  |  3.4 KB  |  102 lines

  1. 10 RANDOMIZE TIMER
  2. 20 CLS
  3. 21 PRINT : PRINT " The 'GAME OF LIFE'     Helgi RUDD 1995  "
  4. 37 SCREEN 1
  5. 39 REM --- game of life ---
  6. 40 DIM a(120, 120), b(120, 120)
  7. 45 XO = 35 : YO = 90
  8. 50 REM --- two arrays for rule transfer ----
  9. 55 cls
  10. 60 FOR i = 1 TO 120
  11. 70 FOR l = 1 TO 120
  12. 80 LINE (l+YO, i+XO)-(l+YO, i+XO), 1
  13. 90 a(i, l) = 1
  14. 100 NEXT l
  15. 110 NEXT i
  16. 120 REM ---- screen white, ready for map -----
  17. 124 FOR i = 0 TO 10000
  18. 125 x = INT(RND(1) * 120) + 1
  19. 126 y = INT(RND(1) * 120) + 1
  20. 127 a(x, y) = 0: LINE (y+YO, x+XO)-(y+YO, x+XO), 0
  21. 128 NEXT i
  22. 129 GOTO 600
  23. 130 REM --- user defines start screen ----
  24. 135 REM
  25. 137 REM                UP       x = TOGGLE POINT
  26. 140 REM                a
  27. 150 REM      LEFT   n -|- m  RIGHT
  28. 160 REM                z
  29. 170 REM               DOWN
  30. 180  x = 40: y = 12
  31. 200 LOCATE y, x, 0: PRINT " ";
  32. 210 y$ = INKEY$: IF y$ = "" THEN GOTO 210
  33. 220 IF y$ = "x" THEN GOTO 300
  34. 230 IF y$ <> "a" AND y$ <> "z" AND y$ <> "m" AND y$ <> "n" AND y$ <> "q" THEN GOTO 210
  35. 240 IF a(x, y) = 1 THEN LINE (y, x)-(y, x), 1
  36. 250 IF y$ = "a" THEN y = y - 1
  37. 260 IF y$ = "z" THEN y = y + 1
  38. 270 IF y$ = "m" THEN x = x + 1
  39. 280 IF y$ = "n" THEN x = x - 1
  40. 285 IF y$ = "q" THEN GOTO 500: REM ++++ PRESS q TO QUIT ++++
  41. 290 IF x > 80 THEN x = 80
  42. 292 IF x < 1 THEN x = 1
  43. 294 IF y > 25 THEN y = 25
  44. 296 IF y < 1 THEN y = 1
  45. 299 GOTO 200
  46. 300 REM --- toggle point -----
  47. 310 IF a(x, y) = 1 THEN a(x, y) = 0: GOTO 210
  48. 320 IF a(x, y) = 0 THEN a(x, y) = 1: LINE (50 + y, 50 + x)-(50 + y, 50 + x), 1: GOTO 210
  49. 330 REM ---- end of screen setup -----
  50. 335 LOCATE 15, 25, 0: PRINT "  PRESS Q TO EXIT WHILE RUNNING"
  51. 500 CLS : LOCATE 12, 20, 0: INPUT "ARE YOU READY FOR LIVENING  (Y/N) "; q$
  52. 510 IF q$ <> "n" AND q$ <> "N" THEN GOTO 600
  53. 520 REM --- refresh screnn ---
  54. 530 FOR i = 1 TO 100
  55. 540 FOR j = 1 TO 100
  56. 550  IF a(i, j) = 1 THEN LINE (j+YO, i+XO)-(j+YO, i+XO), 1: GOTO 570
  57. 560 LINE (50 + y, 50 + x)-(50 + y, 50 + x), 0
  58. 570 NEXT j
  59. 580 NEXT i
  60. 590 GOTO 200
  61. 600 REM ---- NOW LIVEN ------
  62. 610 FOR xr = 1 TO 120
  63. 620 FOR yr = 1 TO 120
  64. 625 GOSUB 1000
  65. 630 IF a(xr, yr) = 1 AND bt = 3 THEN b(xr, yr) = 0: GOTO 670
  66. 640 IF a(xr, yr) = 0 AND bt >= 4 THEN b(xr, yr) = 1: GOTO 670
  67. 650 IF a(xr, yr) = 0 AND bt <= 1 THEN b(xr, yr) = 1: GOTO 670
  68. 660 b(xr, yr) = a(xr, yr)
  69. 670 NEXT yr
  70. 680 NEXT xr
  71. 690 REM----  display new array b ( x, y) ----
  72. 700 FOR xr = 1 TO 120
  73. 710 FOR yr = 1 TO 120
  74. 720 IF b(xr, yr) = 1 THEN LINE (yr+YO, xr+XO)-(yr+YO, xr+XO), 1
  75. 730 IF b(xr, yr) = 0 THEN LINE (yr+YO, xr+XO)-(yr+YO, xr+XO), 0
  76. 740 a(xr, yr) = b(xr, yr)
  77. 745 y$ = INKEY$: IF y$ = "q" OR y$ = "Q" THEN STOP
  78. 750 NEXT yr
  79. 760 NEXT xr
  80. 770 GOTO 610
  81. 1000 REM ------ black counter -------
  82. 1010 bt = 0
  83. 1015 IF xr - 1 < 1 THEN GOTO 1025
  84. 1020 IF a(xr - 1, yr) = 0 THEN bt = bt + 1
  85. 1025 IF xr + 1 > 120 THEN GOTO 1035
  86. 1030 IF a(xr + 1, yr) = 0 THEN bt = bt + 1
  87. 1035 IF yr - 1 < 1 THEN GOTO 1045
  88. 1040 IF a(xr, yr - 1) = 0 THEN bt = bt + 1
  89. 1045 IF yr + 1 > 120 THEN GOTO 1055
  90. 1050 IF a(xr, yr + 1) = 0 THEN bt = bt + 1
  91. 1055 IF xr + 1 > 120 OR yr + 1 > 120 THEN GOTO 1065
  92. 1060 IF a(xr + 1, yr + 1) = 0 THEN bt = bt + 1
  93. 1065 IF xr - 1 < 1 OR yr + 1 > 120 THEN GOTO 1075
  94. 1070 IF a(xr - 1, yr + 1) = 0 THEN bt = bt + 1
  95. 1075 IF xr + 1 > 120 OR yr - 1 < 1 THEN GOTO 1085
  96. 1080 IF a(xr + 1, yr - 1) = 0 THEN bt = bt + 1
  97. 1085 IF xr - 1 < 1 OR yr - 1 < 1 THEN GOTO 1100
  98. 1090 IF a(xr - 1, yr - 1) = 0 THEN bt = bt + 1
  99. 1100 RETURN
  100.  
  101.  
  102.