|
- 100 PRINT TAB(33);"NIM"
- 110 PRINT TAB(15);"CREATIVE COMPUTING MORRISTOWN, NEW JERSEY"
- 120 PRINT:PRINT:PRINT
- 210 DIM A(100),B(100,10),D(2)
- 220 PRINT "THIS IS THE GAME OF NIM."
- 230 PRINT "DO YOU WANT INSTRUCTIONS";
- 240 INPUT Z$
- 250 IF Z$="NO" THEN 440
- 260 IF Z$="no" THEN 440
- 270 IF Z$="YES" THEN 310
- 280 IF Z$="yes" THEN 310
- 290 PRINT "PLEASE ANSWER YES OR NO"
- 300 GOTO 240
- 310 PRINT "THE GAME IS PLAYED WITH A NUMBER OF PILES OF OBJECTS."
- 320 PRINT "ANY NUMBER OF OBJECTS ARE REMOVED FROM ONE PILE BY YOU AND"
- 330 PRINT "THE MACHINE ALTERNATELY. ON YOUR TURN, YOU MAY TAKE"
- 340 PRINT "ALL THE OBJECTS THAT REMAIN IN ANY PILE, BUT YOU MUST"
- 350 PRINT "TAKE AT LEAST ONE OBJECT, AND YOU MAY TAKE OBJECTS FROM"
- 360 PRINT "ONLY ONE PILE ON A SINGLE TURN. YOU MUST SPECIFY WHETHER"
- 370 PRINT "WINNING IS DEFINED AS TAKING OR NOT TAKING THE LAST OBJECT,"
- 380 PRINT "THE NUMBER OF PILES IN THE GAME, AND HOW MANY OBJECTS ARE"
- 390 PRINT "ORIGINALLY IN EACH PILE. EACH PILE MAY CONTAIN A"
- 400 PRINT "DIFFERENT NUMBER OF OBJECTS."
- 410 PRINT "THE MACHINE WILL SHOW ITS MOVE BY LISTING EACH PILE AND THE"
- 420 PRINT "NUMBER OF OBJECTS REMAINING IN THE PILES AFTER EACH OF ITS"
- 430 PRINT "MOVES."
- 440 PRINT
- 450 PRINT "ENTER WIN OPTION - 1 TO TAKE LAST, 2 TO AVOID LAST";
- 460 INPUT W
- 470 IF W=1 THEN 490
- 480 IF W<>2 THEN 450
- 490 PRINT "ENTER NUMBER OF PILES";
- 500 INPUT N
- 510 IF N>100 THEN 490
- 520 IF N<1 THEN 490
- 530 IF N<>INT(N) THEN 490
- 540 PRINT "ENTER PILE SIZES"
- 550 FOR I=1 TO N
- 560 PRINT I;
- 570 INPUT A(I)
- 580 IF A(I)>2000 THEN 560
- 590 IF A(I)<1 THEN 560
- 600 IF A(I)<>INT(A(I)) THEN 560
- 610 NEXT I
- 620 PRINT "DO YOU WANT TO MOVE FIRST";
- 630 INPUT Q9$
- 640 IF Q9$="YES" THEN 1450
- 650 IF Q9$="yes" THEN 1450
- 660 IF Q9$="NO" THEN 700
- 670 IF Q9$="no" THEN 700
- 680 PRINT "PLEASE ANSWER YES OR NO."
- 690 GOTO 630
- 700 IF W=1 THEN 940
- 710 LET C=0
- 720 FOR I=1 TO N
- 730 IF A(I)=0 THEN 770
- 740 LET C=C+1
- 750 IF C=3 THEN 840
- 760 LET D(C)=I
- 770 NEXT I
- 780 IF C=2 THEN 920
- 790 IF A(D(1))>1 THEN 820
- 800 PRINT "MACHINE LOSES"
- 810 GOTO 1640
- 820 PRINT "MACHINE WINS"
- 830 GOTO 1640
- 840 LET C=0
- 850 FOR I=1 TO N
- 860 IF A(I)>1 THEN 940
- 870 IF A(I)=0 THEN 890
- 880 LET C=C+1
- 890 NEXT I
- 900 IF C/2<>INT(C/2) THEN 800
- 910 GOTO 940
- 920 IF A(D(1))=1 THEN 820
- 930 IF A(D(2))=1 THEN 820
- 940 FOR I=1 TO N
- 950 LET E=A(I)
- 960 FOR J=0 TO 10
- 970 LET F=E/2
- 980 LET B(I,J)=2*(F-INT(F))
- 990 LET E=INT(F)
- 1000 NEXT J
- 1010 NEXT I
- 1020 FOR J=10 TO 0 STEP -1
- 1030 LET C=0
- 1040 LET H=0
- 1050 FOR I=1 TO N
- 1060 IF B(I,J)=0 THEN 1110
- 1070 LET C=C+1
- 1080 IF A(I)<=H THEN 1110
- 1090 LET H=A(I)
- 1100 LET G=I
- 1110 NEXT I
- 1120 IF C/2<>INT(C/2) THEN 1190
- 1130 NEXT J
- 1140 LET E=INT(N*RND(1)+1)
- 1150 IF A(E)=0 THEN 1140
- 1160 LET F=INT(A(E)*RND(1)+1)
- 1170 LET A(E)=A(E)-F
- 1180 GOTO 1380
- 1190 LET A(G)=0
- 1200 FOR J=0 TO 10
- 1210 LET B(G,J)=0
- 1220 LET C=0
- 1230 FOR I=1 TO N
- 1240 IF B(I,J)=0 THEN 1260
- 1250 LET C=C+1
- 1260 NEXT I
- 1270 LET A(G)=A(G)+2*(C/2-INT(C/2))*2^J
- 1280 NEXT J
- 1290 IF W=1 THEN 1380
- 1300 LET C=0
- 1310 FOR I=1 TO N
- 1320 IF A(I)>1 THEN 1380
- 1330 IF A(I)=0 THEN 1350
- 1340 LET C=C+1
- 1350 NEXT I
- 1360 IF C/2<>INT(C/2) THEN 1380
- 1370 LET A(G)=1-A(G)
- 1380 PRINT "PILE SIZE"
- 1390 FOR I=1 TO N
- 1400 PRINT I;A(I)
- 1410 NEXT I
- 1420 IF W=2 THEN 1450
- 1430 GOSUB 1570
- 1440 IF Z=1 THEN 820
- 1450 PRINT "YOUR MOVE - PILE, NUMBER TO BE REMOVED";
- 1460 INPUT X,Y
- 1470 IF X>N THEN 1450
- 1480 IF X<1 THEN 1450
- 1490 IF X<>INT(X) THEN 1450
- 1500 IF Y>A(X) THEN 1450
- 1510 IF Y<1 THEN 1450
- 1520 IF Y<>INT(Y) THEN 1450
- 1530 LET A(X)=A(X)-Y
- 1540 GOSUB 1570
- 1550 IF Z=1 THEN 800
- 1560 GOTO 700
- 1570 LET Z=0
- 1580 FOR I=1 TO N
- 1590 IF A(I)=0 THEN 1610
- 1600 RETURN
- 1610 NEXT I
- 1620 LET Z=1
- 1630 RETURN
- 1640 PRINT "do you want to play another game";
- 1650 INPUT Q9$
- 1660 IF Q9$="YES" GOTO 1720
- 1670 IF Q9$="yes" GOTO 1720
- 1680 IF Q9$="NO" GOTO 1730
- 1690 IF Q9$="no" GOTO 1730
- 1700 PRINT "PLEASE. YES OR NO."
- 1710 GOTO 1650
- 1720 GOTO 440
- 1730 END
|