A large commit.
[pdp8.git] / sw / src / basic / NIMBLE.BA
CommitLineData
81e70d48
PH
110 REM GAME OF NIMBLE
280 PRINT "NEED INSTRUCTIONS ";
390 GOSUB 1900
4100 IF A$="N" GOTO 290
5110 PRINT
6120 PRINT "IN THIS GAME OF NIMBLE TWO PLAYERS ARE CONFRONTED WITH P"
7130 PRINT "(2<P<7) PILES OF OBJECTS WITH N(I) ((0<I<P),(0<=N(I)<64))"
8140 PRINT "OBJECTS IN PILE I. EACH PLAYER IN TURN MUST SELECT ONE"
9150 PRINT "PILE AND TAKE ANY QUANTITY FROM THAT PILE FROM 1 TO ALL."
10160 PRINT "THE PLAYER TO TAKE THE LAST OBJECT IS THE WINNER."
11170 PRINT "THE GAME IS BEGUN WITH A COIN TOSS-THE WINNER OF THAT TOSS"
12190 PRINT "HAS THE RIGHT TO INDICATE A PREFERENCE FOR GOING FIRST"
13200 PRINT "OR SECOND."
14210 PRINT "YOU INDICATE YOUR MOVE BY P,Q WHERE P=THE PILE NUMBER,"
15220 PRINT "AND Q=THE QUANTITY."
16260 PRINT "GOOD LUCK ! ! !"
17290 DIM G(6,6),V(6),N(6),P(6),W(6)
18300 PRINT "PICK A NUMBER ";
19310 INPUT X
20320 PRINT "THANK YOU"
21330 FOR I=1 TO X
22340 T=RND(1)
23350 NEXT I
24360 I9=6
25370 J9=6
26380 FOR I=1 TO I9
27390 V(I)=2**(I-1)
28400 NEXT I
29410 FOR K=1 TO 6
30415 N(K)=0\N(K)=0
31416 NEXT K
32420 FOR I=1 TO 6
33430 FOR J=1 TO 6
34431 G(I,J)=0
35432 NEXT J
36433 NEXT I
37440 I9=6
38450 PRINT "SHOULD I SET UP GAME ";
39460 GOSUB 1900
40470 IF A$="N" GOTO 590
41480 PRINT "INDICATE DIFFICULTY LEVEL (1-5) ";
42490 INPUT I9
43500 IF I9>63 GOTO 480
44510 IF I9<1 GOTO 480
45520 I9=I9+1
46530 N=INT(RND(1)*(J9-2))+3
47540 FOR J=1 TO N
48550 N(J)=INT(RND(1)*(2*V(I9)-1))+1
49560 GOSUB 1700
50570 NEXT J
51580 GOTO 730
52590 PRINT "HOW MANY PILES ";
53600 PRINT "(3-";J9;")";
54610 INPUT N
55620 IF N<3 GOTO 600
56630 IF N>9 GOTO 600
57640 PRINT "HOW MANY IN PILE NO.";
58650 FOR J=1 TO N
59660 PRINT J;
60670 INPUT N(J)
61680 IF N(J)<2*V(I9) GOTO 710
62690 PRINT "SELECT NUMBERS LESS THAN ";2*V(I9)
63700 GOTO 660
64710 GOSUB 1700
65720 NEXT J
66730 S=1
67740 PRINT "I AM ABOUT TO TOSS A COIN-CALL H OR T ";
68750 T1=INT(2*RND(1))
69760 INPUT A$
70770 IF A$="H" GOTO 810
71780 IF A$="T" GOTO 810
72790 PRINT "DON'T BE A WISE GUY-CALL H OR T ";
73800 GOTO 760
74810 IF T1=0 GOTO 840
75820 C$="H"
76830 GOTO 850
77840 C$="T"
78850 PRINT "THE TOSS WAS ";C$
79860 GOSUB 1780
80870 IF C$=A$ GOTO 900
81880 PRINT "MY CHOICE - PONDER PONDER PONDER - ";
82890 GOSUB 940
83900 PRINT "YOUR CHOICE-DO YOU WANT TO GO FIRST ";
84910 GOSUB 1900
85920 IF A$="Y" GOTO 970
86930 GOTO 990
87940 FOR I=1 TO I9
88950 IF P(I)=1 GOTO 990
89960 NEXT I
90970 PRINT "YOU GO FIRST - ";
91980 GOTO 1010
92990 PRINT "I GO FIRST - ";
931000 S=(S-1)**2
941010 IF S=1 GOTO 1400
951020 FOR I= I9 TO 1 STEP -1
961030 IF P(I)=1 GOTO 1100
971040 NEXT I
981050 J=INT(N*RND(1))+1
991060 IF N(J)=0 GOTO 1050
1001070 T=INT(N(J)*RND(1))+1
1011080 PRINT "MY MOVE IS ";J;", ";T
1021090 GOTO 1560
1031100 T=V(I)
1041110 FOR J = 1 TO N
1051120 IF G(I,J)=1 GOTO 1140
1061130 NEXT J
1071140 G(I,J)=0
1081150 P(I)=0
1091160 FOR K=1 TO I
1101170 IF P(K)=0 GOTO 1210
1111180 T=T+(2*G(K,J)-1)*V(K)
1121190 G(K,J)=(G(K,J)-1)**2
1131200 P(K)=0
1141210 NEXT K
1151220 PRINT "MY MOVE IS ";J;", ";T
1161230 REM WAS PRINT FORMAT
1171240 N(J)=N(J)-T
1181250 FOR J=1 TO N
1191260 IF N(J)<>0 GOTO 1370
1201270 NEXT J
1211280 IF S=1 GOTO 1310
1221290 PRINT "I WIN !!! ";
1231300 GOTO 1320
1241310 PRINT "YOU WIN !!! ";
1251320 W(S+1)=W(S+1)+1
1261330 PRINT "PLAY AGAIN ";
1271340 GOSUB 1900
1281350 IF A$="N" GOTO 1970
1291360 GOTO 410
1301370 IF S=1 GOTO 1000
1311380 GOSUB 1800
1321390 GOTO 1000
1331400 PRINT "YOUR MOVE ";
1341410 INPUT J,T
1351420 IF J>=1 GOTO 1460
1361430 PRINT "PICK A PLIE FROM 1 TO ";N;
1371440 INPUT J
1381450 GOTO 1420
1391460 IF J>N GOTO 1430
1401470 IF N(J)>0 GOTO 1510
1411480 PRINT "THAT PILE IS EMPTY"
1421490 GOSUB 1800
1431500 GOTO 1400
1441510 IF T>=1 GOTO 1550
1451520 PRINT "PICK A QUANTITY FROM 1 TO ";N(J);
1461530 INPUT T
1471540 GOTO 1510
1481550 IF T>N(J) GOTO 1520
1491560 N(J)=N(J)-T
1501570 T=N(J)
1511580 FOR I=I9 TO 1 STEP -1
1521590 IF V(I)>T GOTO 1650
1531600 T=T-V(I)
1541610 IF G(I,J)=1 GOTO 1680
1551620 G(I,J)=1
1561630 P(I)=(P(I)-1)**2
1571640 GOTO 1680
1581650 IF G(I,J)=0 GOTO 1680
1591660 G(I,J)=0
1601670 P(I)=(P(I)-1)**2
1611680 NEXT I
1621690 GOTO 1250
1631700 T=N(J)
1641710 FOR I=I9 TO 1 STEP -1
1651720 IF V(I)>T GOTO 1760
1661730 G(I,J)=1
1671740 T=T-V(I)
1681750 P(I)=(P(I)-1)**2
1691760 NEXT I
1701770 RETURN
1711780 PRINT "THERE ARE ";N;" PILES"
1721800 PRINT
1731810 FOR X=1 TO N
1741820 PRINT X;
1751830 NEXT X
1761840 PRINT
1771850 FOR X=1 TO N
1781860 PRINT N(X);
1791870 NEXT X
1801880 PRINT
1811890 RETURN
1821900 INPUT A$
1831910 IF A$<>"N" GOTO 1930
1841920 RETURN
1851930 IF A$<>"Y" GOTO 1950
1861940 RETURN
1871950 PRINT "ANSWER ONLY Y OR N";
1881960 GOTO 1900
1891970 PRINT " FINAL SCORE - ME ";W(1),"YOU ";W(2)
1901990 END