A large commit.
[pdp8.git] / sw / src / basic / NIMBLE.BA
1 10 REM GAME OF NIMBLE
2 80 PRINT "NEED INSTRUCTIONS ";
3 90 GOSUB 1900
4 100 IF A$="N" GOTO 290
5 110 PRINT
6 120 PRINT "IN THIS GAME OF NIMBLE TWO PLAYERS ARE CONFRONTED WITH P"
7 130 PRINT "(2<P<7) PILES OF OBJECTS WITH N(I) ((0<I<P),(0<=N(I)<64))"
8 140 PRINT "OBJECTS IN PILE I. EACH PLAYER IN TURN MUST SELECT ONE"
9 150 PRINT "PILE AND TAKE ANY QUANTITY FROM THAT PILE FROM 1 TO ALL."
10 160 PRINT "THE PLAYER TO TAKE THE LAST OBJECT IS THE WINNER."
11 170 PRINT "THE GAME IS BEGUN WITH A COIN TOSS-THE WINNER OF THAT TOSS"
12 190 PRINT "HAS THE RIGHT TO INDICATE A PREFERENCE FOR GOING FIRST"
13 200 PRINT "OR SECOND."
14 210 PRINT "YOU INDICATE YOUR MOVE BY P,Q WHERE P=THE PILE NUMBER,"
15 220 PRINT "AND Q=THE QUANTITY."
16 260 PRINT "GOOD LUCK ! ! !"
17 290 DIM G(6,6),V(6),N(6),P(6),W(6)
18 300 PRINT "PICK A NUMBER ";
19 310 INPUT X
20 320 PRINT "THANK YOU"
21 330 FOR I=1 TO X
22 340 T=RND(1)
23 350 NEXT I
24 360 I9=6
25 370 J9=6
26 380 FOR I=1 TO I9
27 390 V(I)=2**(I-1)
28 400 NEXT I
29 410 FOR K=1 TO 6
30 415 N(K)=0\N(K)=0
31 416 NEXT K
32 420 FOR I=1 TO 6
33 430 FOR J=1 TO 6
34 431 G(I,J)=0
35 432 NEXT J
36 433 NEXT I
37 440 I9=6
38 450 PRINT "SHOULD I SET UP GAME ";
39 460 GOSUB 1900
40 470 IF A$="N" GOTO 590
41 480 PRINT "INDICATE DIFFICULTY LEVEL (1-5) ";
42 490 INPUT I9
43 500 IF I9>63 GOTO 480
44 510 IF I9<1 GOTO 480
45 520 I9=I9+1
46 530 N=INT(RND(1)*(J9-2))+3
47 540 FOR J=1 TO N
48 550 N(J)=INT(RND(1)*(2*V(I9)-1))+1
49 560 GOSUB 1700
50 570 NEXT J
51 580 GOTO 730
52 590 PRINT "HOW MANY PILES ";
53 600 PRINT "(3-";J9;")";
54 610 INPUT N
55 620 IF N<3 GOTO 600
56 630 IF N>9 GOTO 600
57 640 PRINT "HOW MANY IN PILE NO.";
58 650 FOR J=1 TO N
59 660 PRINT J;
60 670 INPUT N(J)
61 680 IF N(J)<2*V(I9) GOTO 710
62 690 PRINT "SELECT NUMBERS LESS THAN ";2*V(I9)
63 700 GOTO 660
64 710 GOSUB 1700
65 720 NEXT J
66 730 S=1
67 740 PRINT "I AM ABOUT TO TOSS A COIN-CALL H OR T ";
68 750 T1=INT(2*RND(1))
69 760 INPUT A$
70 770 IF A$="H" GOTO 810
71 780 IF A$="T" GOTO 810
72 790 PRINT "DON'T BE A WISE GUY-CALL H OR T ";
73 800 GOTO 760
74 810 IF T1=0 GOTO 840
75 820 C$="H"
76 830 GOTO 850
77 840 C$="T"
78 850 PRINT "THE TOSS WAS ";C$
79 860 GOSUB 1780
80 870 IF C$=A$ GOTO 900
81 880 PRINT "MY CHOICE - PONDER PONDER PONDER - ";
82 890 GOSUB 940
83 900 PRINT "YOUR CHOICE-DO YOU WANT TO GO FIRST ";
84 910 GOSUB 1900
85 920 IF A$="Y" GOTO 970
86 930 GOTO 990
87 940 FOR I=1 TO I9
88 950 IF P(I)=1 GOTO 990
89 960 NEXT I
90 970 PRINT "YOU GO FIRST - ";
91 980 GOTO 1010
92 990 PRINT "I GO FIRST - ";
93 1000 S=(S-1)**2
94 1010 IF S=1 GOTO 1400
95 1020 FOR I= I9 TO 1 STEP -1
96 1030 IF P(I)=1 GOTO 1100
97 1040 NEXT I
98 1050 J=INT(N*RND(1))+1
99 1060 IF N(J)=0 GOTO 1050
100 1070 T=INT(N(J)*RND(1))+1
101 1080 PRINT "MY MOVE IS ";J;", ";T
102 1090 GOTO 1560
103 1100 T=V(I)
104 1110 FOR J = 1 TO N
105 1120 IF G(I,J)=1 GOTO 1140
106 1130 NEXT J
107 1140 G(I,J)=0
108 1150 P(I)=0
109 1160 FOR K=1 TO I
110 1170 IF P(K)=0 GOTO 1210
111 1180 T=T+(2*G(K,J)-1)*V(K)
112 1190 G(K,J)=(G(K,J)-1)**2
113 1200 P(K)=0
114 1210 NEXT K
115 1220 PRINT "MY MOVE IS ";J;", ";T
116 1230 REM WAS PRINT FORMAT
117 1240 N(J)=N(J)-T
118 1250 FOR J=1 TO N
119 1260 IF N(J)<>0 GOTO 1370
120 1270 NEXT J
121 1280 IF S=1 GOTO 1310
122 1290 PRINT "I WIN !!! ";
123 1300 GOTO 1320
124 1310 PRINT "YOU WIN !!! ";
125 1320 W(S+1)=W(S+1)+1
126 1330 PRINT "PLAY AGAIN ";
127 1340 GOSUB 1900
128 1350 IF A$="N" GOTO 1970
129 1360 GOTO 410
130 1370 IF S=1 GOTO 1000
131 1380 GOSUB 1800
132 1390 GOTO 1000
133 1400 PRINT "YOUR MOVE ";
134 1410 INPUT J,T
135 1420 IF J>=1 GOTO 1460
136 1430 PRINT "PICK A PLIE FROM 1 TO ";N;
137 1440 INPUT J
138 1450 GOTO 1420
139 1460 IF J>N GOTO 1430
140 1470 IF N(J)>0 GOTO 1510
141 1480 PRINT "THAT PILE IS EMPTY"
142 1490 GOSUB 1800
143 1500 GOTO 1400
144 1510 IF T>=1 GOTO 1550
145 1520 PRINT "PICK A QUANTITY FROM 1 TO ";N(J);
146 1530 INPUT T
147 1540 GOTO 1510
148 1550 IF T>N(J) GOTO 1520
149 1560 N(J)=N(J)-T
150 1570 T=N(J)
151 1580 FOR I=I9 TO 1 STEP -1
152 1590 IF V(I)>T GOTO 1650
153 1600 T=T-V(I)
154 1610 IF G(I,J)=1 GOTO 1680
155 1620 G(I,J)=1
156 1630 P(I)=(P(I)-1)**2
157 1640 GOTO 1680
158 1650 IF G(I,J)=0 GOTO 1680
159 1660 G(I,J)=0
160 1670 P(I)=(P(I)-1)**2
161 1680 NEXT I
162 1690 GOTO 1250
163 1700 T=N(J)
164 1710 FOR I=I9 TO 1 STEP -1
165 1720 IF V(I)>T GOTO 1760
166 1730 G(I,J)=1
167 1740 T=T-V(I)
168 1750 P(I)=(P(I)-1)**2
169 1760 NEXT I
170 1770 RETURN
171 1780 PRINT "THERE ARE ";N;" PILES"
172 1800 PRINT
173 1810 FOR X=1 TO N
174 1820 PRINT X;
175 1830 NEXT X
176 1840 PRINT
177 1850 FOR X=1 TO N
178 1860 PRINT N(X);
179 1870 NEXT X
180 1880 PRINT
181 1890 RETURN
182 1900 INPUT A$
183 1910 IF A$<>"N" GOTO 1930
184 1920 RETURN
185 1930 IF A$<>"Y" GOTO 1950
186 1940 RETURN
187 1950 PRINT "ANSWER ONLY Y OR N";
188 1960 GOTO 1900
189 1970 PRINT " FINAL SCORE - ME ";W(1),"YOU ";W(2)
190 1990 END