10 REM **** GAMMON **** 20 REM **** A SIMULATION OF THE GAME OF BACKGAMMON **** 30 REM 40 REM 50 REM WRITTEN BY: PAUL VON AUTENRIED 60 REM MODIFIED FOR MBASIC BY: KEVIN REDDEN 65 REM FURTHER MODS BY: BRUCE RATOFF 70 REM 80 REM FOR MORE INFORMATION, SEE CREATIVE COMPUTING, JUNE 1978 90 REM 100 DIM A(25),B(25),S(10) 110 REM FILES DEBT 120 L7=0:L6=0:X5=0:L=0:S1=0:S2=0:T1=0:T2=0:H1=0:G=0:P2=0:D5=0 130 D9=1 140 B$="-" 150 FOR I=1 TO 25:A(I)=0:B(I)=0:NEXT I 160 FOR I=1 TO 10:S(I)=0:NEXT I 180 PRINT "DO YOU WANT ANY INSTRUCTIONS "; 190 INPUT A$ 200 IF LEFT$(A$,1)="N" THEN 400 210 PRINT 220 PRINT "BACKGAMMON : MY CHIPS ARE REPRESENTED BY - SIGNS, YOUR" 230 PRINT " CHIPS BY A + SIGN. INPUT YOUR MOVES IN THE FORMAT FROM" 240 PRINT " POINT #, TO POINT #, FROM POINT #, TO POINT #, FOR EACH" 250 PRINT " MOVE. EXAMPLE: 5,7,12,17 WOULD BE THE MOVE FOR DICE ROLLS" 260 PRINT " OF 2 AND 5; MOVING ONE CHIP FROM POINT 5 TO POINT 7, AND" 270 PRINT " ANOTHER FROM POINT 12 TO POINT 17." 280 PRINT " THE BAR IS REPRESENTED BY 0, YOUR HOME IS 25, MY" 290 PRINT " HOME IS 0." 300 PRINT " IF AT ANY TIME, YOU CARE TO DOUBLE, YOU WILL" 310 PRINT " BE ALLOWED 5 SECONDS IMMEDIATELY AFTER THE BOARD" 320 PRINT " PRINTOUT TO INPUT A 1, INDICATING YOU WISH TO CHECK" 330 PRINT " WHAT VALUE THE CUBE HAS, OR A 2, SUGGESTING DOUBLING THE" 340 PRINT " STAKES." 350 PRINT 360 LINE INPUT "HIT RETURN KEY TO CONTINUE:";QQ$ 370 REM 380 REM 390 REM 400 A(19)=5: B(6)=5: A(12)=5: B(13)=5 410 A(1)=2: B(24)=2 420 A(17)=3: B(8)=3 430 GOSUB 2570:GOTO 600: REM **** PRINT "HAVE YOU PLAYED WITH ME BEFORE"; 440 INPUT A$ 450 IF LEFT$(P$,1)="Y" THEN 520 460 REM **** READ #1,1 470 REM **** READ #1,D8 480 D8=D8+1 490 PRINT "YOUR USER NUMBER IS ";D8+1 500 PRINT #1,1;D8 510 D7=D8 520 GOSUB 2570 530 PRINT "WHAT IS YOUR USER NUMBER "; 540 INPUT D7 550 READ #1,D7;D4 560 IF D4<0 THEN 590 570 PRINT "YOU OWE ME ";-D4;"CENTS. OBVIOUSLY YOU LIKE TO MOVE DEEPER INTO DEBT." 580 GOTO 600 590 PRINT "I OWE YOU ";-D4;"CENTS. NICE OF YOU TO RETURN." 600 X=INT((RND(1)*6)+1) 610 Y=INT((RND(1)*6)+1) 620 PRINT "YOUR ROLL IS A ";X;"AND MY ROLL IS A ";Y;"." 630 IF X<>Y THEN 670 640 D9=D9*2 650 PRINT "THE DOUBLING CUBE IS NOW AT ";D9 660 GOTO 600 670 IF Y>X THEN 1260 680 PRINT "YOU START." 690 D1=X 700 D2=Y 710 GOTO 740 720 D1=INT((RND(1)*6)+1) 730 D2=INT((RND(1)*6)+1) 740 IF H1>0 AND B(D1)>1 AND B(D2)>1 THEN 1220 750 PRINT "YOUR ROLL IS ";D1;"AND";D2;". WHAT IS YOUR MOVE"; 760 GOSUB 6440 770 IF D1=D2 THEN 3610 780 INPUT M1,M2,N1,N2 790 IF L7=1 THEN 960 800 IF M1=0 AND M2=0 THEN 850 810 IF M2-M1=D1 THEN 850 820 IF M2-M1=D2 THEN 880 830 PRINT "NICE TRY. NEXT TIME I WILL LOAD THE DICE! REINPUT!!!!"; 840 GOTO 780 850 IF N1=0 AND N2=0 THEN 930 860 IF N2-N1<>D2 THEN 830 870 GOTO 900 880 IF N1=0 AND N2=0 THEN 930 890 IF N2-N1<>D1 THEN 830 900 IF B(M2)>1 OR B(N2)>1 THEN 830 910 IF M1=0 AND M2=0 THEN 940 920 IF N1=0 AND N2=0 THEN 940 930 IF M1<>0 AND N1<>0 AND H1>0 THEN 830 940 IF M1=0 AND M2=0 THEN 1010 950 IF M1<1 THEN 980 960 IF A(M1)<1 THEN 830 970 A(M1)=A(M1)-1 980 A(M2)=A(M2)+1 990 IF M1>0 THEN 1010 1000 H1=H1-1 1010 IF N1=0 AND N2=0 THEN 1080 1020 IF N1<1 THEN 1050 1030 IF A(N1)<1 THEN 830 1040 A(N1)=A(N1)-1 1050 A(N2)=A(N2)+1 1060 IF N1>0 THEN 1080 1070 H1=H1-1 1080 IF M1=0 AND M2=0 THEN 1140 1090 IF B(M2)<1 THEN 1140 1100 B(M2)=B(M2)-1 1110 G=G+1 1120 PRINT "YOU HIT ME!!!!" 1130 IF M2=N2 THEN 1190 1140 IF N2=0 AND N1=0 THEN 1190 1150 IF B(N2)<1 THEN 1190 1160 B(N2)=B(N2)-1 1170 G=G+1 1180 PRINT "YOU HIT ME!!!!" 1190 PRINT "YOUR MOVE IS COMPLETED." 1200 GOSUB 7460 1210 GOTO 1230 1220 PRINT "YOUR ROLL IS ";D1;"AND ";D2;" BUT YOU CAN NOT MOVE!!" 1230 GOSUB 6440 1240 GOTO 1290 1250 REM COMPUTER MOVE DETERMINATION ****** 1260 C1=X 1270 C2=Y 1280 GOTO 1330 1290 S1=0: S2=S1: T1=S2: T2=T1 1300 FOR I=1 TO 10:S(I)=0:NEXT I 1310 C1=INT((RND(1)*6)+1) 1320 C2=INT((RND(1)*6)+1) 1330 GOSUB 6100 1340 PRINT "MY ROLL IS ";C1;"AND ";C2 1350 IF G>0 THEN 5630 1360 IF L6=1 THEN 6760 1370 IF C1=C2 THEN 4200 1380 IF C11 THEN 1480 1460 IF B(I-C1)>1 THEN 1480 1470 IF A(I-C1)<2 THEN 1530 1480 NEXT I 1490 I1=I1-1 1500 IF I1=2 THEN 1650 1510 IF I1=0 THEN 5170 1520 GOTO 1440 1530 IF B(I+(C2-C1))<1 THEN 1480 1540 IF A(I-C1)=0 THEN 1580 1550 PRINT "I GOT YOU." 1560 A(I-C1)=A(I-C1)-1 1570 H1=H1+1 1580 B(I)=B(I)-1 1590 B(I-C1)=B(I-C1)+2 1600 B(I+(C2-C1))=B(I+(C2-C1))-1 1610 S1=I 1620 S2=I-C1: T2=S2 1630 T1=I+(C2-C1) 1640 GOTO 2450 1650 L5=13 1660 FOR I=24 TO L5 STEP -1 1670 IF B(I)<1 THEN 1780 1680 IF C1=0 THEN 1700 1690 IF A(I-C1)=1 THEN 1840 1700 IF C2=0 THEN 1780 1710 IF A(I-C2)=1 THEN 1970 1720 IF I-C1-C2<1 THEN 1740 1730 IF A(I-C1-C2)<>1 THEN 1780 1740 IF A(I-C1)>1 THEN 1760 1750 GOTO 2130 1760 IF A(I-C2)>1 THEN 1780 1770 GOTO 2100 1780 NEXT I 1790 IF L5<>13 OR C2=0 THEN 1810 1800 L5=C2+1 1810 IF I1=2 THEN 3030 1820 IF I1=1 AND C1<>0 AND C2<>0 THEN 1440 1830 GOTO 5170 1840 B(I-C1)=B(I-C1)+1 1850 B(I)=B(I)-1 1860 A(I-C1)=A(I-C1)-1 1870 H1=H1+1 1880 PRINT "I TOOK YOUR CHIP AT ";I-C1 1890 L5=C2+1 1900 S1=I 1910 S2=I-C1 1920 C1=0 1930 GOSUB 6100 1940 IF L6=1 THEN 6760 1950 IF C2=0 THEN 2450 1960 GOTO 1670 1970 B(I-C2)=B(I-C2)+1 1980 B(I)=B(I)-1 1990 A(I-C2)=A(I-C2)-1 2000 H1=H1+1 2010 PRINT "I TOOK YOUR CHIP AT ";I-C2 2020 L5=C1+1 2030 T1=I 2040 T2=I-C2 2050 C2=0 2060 GOSUB 6100 2070 IF L6=1 THEN 6760 2080 IF C1=0 THEN 2450 2090 GOTO 1670 2100 Z=C2 2110 C2=C1 2120 C1=Z 2130 IF I-C1-C2<1 THEN 1780 2140 B(I-C1-C2)=B(I-C1-C2)+1 2150 B(I)=B(I)-1 2160 A(I-C1-C2)=A(I-C1-C2)-1 2170 H1=H1+1 2180 S1=I 2190 S2=I-C1: T1=S2 2200 T2=I-C1-C2 2210 PRINT "I TOOK YOUR CHIP AT ";I-C1-C2 2220 C1=0: C2=C1 2230 IF C1=0 AND C2=0 THEN 2450 2240 IF C1<>0 AND C2<>0 THEN 3030 2250 IF C2=0 THEN 2290 2260 Z=C2 2270 C2=C1 2280 C1=Z 2290 FOR I=C1+1 TO 24 2300 IF B(I)<1 THEN 2320 2310 IF B(I-C1)>0 THEN 2370 2320 NEXT I 2330 Z=C2 2340 C2=C1 2350 C1=Z 2360 GOTO 3030 2370 B(I)=B(I)-1 2380 B(I-C1)=B(I-C1)+1 2390 IF S1=0 THEN 2430 2400 T1=I 2410 T2=I-C1 2420 GOTO 2450 2430 S1=I 2440 S2=I-C1 2450 REM COMPUTER MOVE PRINTOUT ***** 2460 IF S1<>T2 THEN 2530 2470 Z1=S1 2480 Z2=S2 2490 S1=T1 2500 S2=T2 2510 T1=Z1 2520 T2=Z2 2530 PRINT "MY MOVE IS ";S1;",";S2;"AND";T1;",";T2 2540 PRINT "STATUS :" 2550 GOSUB 2570 2560 GOTO 720 2570 REM PRINTOUT ****** 2580 F2=24 2590 P=13 2600 V=-1 2610 PRINT 2620 REM 2630 PRINT " 24 23 22 21 20 19 18 17 16 15 14 13" 2640 PRINT " ....................................." 2650 PRINT TAB(0); 2660 FOR H2=F2 TO P STEP V 2670 IF A(H2)<1 THEN 2710 2680 PRINT USING "###";A(H2); 2690 REM **** IMAGE #,SDX 2700 GOTO 2760 2710 IF B(H2)<1 THEN 2740 2720 PRINT USING "###";-B(H2); 2730 GOTO 2760 2740 PRINT USING "###";0; 2750 REM **** IMAGE #,XDX 2760 IF H2=19 THEN 2790 2770 IF H2=6 THEN 2790 2780 GOTO 2800 2790 PRINT TAB(20); 2800 NEXT H2: PRINT 2810 IF H2=13 THEN 2890 2820 PRINT 2830 PRINT TAB(16);B$;: PRINT USING "# +#";G,H1: PRINT 2840 REM **** IMAGE X,A,DX,SD 2850 V=1 2860 P=12 2870 F2=1 2880 GOTO 2650 2890 PRINT " ....................................." 2900 PRINT " 1 2 3 4 5 6 7 8 9 10 11 12": PRINT 2910 GOTO 3010:REM **** PRINT LIN(-2) 2920 ENTER 5,R1,D5 2930 GOTO D5+1 OF 3010,2940,7460 2940 PRINT "THE DOUBLING CUBE IS AT "; 2950 IF D9<0 THEN 2990 2960 PRINT D9;". YOU MAY DOUBLE IF YOU WISH." 2970 D5=0 2980 GOTO 2920 2990 PRINT -D9;"IT IS MY TURN TO DOUBLE." 3000 D5=0 3010 GOSUB 6100 3020 RETURN 3030 REM SAFE MOVE ****** 3040 FOR I=24 TO L5 STEP -1 3050 IF B(I)<1 THEN 3190 3060 IF C1=0 OR C2=0 THEN 3100 3070 IF I-C1-C2<1 THEN 3100 3080 IF B(I-C1-C2)>0 AND A(I-C1)<1 THEN 3250 3090 IF B(I-C1-C2)>0 AND A(I-C2)<1 THEN 3450 3100 IF C1=0 THEN 3130 3110 IF B(I-C1)>0 THEN 3220 3120 IF C2=0 THEN 3190 3130 IF B(I-C2)>0 THEN 3420 3140 IF A(I-C1)>0 THEN 3180 3150 IF I-C1-C2<1 THEN 3190 3160 IF B(I-C1-C2)<1 THEN 3190 3170 GOTO 3250 3180 IF A(I-C2)<1 AND B(I-C1-C2)>1 THEN 3450 3190 NEXT I 3200 I1=I1-1 3210 GOTO 1660 3220 IF C2=0 THEN 3310 3230 IF I-C1-C2<1 THEN 3190 3240 IF B(I-C1-C2)<1 THEN 3310 3250 B(I-C1-C2)=B(I-C1-C2)+1 3260 B(I)=B(I)-1 3270 S1=I 3280 S2=I-C1: T2=S2 3290 T1=I-C1-C2 3300 GOTO 2450 3310 B(I)=B(I)-1 3320 B(I-C1)=B(I-C1)+1 3330 S1=I 3340 S2=I-C1 3350 C1=0 3360 GOSUB 6100 3370 IF L6=1 THEN 6760 3380 L5=C2+1 3390 IF C2=0 THEN 2450 3400 IF B(I)>0 THEN 3130 3410 GOTO 3190 3420 IF C1=0 THEN 3510 3430 IF I-C1-C2<1 THEN 3510 3440 IF B(I-C1-C2)<1 THEN 3510 3450 B(I-C1-C2)=B(I-C1-C2)+1 3460 B(I)=B(I)-1 3470 S1=I 3480 S2=I-C2: T1=S2 3490 T2=I-C1-C2 3500 GOTO 2450 3510 B(I)=B(I)-1 3520 B(I-C2)=B(I-C2)+1 3530 T1=I 3540 T2=I-C2 3550 C2=0 3560 GOSUB 6100 3570 IF L6=1 THEN 6760 3580 L5=C1+1 3590 IF C1=0 THEN 2450 3600 GOTO 3190 3610 REM PLAYER DOUBLES ****** 3620 INPUT M1,M2,M3,M4,M5,M6,M7,M8 3630 IF L7=1 THEN 3750 3640 IF M1=0 AND M2=0 THEN 3680 3650 IF M2-M1=D1 THEN 3680 3660 PRINT "NICE TRY. NEXT TIME, I WILL LOAD THE DICE. REINPUT!!!!"; 3670 GOTO 3620 3680 IF M3=0 AND M4=0 THEN 3700 3690 IF M4-M3<>D1 THEN 3660 3700 IF M5=0 AND M6=0 THEN 3720 3710 IF M6-M5<>D1 THEN 3660 3720 IF M7=0 AND M8=0 THEN 3740 3730 IF M8-M7<>D1 THEN 3660 3740 IF B(M2)>1 OR B(M4)>1 OR B(M6)>1 OR B(M8)>1 THEN 3660 3750 IF M1=0 AND M2=0 THEN 3820 3760 IF M1<1 THEN 3790 3770 IF A(M1)<1 THEN 3660 3780 A(M1)=A(M1)-1 3790 A(M2)=A(M2)+1 3800 IF M1>0 THEN 3820 3810 H1=H1-1 3820 IF M3=0 AND M4=0 THEN 3890 3830 IF M3<1 THEN 3860 3840 IF A(M3)<1 THEN 3660 3850 A(M3)=A(M3)-1 3860 A(M4)=A(M4)+1 3870 IF M3>0 THEN 3890 3880 H1=H1-1 3890 IF M5=0 AND M6=0 THEN 3960 3900 IF M5<1 THEN 3930 3910 IF A(M5)<1 THEN 3660 3920 A(M5)=A(M5)-1 3930 A(M6)=A(M6)+1 3940 IF M5>0 THEN 3960 3950 H1=H1-1 3960 IF M7=0 AND M8=0 THEN 4030 3970 IF M7<1 THEN 4000 3980 IF A(M7)<1 THEN 3660 3990 A(M7)=A(M7)-1 4000 A(M8)=A(M8)+1 4010 IF M7>0 THEN 4030 4020 H1=H1-1 4030 IF B(M2)<>1 THEN 4070 4040 B(M2)=B(M2)-1 4050 G=G+1 4060 PRINT "YOU HIT ME !!!!" 4070 IF B(M4)<>1 THEN 4110 4080 B(M4)=B(M4)-1 4090 G=G+1 4100 PRINT "YOU HIT ME !!!!" 4110 IF B(M6)<>1 THEN 4150 4120 B(M6)=B(M6)-1 4130 G=G+1 4140 PRINT "YOU HIT ME !!!!" 4150 IF B(M8)<>1 THEN 4190 4160 B(M8)=B(M8)-1 4170 G=G+1 4180 PRINT "YOU HIT ME !!!!" 4190 GOTO 1190 4200 REM COMPUTER DOUBLES ****** 4210 X3=0: L=X3 4220 FOR I=1 TO 10:S(I)=0:NEXT I 4230 C3=C1: C4=C3 4240 L5=C1+1 4250 FOR I=L5 TO 24 4260 IF B(I)<2 THEN 4750 4270 IF A(I-C1)>1 THEN 4750 4280 IF I-(2*C1)<1 THEN 4340 4290 IF A(I-(2*C1))<>1 THEN 4340 4300 C1=2*C1 4310 H=I 4320 X3=1 4330 GOTO 4420 4340 IF B(I-C1)>1 THEN 4770 4350 IF B(I)-2=1 THEN 4770 4360 X4=I+1 4370 FOR H=24 TO X4 STEP -1 4380 X5=0 4390 IF B(H)<2 THEN 4700 4400 IF A(H-C1)>1 THEN 4700 4410 IF A(H-C1)=0 THEN 4450 4420 PRINT "I HIT YOUR CHIP AT POINT ";H-C1 4430 H1=H1+1 4440 A(H-C1)=0 4450 IF X3<>1 THEN 4470 4460 C1=C1/2 4470 S(2)=H-C1: S(4)=S(2) 4480 S(1)=H: S(3)=S(1) 4490 B(H)=B(H)-2 4500 IF X3<>1 THEN 4520 4510 C1=C2*2 4520 B(H-C1)=B(H-C1)+2 4530 IF X3<>1 THEN 4570 4540 C1=C1/2 4550 I=H-C1 4560 GOTO 4640 4570 X5=-1 4580 B(I)=B(I)-2 4590 B(I-C1)=B(I-C1)+2 4600 IF A(I-C1)=0 THEN 4640 4610 PRINT "I HIT YOUR CHIP AT POINT ";I-C1 4620 H1=H1+1 4630 A(I-C1)=0 4640 S(5)=I: S(7)=S(5) 4650 S(6)=I-C1: S(8)=S(6) 4660 IF X5<>-1 THEN 4680 4670 C3=0: C4=C3 4680 C1=0: C2=C1 4690 GOTO 4800 4700 NEXT H 4710 IF X4<>I+1 THEN 4580 4720 X4=C4+1 4730 GOTO 4700 4740 GOTO 4580 4750 NEXT I 4760 GOTO 4800 4770 IF L>0 THEN 4360 4780 L=L+1 4790 GOTO 4750 4800 REM COMPUTER DOUBLES SAFE MOVE ****** 4810 IF C1=0 AND C2=0 AND C3=0 AND C4=0 THEN 5030 4820 IF C1<>0 AND C2<>0 AND C3<>0 AND C4<>0 THEN 4850 4830 F1=2: F=F1 4840 GOTO 4870 4850 F1=4: F=F1 4860 L5=C4+1 4870 FOR I=24 TO L5 STEP -1 4880 IF B(I)<1 THEN 5020 4890 IF A(I-C4)>1 THEN 5020 4900 IF A(I-C4)=0 THEN 4940 4910 PRINT "I HIT YOUR CHIP AT POINT ";I-C4 4920 H1=H1+1 4930 A(I-C4)=0 4940 B(I-C4)=B(I-C4)+1 4950 B(I)=B(I)-1 4960 S((2*F)-1)=I 4970 S(2*F)=I-C4 4980 F=F-1 4990 IF F<>0 AND B(I)<>0 THEN 4940 5000 IF F<>0 AND B(I)=0 THEN 5020 5010 GOTO 5030 5020 NEXT I 5030 FOR I=1 TO 5 STEP 2 5040 IF S(I+1)>=S(I+3) THEN 5120 5050 Z3=S(I+2) 5060 Z4=S(I+3) 5070 S(I+2)=S(I) 5080 S(I+3)=S(I+1) 5090 S(I)=Z3 5100 S(I+1)=Z4 5110 GOTO 5030 5120 NEXT I 5130 PRINT "MY MOVE IS";S(1);",";S(2);"AND";S(3);",";S(4); 5140 PRINT "AND";S(5);",";S(6);"AND";S(7);",";S(8) 5150 GOSUB 6100 5160 GOTO 2540 5170 REM COMPUTER FARTHEST MOVE ****** 5180 C9=0 5190 IF C2=0 THEN 5220 5200 L5=C2+1 5210 GOTO 5230 5220 L5=C1+1 5230 X1=1 5240 GOSUB 6100 5250 IF L6=1 THEN 6760 5260 FOR I=24 TO L5 STEP -1 5270 IF B(I)<>X1 THEN 5380 5280 IF C2=0 THEN 5370 5290 IF A(I-C2)>1 THEN 5530 5300 B(I)=B(I)-1 5310 B(I-C2)=B(I-C2)+1 5320 T1=I 5330 T2=I-C2 5340 C2=0 5350 L5=C1+1 5360 IF C1=0 THEN 2450 5370 IF A(I-C1)<1 THEN 5540 5380 NEXT I 5390 IF X1<>1 THEN 5410 5400 X1=16 5410 X1=X1-1 5420 IF X1>0 THEN 5260 5430 IF C1=0 OR C9=1 THEN 5470 5440 C9=1 5450 C2=0 5460 GOTO 5220 5470 IF C1<>0 THEN 5500 5480 S1=0: S2=S1 5490 GOTO 2450 5500 IF C2<>0 THEN 6080 5510 T1=0: T2=T1 5520 GOTO 2450 5530 IF C1=0 OR A(I-C1)>1 THEN 5380 5540 IF B(I)<1 THEN 5380 5550 B(I)=B(I)-1 5560 B(I-C1)=B(I-C1)+1 5570 S1=I 5580 S2=I-C1 5590 C1=0 5600 L5=C2+1 5610 IF C2=0 THEN 2450 5620 GOTO 5270 5630 REM BLOT ****** 5640 I1=1 5650 G1=G 5660 C3=C1 5670 C4=C2 5680 IF A(25-C1)=1 THEN 6000 5690 IF A(25-C2)=1 THEN 6040 5700 IF A(25-C1)<1 AND B(25-C1)>0 THEN 5890 5710 IF A(25-C2)>1 THEN 5870 5720 B(25-C2)=B(25-C2)+1 5730 T1=0 5740 T2=25-C2 5750 L5=C1+1 5760 C2=0 5770 IF C3<>C4 THEN 5800 5780 S(9-(2*(G MAX 2)))=T1 5790 S(10-(2*(G MAX 2)))=T2 5800 G=G-1 5810 IF G=0 AND C3=C4 THEN 5980 5820 IF G=0 AND G1=2 THEN 2460 5830 IF G=0 THEN 1660 5840 IF S(7)=0 OR S(5)=0 THEN 5870 5850 C1=C3 5860 C2=C4 5870 IF C1=0 OR C2=0 THEN 5390 5880 IF A(25-C1)>1 THEN 6080 5890 B(25-C1)=B(25-C1)+1 5900 S1=0 5910 S2=25-C1 5920 L5=C2+1 5930 C1=0 5940 IF C3<>C4 THEN 5800 5950 S(9-(2*(G MAX 2)))=S1 5960 S(10-(2*(G MAX 2)))=S2 5970 GOTO 5800 5980 F1=4-G1: F=F1 5990 GOTO 4870 6000 PRINT "I HIT YOU." 6010 A(25-C1)=0 6020 H1=H1+1 6030 GOTO 5890 6040 PRINT "I HIT YOU." 6050 A(25-C2)=0 6060 H1=H1+1 6070 GOTO 5720 6080 PRINT "I CAN NOT MOVE." 6090 GOTO 2540 6100 REM COMPUTER HOME ****** 6110 G8=0 6120 FOR J=7 TO 24 6130 G8=G8+B(J) 6140 NEXT J 6150 IF G8<>0 THEN 6240 6160 G8=0 6170 FOR J=1 TO 6 6180 G8=G8+B(J) 6190 NEXT J 6200 IF G8=0 THEN 6260 6210 L5=-1 6220 L6=1 6230 GOTO 6250 6240 L6=0 6250 RETURN 6260 PRINT "I WON." 6270 IF G7<>0 AND G8<>0 THEN 6380 6280 J1=A(1)+A(2)+A(3)+A(4)+A(5)+A(6) 6290 IF A(7)+A(8)+A(9)+A(10)+A(11)+A(12)+A(13)+A(14)+A(15)+A(16)+A(17)+A(18)=0 THEN 6310 6300 M$="GAMMONED." 6310 IF J1=0 THEN 6330 6320 M$="BACKGAMMONED." 6330 IF LEFT$(M$,1)<>"G" THEN 6350 6340 D9=D9*2: GOTO 6370 6350 IF LEFT$(M$,1)<>"B" THEN 6380 6360 D9=D9*3 6370 PRINT "YOU WERE ";M$ 6380 PRINT "YOU HAVE LOST ";ABS(D9);"POINTS. I'LL REMEMBER THAT." 6390 PRINT #1,D7;D4+ABS(D9) 6400 PRINT "CARE FOR A REMATCH "; 6410 INPUT A$ 6420 IF LEFT$(A$,1)="Y" THEN 100 6430 STOP 6440 REM PLAYER WIN SUBROUTINE ****** 6450 G7=H1 6460 FOR J=1 TO 18 6470 G7=G7+A(J) 6480 NEXT J 6490 IF G7<>0 THEN 6570 6500 G7=0 6510 FOR J=24 TO 19 STEP -1 6520 G7=G7+A(J) 6530 NEXT J 6540 IF G7=0 THEN 6590 6550 L7=1 6560 GOTO 6580 6570 L7=0 6580 RETURN 6590 PRINT "YOU WON." 6600 IF G7<>0 AND G8<>0 THEN 6710 6610 J2=B(24)+B(23)+B(22)+B(21)+B(20)+B(19) 6620 IF B(18)+B(17)+B(16)+B(15)+B(14)+B(13)+B(12)+B(11)+B(10)+B(9)+B(8)+B(7)=0 THEN 6640 6630 M$="GAMMONED." 6640 IF J2=0 THEN 6660 6650 M$="BACKGAMMONED." 6660 IF LEFT$(M$,1)<>"G" THEN 6680 6670 D9=D9*2: GOTO 6710 6680 IF LEFT$(M$,1)<>"B" THEN 6710 6690 D9=D9*3 6700 PRINT "I WAS ";M$ 6710 PRINT "I HAVE LOST ";ABS(D9);"POINTS. " 6720 PRINT #1,D7;D4-ABS(D9) 6730 PRINT "GOOD BYE." 6740 REM **** PRINT LIN(-5) 6750 STOP 6760 REM COMPUTER FINISH ****** 6770 I2=9 6780 H3=1: F3=H3 6790 C3=0: C4=C3 6800 IF C1<>C2 THEN 6830 6810 C3=C1 6820 C4=C2 6830 C7=C1 6840 C8=C2 6850 FOR I=6 TO 1 STEP -1 6860 IF I=C1 AND B(I)>= I2 THEN 7230 6870 IF I=C2 AND B(I)>= I2 THEN 7050 6880 IF I=C3 AND B(I)>= I2 THEN 7360 6890 IF I=C4 AND B(I)>= I2 THEN 7380 6900 NEXT I 6910 I2=I2-1 6920 IF I2<>0 THEN 6850 6930 IF C1=0 THEN 6950 6940 C1=C1+H3 6950 IF C2=0 THEN 6970 6960 C2=C2+H3 6970 IF C3=0 THEN 6990 6980 C3=C3+H3 6990 IF C4=0 THEN 7010 7000 C4=C4+H3 7010 IF C1<>7 AND C2<>7 AND C3<>7 AND C4<>7 THEN 7030 7020 H3=-1 7030 I2=9 7040 GOTO 6850 7050 S(F3)=I: T1=S(F3) 7060 IF I-C8<1 THEN 7150 7070 IF A(I-C8)>1 THEN 6900 7080 IF A(I-C8)<1 THEN 7120 7090 PRINT "I TOOK YOUR CHIP AT ";I-C8 7100 H1=H1+1 7110 A(I-C8)=A(I-C8)-1 7120 B(I-C8)=B(I-C8)+1 7130 T2=I-C8: S(F3+1)=T2 7140 GOTO 7160 7150 T2=-1: S(F3+1)=T2 7160 C2=0 7170 B(I)=B(I)-1 7180 GOSUB 6100 7190 IF C1=0 AND C2=0 AND C3=0 AND C4=0 AND C7=C8 THEN 5030 7200 IF C1=0 AND C2=0 AND C3=0 AND C4=0 THEN 2460 7210 F3=F3+2 7220 GOTO 6870 7230 S1=I: S(F3)=S1 7240 IF I-C7<1 THEN 7330 7250 IF A(I-C7)>1 THEN 6900 7260 IF A(I-C7)<1 THEN 7300 7270 PRINT "I TOOK YOUR CHIP AT ";I-C7 7280 H1=H1+1 7290 A(I-C7)=A(I-C7)-1 7300 B(I-C7)=B(I-C7)+1 7310 S2=I-C7: S(F3+1)=S2 7320 GOTO 7340 7330 S2=-1: S(F3+1)=S2 7340 C1=0 7350 GOTO 7170 7360 A=1 7370 GOTO 7390 7380 A=2 7390 Z5=C3 7400 C3=C1 7410 C1=Z5 7420 Z6=C4 7430 C4=C2 7440 C2=Z6 7450 GOTO A OF 7230,7050 7460 REM DOUBLES EVALUATION ****** 7470 IF ABS(D9)>=64 THEN 7720 7480 U1=0: U2=0 7490 FOR R2=1 TO 5 7500 R7=0: R8=0 7510 READ R3,R5,R6 7520 FOR R4=R3 TO R5 7530 R7=B(R4)+R7 7540 R8=A(R4)+R8 7550 NEXT R4 7560 U1=U1+(R6*R7) 7570 U2=U2+((3-R6)*R8) 7580 NEXT R2 7590 DATA 1,6,.5,7,12,1,13,15,1.5,16,19,2,20,24,2.5 7600 RESTORE 7610 IF U1<=U2 AND D9>0 AND D5=2 THEN 7690 7620 IF U1<=U2 AND D5<>2 AND D9<0 THEN 7660 7630 IF D5<>2 THEN 7720 7640 PRINT "I REFUSE TO DOUBLE THE STAKES." 7650 GOTO 6590 7660 PRINT "CARE TO DOUBLE THE STAKES "; 7670 INPUT R$ 7680 IF R$(1,1)<>"Y" THEN 6260 7690 D9=D9*2 7700 PRINT "FINE." 7710 D5=0 7720 RETURN 7730 END  STAKES "; 7670 INPUT R$ 7680 IF R$(1,1)<>"Y" THEN 6260 7690 D9=D9*2 7700 PRINT "FINE." 7