|
DataMuseum.dkPresents historical artifacts from the history of: CP/M |
This is an automatic "excavation" of a thematic subset of
See our Wiki for more about CP/M Excavated with: AutoArchaeologist - Free & Open Source Software. |
top - download
Length: 2560 (0xa00) Types: TextFile Names: »LIFE.BAS«
└─⟦016ef1d53⟧ Bits:30005210 BASIC Demo └─ ⟦this⟧ »LIFE.BAS«
10 CLEAR 2000 20 DEFINT I-N 30 I=0:J=0:K=0:L=0:IY=0:IZ=0:JY=0:JZ=0 40 WIDTH 80 50 DIM A$(2,24) 60 DIM MM(1920) 70 PRINT SPC(30);"GAME OF LIFE 80 PRINT 90 PRINT " ENTER ASTERISKS AND BLANKS TO FORM A CIVILIZATION" 100 PRINT " ENTER (CR) ONLY ON A LINE TO FINALIZE CIVILIZATION" 110 PRINT 120 IR=1 : IC=1 : JC=0 130 FOR I=1 TO 24 140 LINE INPUT "MORE ASTERISKS? ";A$(1,I) 150 IF A$(1,I)="" THEN 190 160 IF A$(1,I)="R" THEN 800 170 J=LEN(A$(1,I)) : IF JC<J THEN JC=J 180 NEXT 190 INPUT "HOW MANY GENERATIONS DO YOU WANT TO SEE";TU 200 JR=I-1:JJ=1 210 REM 220 TP=TP+1 240 REM CENTER PATTERN 250 IF JC=0 THEN PRINT " D*E*A*T*H" : GOTO 880 260 NR=(24-JR-(IR-1))/2 270 NC=(80-JC-(IC-1))/2 280 NN=3-JJ 290 FOR I=1 TO 24 : A$(NN,I)="" : NEXT 300 FOR I=IR TO JR 310 IF NC>0 THEN A$(NN,I+NR)=SPACE$(NC)+A$(JJ,I) ELSE A$(NN,I+NR)=MID$(A$(JJ,I),1-NC) 320 A$(JJ,I)="" 330 NEXT 340 IC=IC+NC : JC=JC+NC : IR=IR+NR : JR=JR+NR 350 JJ=NN 360 REM 370 REM PRINT UNIVERSE 380 FOR I=1 TO 24 390 IF A$(JJ,I)="" THEN PRINT ELSE PRINT LEFT$(A$(JJ,I),JC) 400 NEXT 410 PRINT TAB(35);"GENERATION";IG 415 IF IG=TU THEN 880 420 IG=IG+1 430 REM 440 REM CYCLE NEXT GENERATION 450 IF JC=80 THEN JC=79 460 IF JR=24 THEN JR=23 470 NN=3-JJ 480 IF IC=1 THEN IC=2 490 IF IR=1 THEN IR=2 500 FOR I=IR TO JR 510 LIM=LEN(A$(JJ,I)) 520 IF LIM>79 THEN LIM=79 530 FOR J=IC TO LIM 540 IF MID$(A$(JJ,I),J,1)=" " THEN 560 550 K=(I-1)*80+J:MM(K)=MM(K)+42:MM(K-81)=MM(K-81)+1: MM(K-80)=MM(K-80)+1:MM(K-79)=MM(K-79)+1:MM(K-1)=MM(K-1)+1 :MM(K+1)=MM(K+1)+1:MM(K+79)=MM(K+79)+1:MM(K+80)=MM(K+80)+1 :MM(K+81)=1 560 NEXT 570 NEXT 580 IA=IR-1 : IB=JR+1 : JA=IC-1 : JB=JC+1 590 IC=81:JC=0:IR=25:JR=0 600 FOR I=1 TO 24:A$(JJ,I)="":A$(NN,I)="":NEXT 610 FOR I=IA TO IB 620 A$(NN,I)=SPACE$(JB) 630 MC=0 640 K=(I-1)*80+JA-1 650 FOR J=JA TO JB 660 K=K+1 670 IF MM(K)=0 THEN 730 680 M=MM(K):MM(K)=0 690 IF M<>3 THEN IF M<>44 THEN IF M<>45 THEN 730 700 MC=J : IF IC>J THEN IC=J 710 IF JC<J THEN JC=J 720 MID$(A$(NN,I),J,1)="*" 730 NEXT 740 IF MC>0 THEN IF IR>I THEN IR=I 750 IF MC>0 THEN IF JR<I THEN JR=I 760 A$(NN,I)=LEFT$(A$(NN,I),MC) 770 NEXT 780 JJ=NN 790 GOTO 210 800 IR=1:JR=7:IC=1:JC=14 810 FOR I=1 TO JR:A$(1,I)=SPACE$(JC):NEXT 820 RANDOMIZE 830 FOR I=1 TO JC*JR*.6 840 MID$(A$(1,RND*JR+.5),RND*JC+.5,1)="*" 850 NEXT 860 JJ=1 870 GOTO 210 880 INPUT"MENU";A$ 890 RUN "MENU"