File YAHTZE.BA (BASIC source file)

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

10 REM        * * * GAME OF YAHTZEE * * *
15 DIM C(5),K(14,7),G(5),F(4),H2(6),L2(6),B5(7),B8(7)
20 PRINT\PRINT "GAME OF 'YAHTZEE'"\RANDOMIZE\PRINT
25 PRINT "DO YOU WANT INSTRUCTIONS [Y OR N]";
30 INPUT B$\IF B$="N" THEN 45\IF B$="Y" THEN 40\GOTO 25
40 GOSUB 995
45 PRINT "HOW MANY PLAYERS ";\INPUT N
50 IF N<1 THEN 45\IF N<=7 THEN 75
55 PRINT "MAXIMUM NUMBER OF PLAYERS IS 7"
70 GOTO 45
75 FOR A0=1 TO N
80 PRINT "NAME OF PLAYER NO.";A0;\INPUT A$(A0)\NEXT A0
85 PRINT "WOULD YOU LIKE A SCORECARD [Y OR N] ";\INPUT B$
90 IF B$="N" THEN 100\IF B$="Y" THEN 945\GOTO 85
100 H=0\PRINT\A=A+1\IF A<>N+1 THEN 105\A=1
105 FOR B=1 TO 5\C(B)=INT(6*RND(1))+1\NEXT B\PRINT
110 PRINT\PRINT A$(A);"'S NUMBERS: ";\H=H+1
115 PRINT C(1);C(2);C(3);C(4);C(5)\IF H=3 THEN 210
120 PRINT "HOW MANY ";\INPUT E
125 IF E<>25 THEN 130\GOSUB 1020\GOTO 120
130 IF E>5 THEN 120
135 IF E<0 THEN 120\IF INT(E)<>E THEN 120
140 IF E=0 THEN 210\IF E=5 THEN 105
145 FOR F3=1 TO 4\F(F3)=0\NEXT F3
150 PRINT "WHICH DICE ";
152 IF E=1 THEN 160\IF E=2 THEN 165\IF E=3 THEN 170
153 IF E=4 THEN 175\IF E=5 THEN 160\GOTO 150
160 INPUT F(1)\GOTO 180
165 INPUT F(1),F(2)\GOTO 180
170 INPUT F(1),F(2),F(3)\GOTO 180
175 INPUT F(1),F(2),F(3),F(4)\GOTO 180
180 FOR F1=1 TO 4\F(F1)=INT(F(F1))\IF F(F1)>5 THEN 150
185 IF F(F1)<0 THEN 150\NEXT F1
190 FOR F2=1 TO 4\IF F(F2)=0 THEN 200
195 C(F(F2))=INT(6*RND(1))+1
200 NEXT F2
205 GOTO 110
210 PRINT A$(A);"'S SCOREBOARD NUMBER";
215 INPUT I
220 IF I<>25 THEN 225\GOSUB 1020\GOTO 210
225 IF I<1 THEN 210\I=INT(I)\IF I<14 THEN 245
230 PRINT "CONFIRM [Y OR N] ";\INPUT B$
235 IF B$="N" THEN 210\IF B$="Y" THEN 735
245 IF K(I,A)=0 THEN 260
250 PRINT A$(A); ", YOU HAVE ALREADY USED ROW #";I;
255 PRINT "YOU HAVE";K(I,A);"POINTS IN ROW #";I\GOTO 210
260 IF I>6 THEN 305
265 REM  CATEGORIES 1 THROUGH 6
270 K=0
275 FOR G=1 TO 5\IF C(G)<>I THEN 280\K=K+I
280 NEXT G\IF K=0 THEN 295\ IF K<>1 THEN 300
285 PRINT A$(A);", YOU NOW HAVE 1 POINT IN ROW NUMBER 1 (ACES)"
290 K(1,A)=1\GOTO 720
295 K(I,A)=.4\GOTO 620
300 K(I,A)=K\GOTO 620
305 IF I-6=1 THEN 315\IF I-6=2 THEN 320\IF I-6=3 THEN 400
306 IF I-6=4 THEN 485\IF I-6=5 THEN 485\IF I-6=6 THEN 325
307 IF I-6=7 THEN 605\PRINT "ERROR HALT"\STOP
310 REM  ***3 OF A KIND, 4 OF A KIND, YAHTZEE
315 R=3\T=C(1)+C(2)+C(3)+C(4)+C(5)\GOTO 330
320 R=4\T=C(1)+C(2)+C(3)+C(4)+C(5)\GOTO 330
325 R=5\T=50
330 FOR H3=1 TO 6\H2(H3)=0\NEXT H3
335 FOR H=1 TO 6\FOR H1=1 TO 5
340 IF C(H1)<>H THEN 350
345 H2(H)=H2(H)+1
350 NEXT H1\NEXT H
355 FOR H4=1 TO 6
360 IF H2(H4)>=R THEN 370
365 NEXT H4\K(I,A)=.4\GOTO 620
370 IF K(I,A)=50 THEN 380
375 K(I,A)=T\IF I<>I2 THEN 395
380 PRINT CHR$(7)\PRINT CHR$(7)\FOR V4=1 TO 7\PRINT CHR$(7);\NEXT V4
385 PRINT "CONGRATULATIONS ";A$(A);", YOU HAVE A YAHTZEE!!!"
390 PRINT CHR$(7)\PRINT CHR$(7)\FOR V4=1 TO 7\PRINT CHR$(7)\NEXT V4
395 GOTO 620
400 REM *** FULL HOUSE
405 L4=0\L5=0\FOR L=1 TO 6\L2(L)=0\NEXT L
410 FOR L=1 TO 6\FOR L1=1 TO 5
415 IF C(L1)<>L THEN 425
420 L2(L)=L2(L)+1
425 NEXT L1\NEXT L
430 FOR L3=1 TO 6
435 IF L5=1 THEN 450
440 IF L2(L3)<>2 THEN 450
445 L5=L5+1\GOTO 455
450 IF L2(L3)<>3 THEN 460
455 L4=L4+1
460 NEXT L3
465 IF L4=2 THEN 475
470 K(9,A)=.4\GOTO 620
475 K(9,A)=25\GOTO 620
480 GOTO 620
485 REM *** PUT NUMBERS IN ORDER - STRAIGHTS
490 FOR M1=1 TO 5\FOR M2=1 TO M1
495 IF C(M1)=>C(M2) THEN 505
500 Z=C(M1)\C(M1)=C(M2)\C(M2)=Z
505 NEXT M2\NEXT M1
510 G=0\M3=0\G3=0\RESTORE
515 G2=0\IF I=11 THEN 545
520 G=G+1\IF G=15 THEN 600
525 READ G(1),G(2),G(3),G(4),G(5)\GOTO 570
530 DATA 1,2,3,4,7,2,3,4,5,7,7,3,4,5,6,7,2,3,4,5,7,1,2,3,4
535 DATA 1,7,2,3,4,1,2,7,3,4,1,2,3,7,4,2,7,3,4,5,2,3,4,7,5
540 DATA 2,3,7,4,5,3,7,4,5,6,3,4,7,5,6,3,4,5,7,6
545 IF G3>1 THEN 600
550 G3=G3+1\G5=0
555 FOR G4=G3 TO (G3+4)
560 G5=G5+1\G(G5)=G4
565 NEXT G4
570 FOR G1=1 TO  5
575 IF C(G1)<>G(G1) THEN 580\G2=G2+1
580 NEXT G1
585 IF G2=I-6 THEN 590\GOTO 515
590 IF I=11 THEN 595\K(I,A)=30\GOTO 620
595 K(I,A)=40\GOTO 620
600 K(I,A)=.4\GOTO 620
605 REM *** CHANCE
610 Y1=0
615 FOR Y=1 TO 5\Y1=C(Y)+Y1\NEXT Y\K(13,A)=Y1
620 PRINT A$(A);", YOU HAVE";INT(K(I,A));"POINTS IN ROW #";I;", ";
625 PRINT "(";
630 IF I>6 THEN 640
635 IF I=1 THEN 645\IF I=2 THEN 650\IF I=3 THEN 655\IF I=4 THEN 660
636 IF I=5 THEN 665\IF I=6 THEN 670
640 IF I-6=1 THEN 675\IF I-6=2 THEN 680\IF I-6=3 THEN 685
641 IF I-6=4 THEN 690\IF I-6=5 THEN 695\IF I-6=6 THEN 700
642 IF I-6=7 THEN 705
645 PRINT "ACES";\GOTO 710
650 PRINT "TWOS";\GOTO 710
655 PRINT "THREES";\GOTO 710
660 PRINT "FOURS";\GOTO 710
665 PRINT "FIVES";\GOTO 710
670 PRINT "SIXES";\GOTO 710
675 PRINT "3 OF A KIND";\GOTO 710
680 PRINT "4 OF A KIND";\GOTO 710
685 PRINT "FULL HOUSE";\GOTO 710
690 PRINT "SMALL STRAIGHT";\GOTO 710
695 PRINT "LARGE STRAIGHT";\GOTO 710
700 PRINT "YAHTZEE";\GOTO 710
705 PRINT "CHANCE";
710 IF E=25 THEN 1030\IF I0=25 THEN 1030
715 PRINT ")"
720 FOR B=1 TO N\FOR B1=1 TO 13
725 IF K(B1,B)=0 THEN 100
730 NEXT B1\ NEXT B
735 FOR B3=1 TO N\B5(B3)=0\B8(B3)=0\NEXT B3
740 PRINT
745 FOR B3=1 TO N\FOR B4=1 TO 6
750 B5(B3)=B5(B3)+INT(K(B4,B3))
755 NEXT B4\NEXT B3
760 FOR B6=1 TO N\FOR B7=7 TO 13
765 B8(B6)=B8(B6)+INT(K(B7,B6))
770 NEXT B7\NEXT B6
775 FOR B3=1 TO N
780 IF B5(B3)<63 THEN 790
785 K(14,B3)=35
790 NEXT B3
795 GOSUB 940
800 FOR A9=1 TO N
805 PRINT\PRINT\PRINT
810 PRINT TAB(19);A$(A9);"'S TOTALS"\PRINT TAB(19);"*************"
815 PRINT
820 PRINT "ACES------------";INT(K(1,A9))
825 PRINT "TWOS------------";INT(K(2,A9))
830 PRINT "THREES----------";INT(K(3,A9))
835 PRINT "FOURS-----------";INT(K(4,A9))
840 PRINT "FIVES-----------";INT(K(5,A9))
845 PRINT "SIXES-----------";INT(K(6,A9))\PRINT
850 PRINT "3 OF A KIND-----";INT(K(7,A9))
855 PRINT "4 OF A KIND-----";INT(K(8,A9))
860 PRINT "FULL HOUSE------";INT(K(9,A9))
865 PRINT "SMALL STRAIGHT--";INT(K(10,A9))
870 PRINT "LARGE STRAIGHT--";INT(K(11,A9))
875 PRINT "YAHTZEE---------";INT(K(12,A9))
880 PRINT "CHANCE----------";INT(K(13,A9))
885 PRINT\PRINT "TOTAL OF UPPER HALF---------";B5(A9)
890 PRINT "BONUS-----------------------";K(14,A9)
895 PRINT "TOTAL OF LOWER HALF---------";B8(A9)
905 B9=B5(A9)+B8(A9)+K(14,A9)
910 PRINT A$(A9);"'S GRAND TOTAL--------------";B9
915 GOSUB 940
920 NEXT A9
925 IF I>13 THEN 210
930 STOP
940 FOR E=1 TO 72\PRINT "-";\NEXT E\PRINT\RETURN
945 GOSUB 940
950 PRINT "1**ACES"\GOSUB 940\PRINT "2**TWOS"\GOSUB 940
955 PRINT "3**THREES"\GOSUB 940\PRINT "4**FOURS"\GOSUB 940
960 PRINT "5**FIVES"\GOSUB 940\PRINT "6**SIXES"\GOSUB 940
965 PRINT "7**3 OF A KIND"\GOSUB 940\PRINT "8**4 OF A KIND"\GOSUB 940
970 PRINT "9**FULL HOUSE"\GOSUB 940\PRINT "10**SM. STRAIGHT"\GOSUB 940
975 PRINT "11**LG. STRAIGHT"\GOSUB 940\PRINT "12**YAHTZEE"\GOSUB 940
980 PRINT "13**CHANCE"\GOSUB 940
985 FOR  E1=1 TO 8\PRINT\NEXT E1\PRINT "TEAR OFF SCORECARD"
990 REM *****DELAY HERE IF NEEDED\GOTO 85
995 PRINT "TOTALS WILL BE PRINTED IF YOU RESPOND TO"
1000 PRINT "'SCORECARD NUMBER' WITH A NUMBER GREATER THAN 13."
1005 PRINT "TO SEE WHAT SCORECARD OPTIONS YOU HAVE NOT YET USED,"
1010 PRINT "RESPOND TO 'HOW MANY' OR 'SCORECARD NUMBER' WITH 25."
1015 RETURN
1020 PRINT A$(A);", YOU HAVE THE FOLLOWING SCOREBOARD OPTIONS LEFT:"
1025 I0=25\FOR I=1 TO 13\IF K(I,A)=0 THEN 630\GOTO 1035
1030 PRINT "  ";
1035 NEXT I\PRINT "."\I0=0\RETURN
1040 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