| 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 |