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 "WIE VIELE SPIELER (TYPE: '0' FUER INFORMATION)";
1140 INPUT P
1150 IF P>15 THEN 1180
1160 IF P<>0 THEN 1240\CHAIN "DSK2: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 "RUNDE";R\PRINT
1540 FOR I=1 TO P
1550 PRINT\PRINT\PRINT N$(I);"'S RUNDE"
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 "DU HAST EIN";A1(1);A1(2);A1(3);A1(4);A1(5)
1710 PRINT "DIES IST DEINE ZWEITE VON 3 RUNDEN,"
1720 PRINT "WIE VIELE MOECHTEST DU WECHSELN";
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 "WELCHE";
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 "DU HAST EINE";A1(1);A1(2);A1(3);A1(4);A1(5)
2150 PRINT "DIES IST DEINE LETZTE RUNDE,"
2160 PRINT "WIE VIELE MOECHTEST DU WECHSELN";
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 "WELCHE";
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 "DU HAST EINE";A1(1);A1(2);A1(3);A1(4);A1(5)
2620 PRINT "WORUNTER MOECHTEST DU DIESE PUNKTE ANSCHREIBEN";
2630 INPUT Z$
2650 IF Z$="SUMME" THEN 2670
2660 GOTO 2700
2670 GOSUB 6140
2675 GOTO 2620
2700 IF Z$="EINS" THEN 2850
2710 IF Z$="ZWEI" THEN 2940
2720 IF Z$="DREI" THEN 3030
2730 IF Z$="VIER" THEN 3120
2740 IF Z$="FUENF"THEN 3210
2750 IF Z$="SECHS" THEN 3300
2760 IF Z$="DREI GLEICHE" THEN 3390
2770 IF Z$="VIER GLEICHE" THEN 3440
2780 IF Z$="VOLLES HAUS" THEN 3520
2790 IF Z$="KLEINE STRASSE" THEN 3620
2800 IF Z$="GROSSE STRASSE" THEN 3660
2810 IF Z$="YAHTZEE" THEN 3730
2820 IF Z$="CHANCE" THEN 3820
2830 IF Z$="NULL" 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 "WORIN MOECHTEST DU NULL EINSCHREIBEN";
3900 INPUT Z$
3920 IF Z$="SUMME" THEN 3940
3930 GOTO 3970
3940 GOSUB 6140
3945 GOTO 2620
3970 IF Z$="EINS" THEN 4110
3980 IF Z$="ZWEI" THEN 4150
3990 IF Z$="DREI" THEN 4190
4000 IF Z$="VIER" THEN 4230
4010 IF Z$="FUENF" THEN 4270
4020 IF Z$="SECHS" THEN 4310
4030 IF Z$="DREI GLEICHE" THEN 4350
4040 IF Z$="VIER GLEICHE" THEN 4390
4050 IF Z$="VOLLES HAUS" THEN 4430
4060 IF Z$="KLEINE STRASSE" THEN 4470
4070 IF Z$="GROSSE STRASSE" 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 "DU HAST SCHON ";Z$;" BELEGT ALS KATEGORIE"
4660 PRINT
4670 RETURN
4680 GOTO 2620
4690 PRINT N$(I);"DU BEKOMMST EINE WERTUNG VON";M(I);" FUR DIESE RUNDE"
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);" ZULETZT GESPEICHERT SIND 63 PUNKTE"
4880 PRINT "IN DEN ERSTEN SECHS KATEGORIEN."
4890 PRINT "VERZEICHNET IST EIN BONUS VON 35 PUNKTEN!"
4900 K1(J)=K1(J)+M(J)
4910 GOTO 4930
4920 K1(J)=K1(J)+M(J)
4930 PRINT N$(J);" HAT ";K1(J);" PUNKTE"
4940 NEXT J
4950 GOTO 1490
4960 PRINT "DER GEBRAUCH VON ";Z$;" IST NICHT ERLAUBT IN DIESER RUNDE"
4970 GOTO 2620
5680 PRINT "WELCHE KATEGORIE WILLST DU NULLSETZEN"
5690 RETURN
5710 PRINT "EIN MAXIMUM VON 15 SPIELERN IST ERLAUBT"
5720 RETURN
5750 IF Z$="EINS" THEN 5880
5760 IF Z$="ZWEI" THEN 5900
5770 IF Z$="DREI" THEN 5920
5780 IF Z$="VIER" THEN 5940
5790 IF Z$="FUENF" THEN 5960
5800 IF Z$="SECHS" THEN 5980
5810 IF Z$="DREI GLEICHE" THEN 6000
5820 IF Z$="VIER GLEICHE" THEN 6020
5830 IF Z$="VOLLES HAUS" THEN 6040
5840 IF Z$="KLEINE STRASSE" THEN 6060
5850 IF Z$="GROSSE STRASSE" 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);" HAT FOLGENDE KATEGORIEN GEBRAUCHT:"
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 "EINS, ";\GOTO 6440
6210 PRINT "ZWEI, ";\GOTO 6440
6230 PRINT "DREI, ";\GOTO 6440
6250 PRINT "VIER, ";\GOTO 6440
6270 PRINT "FUENF, ";\GOTO 6440
6290 PRINT "SECHS, ";\GOTO 6440
6310 PRINT "DREI GLEICHE, ";\GOTO 6440
6330 PRINT "VIER GLEICHE, ";\GOTO 6440
6350 PRINT "VOLLES HAUS, ";\GOTO 6440
6370 PRINT "KLEINE STRASSE, ";\GOTO 6440
6390 PRINT "GROSSE STRASSE, ";\GOTO 6440
6410 PRINT "YAHTZEE, ";\GOTO 6440
6430 PRINT "CHANCE, ";
6440 NEXT S
6445 PRINT\PRINT "DU HAST ";K1(I);" PUNKTE."
6447 PRINT "UND ";K(1,I);" VON DEN 65 PUNKTEN BENOETIGT VUER DEN 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 "DAS SPIEL IST AUS."\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 "ENDRESULTAT:"
6590 FOR Y=1 TO P
6600 IF K1(Y)=S1(X) THEN 6620
6610 PRINT N$(Y);" HAT BEENDET MIT ";K1(Y);" PUNKTEN."
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