Commit | Line | Data |
---|---|---|
81e70d48 PH |
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 |