!***********************************!
! !
! LIFE.BAS !
! Conway's Game of Life !
! Implemented under AlphaBASIC !
! By David F. Pallmann !
! !
!***********************************!
DISPLAY:
LR = 20 : HR = 0
LC = 40 : HC = 0
TOTAL = 0
FOR I = 1 TO 20
PRINT TAB(I+1,2);
FOR J = 1 TO 40
IF B(I,J)="" THEN B(I,J) = " "
PRINT B(I,J);
IF B(I,J)="*" THEN TOTAL = TOTAL+1 : CALL WINDOW
NEXT J
NEXT I
I = GEN+6
IF I>20 THEN I = I-15
PRINT TAB(I,45); "Generation"; GEN;
PRINT " - Pop."; TOTAL;
GEN = GEN+1
IF TOTAL=0 THEN PRINT TAB(22,50); : END
MOVE: FOR I = 1 TO 20
FOR J = 1 TO 40
A(I,J) = B(I,J)
NEXT J
NEXT I
GENERATE:
FOR I = LR-1 TO HR+1
FOR J = LC-1 TO HC+1
CALL SCAN
NEXT J
NEXT I
GOTO DISPLAY
SCAN: COUNT = 0
FOR R = I-1 TO I+1
FOR C = J-1 TO J+1
IF R<1 OR R>20 THEN GOTO NEXT
IF C<1 OR C>40 THEN GOTO NEXT
IF R=I AND C=J THEN GOTO NEXT
IF A(R,C)<>" " THEN COUNT = COUNT+1
NEXT: NEXT C
NEXT R
B(I,J) = " "
IF A(I,J)=" " AND COUNT = 3 THEN B(I,J) = "*"
IF A(I,J)="*" AND COUNT>1 AND COUNT<4 THEN B(I,J) = "*"
RETURN
WINDOW: IF I<LR THEN LR = I
IF I>HR THEN HR = I
IF J<LC THEN LC = J
IF J>HC THEN HC = J
RETURN