Compucolor.org – Virtual Media

Listing of file='LIFE1.BAS;01' on disk='vmedia/games-sector.ccvf'

9 REM  BG-ON/BLACK/FG-ON/GREEN/ERASE PAGE/A7-ON/
10 REM ***************** GAME OF LIFE -V1.0- ******************
15 REM *                                                      *
20 REM * DALE DEWEY, 7284 HIGHVIEW TRAIL, VICTOR, NY 14564    *
25 REM *                                                      *
30 REM * THIS PROGRAM IS BASED ON A GAME THAT WAS DEVELOPED   *
35 REM * BY JOHN H CONWAY AT THE UNIVERSITY OF CAMBRIDGE.     *
40 REM *                                                      *
45 REM * IT WAS PRESENTED BY MARTIN GARDNER IN THE OCTOBER    *
50 REM * 1970 SCIENTIFIC AMERICAN.  THE DECEMBER 1978 BYTE    *
55 REM * HAS SOME GOOD ARTICLES ON THIS GAME AND ITS HISTORY. *
60 REM *                                                      *
65 REM * THIS PROGRAM RUNS IN 14K BYTES                3/80   *
70 REM *          COPYRIGHT   DALE E. DEWEY,1980              *
75 REM ********************************************************
76 REM  ERASE LINE/(ESC)X/(ESC)J/
100 DATA  20,30,20,31,20,32,21,30,21,32,22,30,22,32,0,0
110 PLOT  29,14,12,27,4:PRINT  "LOAD LIFE.DSP 6000"
120 PLOT  27,27,3,0,29
130 INPUT  " WOULD YOU LIKE A DEMONSTRATION ? ";A$
140 PLOT  31,12
150 J= 20:I= 13:GOSUB 2010
160 PRINT  "I'M JUST GETTING READY":PLOT  8
170 DIM A(31,61),B(99,1),D(99,1)
180 V1= 30:H1= 60
190 V2= 1:H2= 1
200 PLOT  15,12
210 PRINT  "ENTER THE COORDINATES OF YOUR 'SEED'";TAB( 53);"(ROW,COL)"
220 PRINT  TAB( 3);"(0,0 WILL GERMINATE THE SEED)"
230 PLOT  15,3,55,1
240 IF LEFT$ (A$,1)= "Y"THEN READ I,J:GOTO 260
250 INPUT  " ";I,J
260 IF I= 0AND J= 0THEN 370
270 IF  I< 1 OR  I> 30 OR  J< 1 OR  J> 60 THEN PLOT  31,3,35,1:PRINT  "BAD INPUT ";I;",";J;"";TAB( 55);SPC( 8):GOTO 230
280 PLOT  3,35,1:PRINT  SPC( 28)
290 IF  V1 >  I THEN V1= I
300 IF  V2 <  I THEN V2= I
310 IF  H1 >  J THEN H1= J
320 IF  H2 <  J THEN H2= J
330 A(I,J)= 1
340 GOSUB 2010
350 PRINT  "d"
360 GOTO 230
370 PLOT 31,3,53,1:PRINT "COMPUTING "
380 I1= V1- 1:IF  I1 <  1 THEN I1= 1
390 I2= V2+ 1:IF  I2 >  30 THEN I2= 30
400 J1= H1- 1:IF  J1 <  1 THEN J1= 1
410 J2= H2+ 1:IF  J2 >  60 THEN J2= 60
420 FOR  I =  I1 TO  I2
430 FOR  J =  J1 TO  J2
440 NE= A(I- 1,J- 1)+ A(I- 1,J)+ A(I- 1,J+ 1)+ A(I,J- 1)+ A(I,J+ 1)+ A(I+ 1,J- 1)+ A(I+ 1,J)+ A(I+ 1,J+ 1)
450 IF  A(I,J) =  1 THEN 480
460 IF  NE= 3 THEN GOSUB 2040:REM  UNOCCUPIED W/3 NEIGHBORS BIRTH
470 GOTO 490
480 IF  NE< 2 OR  NE> 3 THEN GOSUB 2100:REM  OCCUPIED W/<2 OR >3 NEIGHBORS DEATH
490 NEXT J
500 NEXT  I
510 Z= Z+ 1
520 CO= INT (Z/ 10)+ 1:IF  CO= 8 THEN 830:REM  SET THE COLOR HERE
530 PLOT  8,14,6,CO
540 PRINT  TAB( 14);Z;" GENERATION ";BI;" BIRTHS ";DE;" DEATHS";TAB( 62);" "
550 IF  BI+ DE= 0 THEN 830:REM  NO BIRTHS OR DEATHS - STABLE
560 PLOT  15
570 IF  DE= 0 THEN 660
580 FOR  K= 0 TO  DE- 1
590 I= D(K,0)
600 J= D(K,1)
610 A(I,J)= 0
620 GOSUB 2010
630 PRINT  " "
640 NEXT  K
650 DE= 0
660 IF  BI= 0 THEN 800
670 FOR  K= 0 TO  BI- 1
680 I= B(K,0)
690 J= B(K,1)
700 IF  V1 >  I THEN V1= I
710 IF  V2 <  I THEN V2= I
720 IF  H1 >  J THEN H1= J
730 IF  H2 <  J THEN H2= J
740 A(I,J)= 1
750 PLOT  6,CO
760 GOSUB 2010
770 PRINT  "d"
780 NEXT  K
790 BI= 0
800 PLOT  8
810 GOTO 380
820 PRINT  "I SHOULD NOT HAVE GOTTEN HERE":END
830 PLOT  3,0,5,6,5
840 PRINT  TAB( 27);"END OF LIFE":PRINT
850 PRINT  TAB( 16);"MAXIMUM GROWTH RATE WAS";BM;" BIRTHS":PRINT
860 PRINT  TAB( 16);"MAXIMUM DEATH RATE WAS";DM;" DEATHS":PRINT
870 PRINT :PRINT :PRINT :PRINT
880 INPUT  "WOULD YOU CARE TO TRY ANOTHER SEED ? ";A$
890 IF LEFT$ (A$,1)< > "N"THEN RUN 190
900 LOAD  "MENU":RUN
2000 REM  GENERAL PLOT 3,X,Y
2010 PLOT  3,J+ 1,I+ 1
2020 RETURN
2030 REM  BIRTHS OCCUR HERE
2040 B(BI,0)= I
2050 B(BI,1)= J
2060 BI= BI+ 1
2070 IF  BM< BI THEN BM= BI
2080 RETURN
2090 REM  DEATHS OCCUR HERE
2100 D(DE,0)= I
2110 D(DE,1)= J
2120 DE= DE+ 1
2130 IF  DM< DE THEN DM= DE
2140 RETURN
3000 REM  (ESC)K/A7-OFF/PLOT3,1,30/GREEN/