mirror of
https://github.com/coding-horror/basic-computer-games.git
synced 2025-12-26 04:41:52 -08:00
Spaces tend to cause annoyances in a Unix-style shell environment. This change fixes that.
84 lines
2.2 KiB
QBasic
84 lines
2.2 KiB
QBasic
2 PRINT TAB(33);"LIFE2"
|
|
4 PRINT TAB(15);"CREATIVE COMPUTING MORRISTOWN, NEW JERSEY"
|
|
6 PRINT: PRINT: PRINT
|
|
7 DIM N(6,6),K(18),A(16),X(2),Y(2)
|
|
8 DATA 3,102,103,120,130,121,112,111,12
|
|
9 DATA 21,30,1020,1030,1011,1021,1003,1002,1012
|
|
10 FOR M=1 TO 18: READ K(M): NEXT M
|
|
13 DATA -1,0,1,0,0,-1,0,1,-1,-1,1,-1,-1,1,1,1
|
|
14 FOR O1= 1 TO 16: READ A(O1): NEXT O1
|
|
20 GOTO 500
|
|
50 FOR J=1 TO 5
|
|
51 FOR K=1 TO 5
|
|
55 IF N(J,K)>99 THEN GOSUB 200
|
|
60 NEXT K
|
|
65 NEXT J
|
|
90 K=0: M2=0: M3=0
|
|
99 FOR J=0 TO 6: PRINT
|
|
100 FOR K=0 TO 6
|
|
101 IF J<>0 THEN IF J<>6 THEN 105
|
|
102 IF K=6 THEN PRINT 0;: GOTO 125
|
|
103 PRINT K;: GOTO 120
|
|
105 IF K<>0 THEN IF K<>6 THEN 110
|
|
106 IF J=6 THEN PRINT 0: GOTO 126
|
|
107 PRINT J;: GOTO 120
|
|
110 GOSUB 300
|
|
120 NEXT K
|
|
125 NEXT J
|
|
126 RETURN
|
|
200 B=1: IF N(J,K)>999 THEN B=10
|
|
220 FOR O1= 1 TO 15 STEP 2
|
|
230 N(J+A(O1),K+A(O1+1))=N(J+A(O1),K+A(O1+1))+B
|
|
231 NEXT O1
|
|
239 RETURN
|
|
300 IF N(J,K)<3 THEN 399
|
|
305 FOR O1=1 TO 18
|
|
310 IF N(J,K)=K(O1) THEN 350
|
|
315 NEXT O1
|
|
320 GOTO 399
|
|
350 IF O1>9 THEN 360
|
|
351 N(J,K)=100: M2=M2+1: PRINT " * ";
|
|
355 RETURN
|
|
360 N(J,K)=1000: M3=M3+1: PRINT " # ";
|
|
365 RETURN
|
|
399 N(J,K)=0: PRINT " ";: RETURN
|
|
500 PRINT TAB(10);"U.B. LIFE GAME"
|
|
505 M2=0: M3=0
|
|
510 FOR J=1 TO 5
|
|
511 FOR K=1 TO 5
|
|
515 N(J,K)=0
|
|
516 NEXT K
|
|
517 NEXT J
|
|
519 FOR B=1 TO 2: P1=3: IF B=2 THEN P1=30
|
|
520 PRINT:PRINT "PLAYER";B;" - 3 LIVE PIECES."
|
|
535 FOR K1=1 TO 3: GOSUB 700
|
|
540 N(X(B),Y(B))=P1: NEXT K1
|
|
542 NEXT B
|
|
559 GOSUB 90
|
|
560 PRINT: GOSUB 50
|
|
570 IF M2=0 THEN IF M3=0 THEN 574
|
|
571 IF M3=0 THEN B=1: GOTO 575
|
|
572 IF M2=0 THEN B=2: GOTO 575
|
|
573 GOTO 580
|
|
574 PRINT: PRINT "A DRAW":GOTO 800
|
|
575 PRINT: PRINT "PLAYER";B;"IS THE WINNER":GOTO 800
|
|
580 FOR B=1 TO 2: PRINT: PRINT: PRINT "PLAYER";B;: GOSUB 700
|
|
581 IF B=99 THEN 560
|
|
582 NEXT B
|
|
586 N(X(1),Y(1))=100: N(X(2),Y(2))=1000
|
|
596 GOTO 560
|
|
700 PRINT "X,Y":PRINT"XXXXXX";CHR$(13);"$$$$$$";CHR$(13);"&&&&&&";
|
|
701 PRINT CHR$(13);: INPUT Y(B),X(B)
|
|
705 IF X(B)<=5 THEN IF X(B)>0 THEN 708
|
|
706 GOTO 750
|
|
708 IF Y(B)<=5 THEN IF Y(B)>0 THEN 715
|
|
710 GOTO 750
|
|
715 IF N(X(B),Y(B))<>0 THEN 750
|
|
720 IF B=1 THEN RETURN
|
|
725 IF X(1)=X(2) THEN IF Y(1)=Y(2) THEN 740
|
|
730 RETURN
|
|
740 PRINT "SAME COORD. SET TO 0"
|
|
741 N(X(B)+1,Y(B)+1)=0: B=99: RETURN
|
|
750 PRINT "ILLEGAL COORDS. RETYPE": GOTO 700
|
|
999 END
|