File NIMBLE.BA (BASIC source file)

Directory of image this file is from
This file as a plain text file

10 REM GAME OF NIMBLE
80 PRINT "NEED INSTRUCTIONS ";
90 GOSUB 1900
100 IF A$="N" GOTO 290
110 PRINT
120 PRINT "IN THIS GAME OF NIMBLE TWO PLAYERS ARE CONFRONTED WITH P"
130 PRINT "(2<P<7) PILES OF OBJECTS WITH N(I) ((0<I<P),(0<=N(I)<64))"
140 PRINT "OBJECTS IN PILE I. EACH PLAYER IN TURN MUST SELECT ONE"
150 PRINT "PILE AND TAKE ANY QUANTITY FROM THAT PILE FROM 1 TO ALL."
160 PRINT "THE PLAYER TO TAKE THE LAST OBJECT IS THE WINNER."
170 PRINT "THE GAME IS BEGUN WITH A COIN TOSS-THE WINNER OF THAT TOSS"
190 PRINT "HAS THE RIGHT TO INDICATE A PREFERENCE FOR GOING FIRST"
200 PRINT "OR SECOND."
210 PRINT "YOU INDICATE YOUR MOVE BY P,Q WHERE P=THE PILE NUMBER,"
220 PRINT "AND Q=THE QUANTITY."
260 PRINT "GOOD LUCK ! ! !"
290 DIM G(6,6),V(6),N(6),P(6),W(6)
300 PRINT "PICK A NUMBER ";
310 INPUT X
320 PRINT "THANK YOU"
330 FOR I=1 TO X
340 T=RND(1)
350 NEXT I
360 I9=6
370 J9=6
380 FOR I=1 TO I9
390 V(I)=2**(I-1)
400 NEXT I
410 FOR K=1 TO 6
415 N(K)=0\N(K)=0
416 NEXT K
420 FOR I=1 TO 6
430 FOR J=1 TO 6
431 G(I,J)=0
432 NEXT J
433 NEXT I
440 I9=6
450 PRINT "SHOULD I SET UP GAME ";
460 GOSUB 1900
470 IF A$="N" GOTO 590
480 PRINT "INDICATE DIFFICULTY LEVEL (1-5) ";
490 INPUT I9
500 IF I9>63 GOTO 480
510 IF I9<1 GOTO 480
520 I9=I9+1
530 N=INT(RND(1)*(J9-2))+3
540 FOR J=1 TO N
550 N(J)=INT(RND(1)*(2*V(I9)-1))+1
560 GOSUB 1700
570 NEXT J
580 GOTO 730
590 PRINT "HOW MANY PILES ";
600 PRINT "(3-";J9;")";
610 INPUT N
620 IF N<3 GOTO 600
630 IF N>9 GOTO 600
640 PRINT "HOW MANY IN PILE NO.";
650 FOR J=1 TO N
660 PRINT J;
670 INPUT N(J)
680 IF N(J)<2*V(I9) GOTO 710
690 PRINT "SELECT NUMBERS LESS THAN ";2*V(I9)
700 GOTO 660
710 GOSUB 1700
720 NEXT J
730 S=1
740 PRINT "I AM ABOUT TO TOSS A COIN-CALL H OR T ";
750 T1=INT(2*RND(1))
760 INPUT A$
770 IF A$="H" GOTO 810
780 IF A$="T" GOTO 810
790 PRINT "DON'T BE A WISE GUY-CALL H OR T ";
800 GOTO 760
810 IF T1=0 GOTO 840
820 C$="H"
830 GOTO 850
840 C$="T"
850 PRINT "THE TOSS WAS ";C$
860 GOSUB 1780
870 IF C$=A$ GOTO 900
880 PRINT "MY CHOICE - PONDER PONDER PONDER - ";
890 GOSUB 940
900 PRINT "YOUR CHOICE-DO YOU WANT TO GO FIRST ";
910 GOSUB 1900
920 IF A$="Y" GOTO 970
930 GOTO 990
940 FOR I=1 TO I9
950 IF P(I)=1 GOTO 990
960 NEXT I
970 PRINT "YOU GO FIRST - ";
980 GOTO 1010
990 PRINT "I GO FIRST - ";
1000 S=(S-1)**2
1010 IF S=1 GOTO 1400
1020 FOR I= I9 TO 1 STEP -1
1030 IF P(I)=1 GOTO 1100
1040 NEXT I
1050 J=INT(N*RND(1))+1
1060 IF N(J)=0 GOTO 1050
1070 T=INT(N(J)*RND(1))+1
1080 PRINT "MY MOVE IS ";J;", ";T
1090 GOTO 1560
1100 T=V(I)
1110 FOR J = 1 TO N
1120 IF G(I,J)=1 GOTO 1140
1130 NEXT J
1140 G(I,J)=0
1150 P(I)=0
1160 FOR K=1 TO I
1170 IF P(K)=0 GOTO 1210
1180 T=T+(2*G(K,J)-1)*V(K)
1190 G(K,J)=(G(K,J)-1)**2
1200 P(K)=0
1210 NEXT K
1220 PRINT "MY MOVE IS ";J;", ";T
1230 REM WAS PRINT FORMAT
1240 N(J)=N(J)-T
1250 FOR J=1 TO N
1260 IF N(J)<>0 GOTO 1370
1270 NEXT J
1280 IF S=1 GOTO 1310
1290 PRINT "I WIN !!!      ";
1300 GOTO 1320
1310 PRINT "YOU WIN !!!      ";
1320 W(S+1)=W(S+1)+1
1330 PRINT "PLAY AGAIN ";
1340 GOSUB 1900
1350 IF A$="N" GOTO 1970
1360 GOTO 410
1370 IF S=1 GOTO 1000
1380 GOSUB 1800
1390 GOTO 1000
1400 PRINT "YOUR MOVE ";
1410 INPUT J,T
1420 IF J>=1 GOTO 1460
1430 PRINT "PICK A PLIE FROM 1 TO ";N;
1440 INPUT J
1450 GOTO 1420
1460 IF J>N GOTO 1430
1470 IF N(J)>0 GOTO 1510
1480 PRINT "THAT PILE IS EMPTY"
1490 GOSUB 1800
1500 GOTO 1400
1510 IF T>=1 GOTO 1550
1520 PRINT "PICK A QUANTITY FROM 1 TO ";N(J);
1530 INPUT T
1540 GOTO 1510
1550 IF T>N(J) GOTO 1520
1560 N(J)=N(J)-T
1570 T=N(J)
1580 FOR I=I9 TO 1 STEP -1
1590 IF V(I)>T GOTO 1650
1600 T=T-V(I)
1610 IF G(I,J)=1 GOTO 1680
1620 G(I,J)=1
1630 P(I)=(P(I)-1)**2
1640 GOTO 1680
1650 IF G(I,J)=0 GOTO 1680
1660 G(I,J)=0
1670 P(I)=(P(I)-1)**2
1680 NEXT I
1690 GOTO 1250
1700 T=N(J)
1710 FOR I=I9 TO 1 STEP -1
1720 IF V(I)>T GOTO 1760
1730 G(I,J)=1
1740 T=T-V(I)
1750 P(I)=(P(I)-1)**2
1760 NEXT I
1770 RETURN
1780 PRINT "THERE ARE ";N;" PILES"
1800 PRINT
1810 FOR X=1 TO N
1820 PRINT X;
1830 NEXT X
1840 PRINT
1850 FOR X=1 TO N
1860 PRINT N(X);
1870 NEXT X
1880 PRINT
1890 RETURN
1900 INPUT A$
1910 IF A$<>"N" GOTO 1930
1920 RETURN
1930 IF A$<>"Y" GOTO 1950
1940 RETURN
1950 PRINT "ANSWER ONLY Y OR N";
1960 GOTO 1900
1970 PRINT "  FINAL SCORE - ME ";W(1),"YOU ";W(2)
1990 END



Feel free to contact me, David Gesswein djg@pdp8online.com with any questions, comments on the web site, or if you have related equipment, documentation, software etc. you are willing to part with.  I am interested in anything PDP-8 related, computers, peripherals used with them, DEC or third party, or documentation. 

PDP-8 Home Page   PDP-8 Site Map   PDP-8 Site Search