1  COM Q6,Q7,Y$[6],Q8,L9
2  L9=236
3  Y$="YATZE"
4  CHAIN "$CONTRL"
56  REM
68  REM
80  REM
92  REM
104  REM
116  REM
128  REM
140  REM
152  REM
164  REM - YAHTZEE BY DAVID BARTON - 4/8/74 -
176  REM
188  REM
200  REM - TRANSLATED TO THE 2000B BY JEFF POSKANZER - 4/22/74 -
212  REM - RULES BY D.B. AND J.P. -
224  DIM C$[13],I$[72],M[6],R[5],S[13]
236  C$="123456TFHSLYC"
248  T=255
260  G=Z=0
284  PRINT "INSTRUCTIONS";
296  INPUT I$
308  IF I$[1,1]#"Y" THEN 560
320  G=.5
332  PRINT '14"THIS IS THE GAME OF YAHTZEE."
344  PRINT "YOU ARE GIVEN FIVE DICE. YOU MAY ROLL THEM UP TO 3 TIMES."
356  PRINT "AFTER EACH ROLL (EXCEPT THE LAST), YOU MAY ELECT TO KEEP"
368  PRINT "ANY OR ALL OF THE DICE AS THEY ARE. THE ONES THAT ARE NOT"
380  PRINT "KEPT ARE ROLLED AGAIN. FOR EXAMPLE:"'14
392  PRINT " 5 2 3 3 1  KEEP? 33   (NOTE: NO COMMAS)"'14
404  PRINT "MEANS THAT YOU WANT TO KEEP THE TWO 3'S AND ROLL THE"
416  PRINT "5, 2, AND 1 AGAIN. THERE ARE THIRTEEN SCORES:"'14
428  PRINT "1 - ONES"'15'14"2 - TWOS"'15'14"3 - THREES"'15'14"4 - FOURS"'15'14"5 - FIVES"'15'14"6 - SIXES"'14
440  PRINT "T - THREE OF A KIND (SCORES TOTAL OF ALL DICE)"
452  PRINT "F - FOUR OF A KIND (SAME AS ABOVE)"
464  PRINT "H - FULL HOUSE (3 OF ONE AND 2 OF ANOTHER - SCORES 25)"
476  PRINT "S - SMALL STRAIGHT (4 IN A ROW - SCORES 30)"
488  PRINT "L - LARGE STRAIGHT (5 IN A ROW - SCORES 40)"
500  PRINT "Y - YAHTZEE (5 OF A KIND - SCORES 50)"
512  PRINT "C - CHANCE (SCORES TOTAL OF ALL DICE)"'14
524  PRINT "ON THE UPPER HALF, YOU SCORE ONLY THE DICE WHICH CORRESPOND"
536  PRINT "TO THE NUMBER YOU PICK. FOR INSTANCE, 4 1 2 4 4, WHEN"
548  PRINT "SCORED IN #4, IS WORTH 12 POINTS."
560  PRINT '14'14
572  FOR A=1 TO Q6-3
584  S[A]=-1
596  NEXT A
608  G=G+1
620  Q=0
632  FOR O=1 TO 13
644  I$=""
656  FOR A=1 TO 3
668  FOR B=LEN(I$)+1 TO 5
680  R[B]=INT(6*RND(0))+1
692  NEXT B
704  FOR B=1 TO 5
716  PRINT " ";C$[R[B],R[B]];
728  NEXT B
740  IF A=3 THEN 1004
752  PRINT "  KEEP? ";
764  ENTER T,T1,I$
776  PRINT 
788  IF T1<0 THEN 752
800  IF I$[1,1]="A" THEN 1004
812  FOR B=1 TO LEN(I$)
824  FOR C=1 TO 6
836  IF C$[C,C]=I$[B,B] THEN 872
848  NEXT C
860  GOTO 752
872  FOR D=B+1+Q8 TO 5
884  IF R[D]=C THEN 920
896  NEXT D
908  GOTO 752
920  R[D]=R[B]
932  R[B]=C
944  NEXT B
956  IF LEN(I$)<5 THEN 992
968  PRINT "(ANOTHER WAY TO KEEP ALL THE DICE IS TO TYPE 'ALL')"
980  GOTO 1004
992  NEXT A
1004  IF O#13 THEN 1076
1008  REMEMBER TO HAVE YOUR DAILY SCREW
1016  FOR A=1 TO 13
1028  IF S[A]=-1 THEN 1052
1040  NEXT A
1052  PRINT "  YOU CAN ONLY SCORE IT AT '";C$[A,A];"'."
1064  GOTO 1220
1076  IF G#1.5 THEN 1112
1088  PRINT "  WHERE DO YOU WISH TO SCORE IT";
1100  GOTO 1124
1112  PRINT "  SCORE";
1124  INPUT I$
1136  FOR A=1 TO 13
1148  IF I$[1,1]=C$[A,A] THEN 1184
1160  NEXT A
1172  GOTO 1088
1184  IF S[A]=-1 THEN 1220
1196  PRINT "YOU MAY USE EACH SCORING CATEGORY ONLY ONCE."
1208  GOTO 1112
1220  MAT M=ZER
1232  FOR B=1 TO 5
1244  M[R[B]]=M[R[B]]+1
1256  NEXT B
1268  S[A]=0
1280  GOTO A-6 OF 1316,1316,1364,1424,1424,1520,1580
1292  S[A]=A*M[A]
1304  GOTO 1592
1316  FOR B=1 TO 6
1328  IF M[B] >= A-4 THEN 1580
1340  NEXT B
1352  GOTO 1592
1364  FOR B=1 TO 6
1376  IF M[B]=1 OR M[B]=4 THEN 1592
1388  NEXT B
1400  S[A]=25
1412  GOTO 1592
1424  C=0
1436  FOR B=1 TO 6
1448  C=(C+1)*(M[B]#0)
1460  IF C=A-6 OR M[B]=5 THEN 1496
1472  NEXT B
1484  GOTO 1592
1496  S[A]=(A-7)*10
1508  GOTO 1592
1520  FOR B=2 TO 5
1532  IF R[B]#R[1] THEN 1676
1544  NEXT B
1556  S[A]=50
1568  GOTO 1676
1580  S[A]=R[1]+R[2]+R[3]+R[4]+R[5]
1592  IF S[12]#50 THEN 1676
1604  FOR B=2 TO 5
1616  IF R[B]#R[1] THEN 1676
1628  NEXT B
1640  Q=Q+100
1652  PRINT "100 BONUS POINTS!"
1664  PRINT "PLUS ";
1676  N=S[A]
1688  IF G#1.5 THEN 1712
1700  PRINT "A SCORE OF ";
1712  GOSUB 2468
1724  PRINT " POINTS."
1736  IF A#12 THEN 1808
1748  IF S[A]=0 THEN 1772
1760  PRINT "IF YOU GET ANOTHER YAHTZEE, YOU SCORE 1"'7"0"'7"0 EXTRA POINTS!"
1761  IF Q7 <> 312 THEN 1760
1772  IF G#1.5 THEN 1808
1784  PRINT "FUTURE YAHTZEES MAY BE SCORED ANYWHERE IN THE LOWER"
1796  PRINT "HALF (EVEN THE STRAIGHTS) AS A WILD CARD."
1808  PRINT "  ";
1820  FOR A=1 TO 13
1832  IF A#7 THEN 1856
1844  PRINT "   ";
1856  IF S[A]=-1 THEN 1916
1868  N=S[A]
1880  PRINT "  ";
1892  GOSUB 2468
1904  GOTO 1928
1916  PRINT "  (";C$[A,A];")";
1928  NEXT A
1940  PRINT 
1952  NEXT O
1964  N=T=S[1]+S[2]+S[3]+S[4]+S[5]+S[6]
1976  PRINT "TOP HALF: ";
1988  GOSUB 2468
2000  PRINT " POINTS"
2012  IF G#1.5 THEN 2084
2024  IF T<63 THEN 2060
2036  PRINT "YOU GOT AT LEAST 63 POINTS SO YOU GET 35 BONUS POINTS."
2048  GOTO 2108
2060  PRINT "SINCE YOU GOT LESS THAN 63 POINTS, YOU DON'T GET"
2072  PRINT "THE 35-POINT BONUS."
2084  IF T<63 THEN 2120
2096  PRINT "PLUS 35 BONUS POINTS"
2108  T=T+35
2120  N=U=S[7]+S[8]+S[9]+S[10]+S[11]+S[12]+S[13]
2132  PRINT "BOTTOM HALF: ";
2144  GOSUB 2468
2156  PRINT " POINTS"
2168  IF Q=0 THEN 2228
2180  N=Q
2192  PRINT "PLUS ";
2204  GOSUB 2468
2216  PRINT " BONUS POINTS"
2228  N=T+U+Q
2240  Z=Z+N
2252  PRINT "TOTAL IS ";
2264  GOSUB 2468
2276  PRINT " POINTS"
2288  PRINT "AGAIN";
2300  INPUT I$
2312  PRINT 
2324  IF I$[1,1]="Y" THEN 560
2336  PRINT "YOU GOT ";
2348  N=Z
2360  GOSUB 2468
2372  PRINT " POINTS IN ";
2384  N=INT(G)
2396  GOSUB 2468
2408  PRINT " GAMES FOR AN AVERAGE OF"
2420  N=Z/INT(G)
2432  GOSUB 2468
2444  PRINT " POINTS PER GAME."
2456  STOP 
2468  DEF FNN()=INT(N/10^(-1))-INT(N/10^)*10+1
2480  DIM Z$[10]
2492  Z$="0123456789"
2504  IF N>0 THEN 2540
2516  PRINT "0";
2528  RETURN 
2540  FOR A8=INT(LOG(N+.1)/LOG(10))+1 TO 1 STEP -1
2552  PRINT Z$[FNN(A8),FNN(A8)];
2564  NEXT A8
2576  RETURN 
2588  END 
