File YAHTZE.BA (BASIC source file)

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

900 REMARKABLY TRANSLATED TO OS8 BASIC BY KAY R. FISHER ...DEC
1060 DIM A(4,15),T(4,15),F(4,15),S(4,15),L(4,15),K(4,15),H(15,15)
1065 DIM Z$(15)
1070 FOR I=1TO5\B(I)=0\Q(I)=0\A1(I)=0\NEXT I
1120 RANDOMIZE
1130 PRINT "HOW MANY PLAYERS (TYPE: '0' FOR INSTRUCTIONS)";
1140 INPUT P
1150 IF P>15 THEN 1180
1160 IF P<>0 THEN 1240\CHAIN "RKB0:YAHTZE.IN"
1180 GOSUB 5710
1190 GOTO 1130
1240 FOR I=1 TO P
1250 A(1,I)=-5
1260 T(1,I)=-5\T(2,I)=-5\F(1,I)=-5\F(2,I)=-5\S(1,I)=-5
1310 T(3,I)=-5\F(3,I)=-5\F(4,I)=-5\S(2,I)=-5\L(1,I)=-5
1360 Y(I)=-5\C(I)=-5\K(1,I)=0\K1(I)=0\M(I)=0
1410 PRINT "NAME";
1420 INPUT N$(I)
1470 NEXT I
1480 R=0
1490 R=R+1
1495 IF R>13 THEN 6470
1500 PRINT\PRINT\PRINT "ROUND";R\PRINT
1540 FOR I=1 TO P
1550 PRINT\PRINT\PRINT N$(I);"'S TURN"
1580 FOR L=1TO5\A1(L)=INT(6*RND(0)+1)\NEXT L
1605 GOSUB 1610
1607 GOTO 1700
1610 G=0
1620 FOR X=1 TO 5
1630 IF A1(X)>=A1(X+1) THEN 1680
1640 H=A1(X)
1650 A1(X)=A1(X+1)
1660 A1(X+1)=H
1670 G=1
1680 NEXT X
1685 IF G=1 THEN 1610
1690 RETURN
1700 PRINT "YOU HAVE A ";A1(1);A1(2);A1(3);A1(4);A1(5)
1710 PRINT "THIS IS YOUR 2ND OF 3 ROLLS,"
1720 PRINT "HOW MANY DO YOU WANT TO CHANGE";
1730 INPUT Z
1780 IF Z=0 THEN 2620
1790 IF Z=5 THEN 1890
1792 FOR E=1 TO 5\B(E)=0\NEXT E
1800 FOR S=1 TO Z
1810 PRINT "WHICH";
1820 INPUT B(S)
1870 NEXT S
1880 GOTO 1930
1890 FOR S=1 TO 5
1900 A1(S)=INT(6*RND(-1)+1)
1910 NEXT S
1920 GOTO 2050
1930 FOR L=1 TO 5
1940 FOR L1=1 TO 5
1950 IF B(L)=L1 THEN 1970
1960 GOTO 1980
1970 A1(L1)=Q(L1)
1980 NEXT L1
1990 NEXT L
2000 FOR S=1 TO 5
2010 IF A1(S)=0 THEN 2030
2020 GOTO 2040
2030 A1(S)=INT(6*RND(-1)+1)
2040 NEXT S
2050 GOSUB 1610
2140 PRINT "YOU HAVE A ";A1(1);A1(2);A1(3);A1(4);A1(5)
2150 PRINT "THIS IS YOUR LAST ROLL,"
2160 PRINT "HOW MANY DO YOU WANT TO CHANGE";
2170 INPUT Z
2220 IF Z=0 THEN 2620
2230 IF Z=5 THEN 2360
2240 FOR E=1 TO 5
2250 B(E)=0
2260 NEXT E
2270 FOR S=1 TO Z
2280 PRINT "WHICH";
2290 INPUT B(S)
2340 NEXT S
2350 GOTO 2400
2360 FOR S=1 TO 5
2370 A1(S)=INT(6*RND(-1)+1)
2380 NEXT S
2390 GOTO 2520
2400 FOR L=1 TO 5
2410 FOR L1=1 TO 5
2420 IF B(L)=L1 THEN 2440
2430 GOTO 2450
2440 A1(L1)=Q(L)
2450 NEXT L1
2460 NEXT L
2470 FOR S=1 TO 5
2480 IF A1(S)=0 THEN 2500
2490 GOTO 2510
2500 A1(S)=INT(6*RND(-1)+1)
2510 NEXT S
2520 GOSUB 1610
2610 PRINT "YOU HAVE A ";A1(1);A1(2);A1(3);A1(4);A1(5)
2620 PRINT "HOW DO YOU WANT THIS ROUND SCORED";
2630 INPUT Z$
2650 IF Z$="SUMMARY" THEN 2670
2660 GOTO 2700
2670 GOSUB 6140
2675 GOTO 2620
2700 IF Z$="ACES" THEN 2850
2710 IF Z$="TWOS" THEN 2940
2720 IF Z$="THREES" THEN 3030
2730 IF Z$="FOURS" THEN 3120
2740 IF Z$="FIVES" THEN 3210
2750 IF Z$="SIXES" THEN 3300
2760 IF Z$="THREE OF A KIND" THEN 3390
2770 IF Z$="FOUR OF A KIND" THEN 3440
2780 IF Z$="FULL HOUSE" THEN 3520
2790 IF Z$="SM. STRAIGHT" THEN 3620
2800 IF Z$="LG. STRAIGHT" THEN 3660
2810 IF Z$="YAHTZEE" THEN 3730
2820 IF Z$="CHANCE" THEN 3820
2830 IF Z$="ZERO" THEN 3890
2840 GOTO 2620
2850 IF A(1,I)<>-5 THEN 3870
2860 A(1,I)=0
2870 FOR S=1 TO 5
2880 IF A1(S)=1 THEN 2900
2890 GOTO 2910
2900 A(1,I)=A(1,I)+1
2910 NEXT S
2920 M(I)=A(1,I)
2930 GOTO 4690
2940 IF T(1,I)<>-5 THEN 3870
2950 T(1,I)=0
2960 FOR S=1 TO 5
2970 IF A1(S)=2 THEN 2990
2980 GOTO 3000
2990 T(1,I)=T(1,I)+2
3000 NEXT S
3010 M(I)=T(1,I)
3020 GOTO 4690
3030 IF T(2,I)<>-5 THEN 3870
3040 T(2,I)=0
3050 FOR S=1 TO 5
3060 IF A1(S)=3 THEN 3080
3070 GOTO 3090
3080 T(2,I)=T(2,I)+3
3090 NEXT S
3100 M(I)=T(2,I)
3110 GOTO 4690
3120 IF F(1,I)<>-5 THEN 3870
3130 F(1,I)=0
3140 FOR S=1 TO 5
3150 IF A1(S)=4 THEN 3170
3160 GOTO 3180
3170 F(1,I)=F(1,I)+4
3180 NEXT S
3185 M(I)=F(1,I)
3190 GOTO 4690
3210 IF F(2,I)<>-5 THEN 3870
3220 F(2,I)=0
3230 FOR S=1 TO 5
3240 IF A1(S)=5 THEN 3260
3250 GOTO 3270
3260 F(2,I)=F(2,I)+5
3270 NEXT S
3280 M(I)=F(2,I)
3290 GOTO 4690
3300 IF S(1,I)<>-5 THEN 3870
3310 S(1,I)=0
3320 FOR S=1 TO 5
3330 IF A1(S)=6 THEN 3350
3340 GOTO 3360
3350 S(1,I)=S(1,I)+6
3360 NEXT S
3370 M(I)=S(1,I)
3380 GOTO 4690
3390 IF T(3,I)<>-5 THEN 3870
3400 T(3,I)=0
3410 T(3,I)=A1(1)+A1(2)+A1(3)+A1(4)+A1(5)
3420 M(I)=T(3,I)
3430 GOTO 4690
3440 IF F(3,I)<>-5 THEN 3870
3450 IF A1(1)<>A1(4) THEN 4960
3460 IF A1(2)<>A1(3) THEN 4960
3470 F(3,I)=0
3480 F(3,I)=A1(1)+A1(2)+A1(3)+A1(4)+A1(5)
3490 M(I)=F(3,I)
3500 F(3,I)=0
3510 GOTO 4690
3520 IF F(4,I)<>-5 THEN 3870
3530 IF A1(1)<>A1(2) THEN 4960
3540 IF A1(4)<>A1(5) THEN 4960
3550 IF A1(3)<>A1(2) THEN 3570
3560 GOTO 3590
3570 IF A1(3)<>A1(4) THEN 4960
3590 F(4,I)=25
3600 M(I)=F(4,I)
3610 GOTO 4690
3620 IF S(2,I)<>-5 THEN 3870
3630 S(2,I)=30
3640 M(I)=S(2,I)
3650 GOTO 4690
3660 IF L(1,I)<>-5 THEN 3870
3670 IF A1(1)<>A1(5)+4 THEN 4960
3680 IF A1(2)<>A1(4)+2 THEN 4960
3690 IF A1(3)<>A1(5)+2 THEN 4960
3700 L(1,I)=40
3710 M(I)=L(1,I)
3720 GOTO 4690
3730 IF Y(I)<>-5 THEN 3870
3740 FOR O=1 TO 5
3750 FOR O1=1 TO 5
3760 IF A1(O)<>A1(O1) THEN 4960
3770 NEXT O1
3780 NEXT O
3790 Y(I)=50
3800 M(I)=Y(I)
3810 GOTO 4690
3820 IF C(I)<>-5 THEN 3870
3830 C(I)=A1(1)+A1(2)+A1(3)+A1(4)+A1(5)
3850 M(I)=C(I)
3860 GOTO 4690
3870 GOSUB 4650
3880 GOTO 2620
3890 PRINT "WHAT DO YOU WANT TO ZERO";
3900 INPUT Z$
3920 IF Z$="SUMMARY" THEN 3940
3930 GOTO 3970
3940 GOSUB 6140
3945 GOTO 2620
3970 IF Z$="ACES" THEN 4110
3980 IF Z$="TWOS" THEN 4150
3990 IF Z$="THREES" THEN 4190
4000 IF Z$="FOURS" THEN 4230
4010 IF Z$="FIVES" THEN 4270
4020 IF Z$="SIXES" THEN 4310
4030 IF Z$="THREE OF A KIND" THEN 4350
4040 IF Z$="FOUR OF A KIND" THEN 4390
4050 IF Z$="FULL HOUSE" THEN 4430
4060 IF Z$="SM. STRAIGHT" THEN 4470
4070 IF Z$="LG. STRAIGHT" THEN 4510
4080 IF Z$="YAHTZEE" THEN 4550
4090 IF Z$="CHANCE" THEN 4590
4100 GOTO 3890
4110 IF A(1,I)<>-5THEN 4630
4120 A(1,I)=0
4130 M(I)=A(1,I)
4140 GOTO 4690
4150 IF T(1,I)<>-5 THEN 4630
4160 T(1,I)=0
4170 M(I)=T(1,I)
4180 GOTO 4690
4190 IF T(2,I)<>-5 THEN 4630
4200 T(2,I)=0
4210 M(I)=T(2,I)
4220 GOTO 4690
4230 IF F(1,I)<>-5 THEN 4630
4240 F(1,I)=0
4250 M(I)=F(1,I)
4260 GOTO 4690
4270 IF F(2,I)<>-5 THEN 4630
4280 F(2,I)=0
4290 M(I)=F(2,I)
4300 GOTO 4690
4310 IF S(1,I)<>-5 THEN 4630
4320 S(1,I)=0
4330 M(I)=S(1,I)
4340 GOTO 4690
4350 IF T(3,I)<>-5 THEN 4630
4360 T(3,I)=0
4370 M(I)=T(3,I)
4380 GOTO 4690
4390 IF F(3,I)<>-5 THEN 4630
4400 F(3,I)=0
4410 M(I)=F(3,I)
4420 GOTO 4690
4430 IF F(4,I)<>-5 THEN 4630
4440 F(4,I)=0
4450 M(I)=F(4,I)
4460 GOTO 4690
4470 IF S(2,I)<>-5 THEN 4630
4480 S(2,I)=0
4490 M(I)=S(2,I)
4500 GOTO 4690
4510 IF L(1,I)<>-5 THEN 4630
4520 L(1,I)=0
4530 M(I)=L(1,I)
4540 GOTO 4690
4550 IF Y(I)<>-5 THEN 4630
4560 Y(I)=0
4570 M(I)=Y(I)
4580 GOTO 4690
4590 IF C(I)<>-5 THEN 4630
4600 C(I)=0
4610 M(I)=C(I)
4620 GOTO 4690
4630 GOSUB 4650
4640 GOTO 2620
4650 PRINT "YOU HAVE ALREADY USED ";Z$;" AS A CATEGORY"
4660 PRINT
4670 RETURN
4680 GOTO 2620
4690 PRINT N$(I);" YOU GET A SCORE OF ";M(I);" FOR THIS ROUND"
4700 GOTO 5750
4710 NEXT I
4720 PRINT
4730 FOR J=1 TO P
4740 IF M(J)=A(1,J) THEN 4810
4750 IF M(J)=T(1,J) THEN 4810
4760 IF M(J)=T(2,J) THEN 4810
4770 IF M(J)=F(1,J) THEN 4810
4780 IF M(J)=F(2,J) THEN 4810
4790 IF M(J)=S(1,J) THEN 4810
4800 GOTO 4920
4810 K(1,J)=K(1,J)+M(J)
4830 IF K(1,J)>=63 THEN 4860
4840 K1(J)=K1(J)+M(J)
4850 GOTO 4930
4860 K(1,J)=K(1,J)+35
4870 PRINT N$(J);" HAS ACCUMULATED AT LEAST 63 POINTS"
4880 PRINT "IN THE FIRST SIX CATEGORIES."
4890 PRINT "HE SCORED A BONUS OF 35 POINTS!"
4900 K1(J)=K1(J)+M(J)
4910 GOTO 4930
4920 K1(J)=K1(J)+M(J)
4930 PRINT N$(J);" HAS ";K1(J);" POINTS"
4940 NEXT J
4950 GOTO 1490
4960 PRINT "IT IS ILLEGAL TO USE ";Z$;" THIS ROUND"
4970 GOTO 2620
5680 PRINT "WHICH CATEGORY DO YOU WANT ZEROED"
5690 RETURN
5710 PRINT "A MAXIMUM OF 15 PLAYERS IS ALLOWED"
5720 RETURN
5750 IF Z$="ACES" THEN 5880
5760 IF Z$="TWOS" THEN 5900
5770 IF Z$="THREES" THEN 5920
5780 IF Z$="FOURS" THEN 5940
5790 IF Z$="FIVES" THEN 5960
5800 IF Z$="SIXES" THEN 5980
5810 IF Z$="THREE OF A KIND" THEN 6000
5820 IF Z$="FOUR OF A KIND" THEN 6020
5830 IF Z$="FULL HOUSE" THEN 6040
5840 IF Z$="SM. STRAIGHT" THEN 6060
5850 IF Z$="LG. STRAIGHT" THEN 6080
5860 IF Z$="YAHTZEE" THEN 6100
5870 IF Z$="CHANCE" THEN 6120
5880 H(I,R)=1\GOTO 4710
5900 H(I,R)=2\GOTO 4710
5920 H(I,R)=3\GOTO 4710
5940 H(I,R)=4\GOTO 4710
5960 H(I,R)=5\GOTO 4710
5980 H(I,R)=6\GOTO 4710
6000 H(I,R)=7\GOTO 4710
6020 H(I,R)=8\GOTO 4710
6040 H(I,R)=9\GOTO 4710
6060 H(I,R)=10\GOTO 4710
6080 H(I,R)=11\GOTO 4710
6100 H(I,R)=12\GOTO 4710
6120 H(I,R)=13\GOTO 4710
6140 PRINT N$(I);" HAS USED THE FOLLOWING CATEGORIES:"
6150 FOR S=1 TO R-1
6160 IF H(I,S)>7 THEN 6180
6170 IF H(I,S)=2 GOTO 6210\IFH(I,S)=3GOTO6230\IFH(I,S)=4GOTO6250
6175 IF H(I,S)=5 GOTO 6270\IFH(I,S)=6GOTO6290\IFH(I,S)=7GOTO6310
6180 IF H(I,S)=8 GOTO 6330\IFH(I,S)=9GOTO6350\IFH(I,S)=10GOTO6370
6185 IF H(I,S)=11GOTO6390\IFH(I,S)=12GOTO6410\IFH(I,S)=13GOTO6430
6190 PRINT "ACES, ";\GOTO 6440
6210 PRINT "TWOS, ";\GOTO 6440
6230 PRINT "THREES, ";\GOTO 6440
6250 PRINT "FOURS, ";\GOTO 6440
6270 PRINT "FIVES, ";\GOTO 6440
6290 PRINT "SIXES, ";\GOTO 6440
6310 PRINT "THREE OF A KIND, ";\GOTO 6440
6330 PRINT "FOUR OF A KIND, ";\GOTO 6440
6350 PRINT "FULL HOUSE, ";\GOTO 6440
6370 PRINT "SM. STRAIGHT, ";\GOTO 6440
6390 PRINT "LG. STRAIGHT, ";\GOTO 6440
6410 PRINT "YAHTZEE, ";\GOTO 6440
6430 PRINT "CHANCE, ";
6440 NEXT S
6445 PRINT\PRINT "HE HAS ";K1(I);" POINTS."
6447 PRINT "AND ";K(1,I);" OF THE 65 POINTS NEEDED FOR THE BONUS";
6450 PRINT "."
6460 RETURN
6470 G=0
6480 FOR X=1 TO P
6490 IF S1(X)>=S1(X+1) THEN 6540
6500 H=S1(X)
6510 S1(X)=S1(X+1)
6520 S1(X+1)=H
6530 G=1
6540 NEXT X
6550 IF G=1 THEN 6470
6560 PRINT "THE GAME IS OVER."\PRINT
6571 FOR X=1 TO P\IF K1(X)=S1(X) THEN 6580\NEXT X
6580 GOTO 6585
6585 IF P=1 THEN 9999
6586 PRINT "FINAL SCORES ARE:"
6590 FOR Y=1 TO P
6600 IF K1(Y)=S1(X) THEN 6620
6610 PRINT N$(Y);" FINISHES WITH ";K1(Y);" POINTS."
6620 NEXT Y
9999 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