50 FOR X = 1 TO 20: POKE 32,20 -X: POKE 33,2 *X: HOME : NEXT : RETURN
60 REM * WAIT FOR KEYPRESS *
70 X$ = "PRESS RETURN TO CONTINUE"
80 GOSUB 30: POKE CL,0: WAIT KB,128: RETURN
90 REM * GET (Y/N) RESPONSE *
100 POKE CL,0: GET X$: IF X$ = "Y" OR X$ = "y" OR X$ = "N" OR X$ = "n" THEN RETURN
110 GOTO 100
120 REM ** INTRODUCTION **
130 SPEED= 210: FOR X = 5 TO 25: VTAB 1: HTAB X -4: PRINT " DICER";: HTAB 40 -X: PRINT "FIVER ";: NEXT : SPEED= 255: HTAB 20: PRINT "--": REM MOVING TITLE
140 VTAB 7:X$ = "A GAME OF LUCK AND SKILL": GOSUB 30:X$ = "IN WHICH YOU MATCH WITS": GOSUB 30:X$ = "WITH YOUR COMPUTER": GOSUB 30
360 INVERSE : PRINT "INVERSE";: NORMAL : PRINT " #'S INDICATE DICE TO BE ROLLED": PRINT : INVERSE : PRINT "RETURN";: NORMAL : PRINT " RE-ROLLS THE SELECTED DICE"
370 VTAB 8: FOR X = 0 TO 4: HTAB X *8 +4: PRINT X +1;: NEXT : REM NUMBER THE DICE
380 POKE CL,0: WAIT KB,128:X = PEEK(KB) -128: IF X < >13 AND (X <49 OR X >53) THEN 380: REM ONLY 1,2,3,4,5 OR 'RETURN'
390 IF X = 13 THEN 410
400 X = X -49:Y = 1923 +8 *X:X = ( PEEK(Y) <128) *128 +49 +X: POKE Y,X: GOTO 380: REM POKE FLASH/NORMAL TO SCREEN
410 FOR X = 0 TO 4: IF PEEK(1923 +8 *X) <128 THEN D(X,0) = 0: REM IF INVERSE THEN RE-ROLL
420 NEXT : VTAB 7: PRINT : CALL -868: FOR X = 11 TO 15: VTAB X: CALL -868: NEXT : REM GET RID OF DIRECTIONS
430 REM * ERASE UNWANTED DICE *
440 FOR X = 0 TO 4: IF D(X,0) = 0 THEN VTAB 5: FOR Y = 1 TO 3: HTAB 8 *X +3: PRINT " ": NEXT : REM 3 SPACES BETWEEN ""
450 NEXT
460 REM ** ROLL/DRAW/SORT DICE **
470 SP = PEEK(241): SPEED= 220: INVERSE : FOR X = 0 TO 4: IF D(X,0) = 0 THEN D(X,0) = INT( RND(1) *6 +1): FOR Y = 0 TO 9:YY = PEEK(BZ): NEXT : REM ROLL
480 POKE 32,X *8 +2: VTAB 5: PRINT DP$(D(X,0)):D(X,1) = D(X,0): NEXT : POKE 32,0: NORMAL : REM DRAW
490 FOR Y = 0 TO 3: IF D(Y,1) < = D(Y +1,1) THEN NEXT : NORMAL : POKE 32,0: POKE 241,SP: RETURN
500 X = D(Y,1):D(Y,1) = D(Y +1,1):D(Y +1,1) = X: GOTO 490: REM SORT DICE
510 REM ** PLAYER'S SCORING **
520 VTAB 10: PRINT :X$ = "WHICH CATAGORY DO YOU CHOOSE": GOSUB 30: PRINT :X$ = "FOR THIS TURN?": GOSUB 30: PRINT :X$ = "(A-M) ": GOSUB 30
530 VTAB 15: HTAB 24: GET X$:X = ASC(X$):X = X -32 *(X >96 AND X <123) -64: IF X <1 OR X >13 THEN 520
540 IF RIGHT$(SC$(X,PL),1) < >":" THEN VTAB 11:X$ = "CATAGORIES CANNOT BE RE-USED": GOSUB 30: PRINT :X$ = "SELECT ANOTHER": GOSUB 30: GOTO 530
550 CT = X: REM GET CATAGORY # FOR SCORE-TEST
560 REM ** SCORING **
570 SC = 0: IF CT <7 THEN GOSUB 680: GOTO 590: REM SINGLES COLUMN
580 ON CT -6 GOSUB 710,710,780,780,780,830,870
590 IF PL = 0 AND OP = 1 THEN FL(CT) = SC: RETURN : REM FOR COMPUTER'S TURN
600 REM ** ADD TO SCORECARD **
610 IF SC <10 THEN SC$(CT,PL) = SC$(CT,PL) +" "
620 SC$(CT,PL) = SC$(CT,PL) + STR$(SC):T(PL) = T(PL) +SC: REM ADD SCORE TO SCORECARD AND TOTAL
630 INVERSE : FOR X = 1 TO 2: VTAB 16 +CT -6 *(CT >6): HTAB 5 +16 *(CT >6): PRINT SC$(CT,PL): FOR I = 1 TO 1000: NEXT : REM HIGHLIGHT SELECTION
640 FOR Y = 11 TO 15: VTAB Y: CALL -868: NEXT : NORMAL : NEXT : REM RESTORE SELECTION
650 VTAB 13: GOSUB 70: FOR X = 0 TO 4:D(X,0) = 0: NEXT : REM CLEAR DICE ARRAY
660 GOTO 250: REM NEXT PLAYER
670 REM ** SCORING TESTS **
680 FOR X = 0 TO 4: IF D(X,0) = CT THEN SC = SC +CT
690 NEXT : RETURN : REM 1'S TO 6'S
700 REM ** LARGE & SMALL RUN **
710 Y = 3: IF CT = 8 THEN Y = 4: REM SET COUNTER
720 FOR X = 0 TO 3: IF D(X,1) +1 = D(X +1,1) THEN Y = Y -1: GOTO 740
730 IF D(X,1) < >D(X +1,1) AND (X = 1 OR X = 2) THEN Y = Y +1: REM NOT IN SEQUENCE
740 NEXT : IF Y >0 THEN RETURN : REM NEITHER RUN
750 SC = 30: IF CT = 8 THEN SC = 40
760 RETURN
770 REM ** 3,4,& 5 DICERS **
780 Y = 25: IF CT <11 THEN Y = 17: IF CT = 9 THEN Y = 11: REM SET COUNTER
790 FOR X = 0 TO 4: FOR XX = 0 TO 4: IF D(X,0) = D(XX,0) THEN Y = Y -1
800 NEXT : NEXT : IF Y <1 THEN SC = (CT -6) *10
810 RETURN
820 REM ** THREE & TWO **
830 IF D(0,1) = D(1,1) AND D(1,1) = D(2,1) AND D(3,1) = D(4,1) THEN SC = 40: RETURN
840 IF D(4,1) = D(3,1) AND D(3,1) = D(2,1) AND D(1,1) = D(0,1) THEN SC = 40
850 RETURN
860 REM ** POT LUCK **
870 FOR X = 0 TO 4:SC = SC +D(X,0): NEXT : RETURN : REM SUM OF DICE
880 REM ** COMPUTER'S TURN **
890 SPEED= 220: VTAB 11:X$ = "THINKING": GOSUB 30:Z = Z -1: IF Z = 0 THEN 1280: REM ALLOWS FOR 2 RE-ROLLS
900 VTAB 12: FOR CT = 7 TO 12: IF FL(CT) = 0 THEN GOSUB 570
910 PRINT ".";: NEXT : IF FL(11) >0 THEN CT = 11: GOTO 1380: REM SCORE A 5 DICER
920 PRINT ".";: IF FL(12) >0 THEN CT = 12: GOTO 1380: REM SCORE A 3&2
930 PRINT ".";: IF FL(8) <0 AND FL(7) >0 THEN CT = 7: GOTO 1380: REM SCORE SM. RUN IF LG. RUN IS USED
940 PRINT ".";: IF FL(8) >0 THEN CT = 8: GOTO 1380: REM SCORE A LG. RUN
950 REM *POTENTIAL RUN OR DICER *
960 D = 0:R = 0: FOR X = 0 TO 3: IF D(X,1) +1 = D(X +1,1) THEN R = R +1: REM RUN??
970 IF D(X,1) = D(X +1,1) THEN D = D +1: REM DICER??
980 PRINT ".";: NEXT : IF R >D AND (FL(7) = 0 OR FL(8) = 0) THEN R = -1: GOTO 1150: REM TRY FOR RUN
990 REM * GO FOR A DICER *
1000 FOR X = 1 TO 3: IF D(X,1) < >D(X +1,1) AND D(X,1) < >D(X -1,1) THEN D(X,1) = 0
1010 PRINT ".";: NEXT : IF D(0,1) < >D(1,1) THEN D(0,1) = 0
1020 IF D(4,1) < >D(3,1) THEN D(4,1) = 0: REM FIND NON-PAIRED DICE
1030 IF FL(12) = 0 THEN 1220: REM GO FOR 3&2
1040 D = 0: FOR X = 0 TO 4: IF D(X,1) = 0 THEN D = D +1
1050 PRINT ".";: NEXT : IF D >1 AND (FL(D(2,1)) = 0 OR FL(9) = 0 OR FL(10) = 0 OR FL(11) = 0) THEN 1220: REM GO FOR SINGLES, 3,4, OR 5 DICER
1060 IF D >1 THEN 1130: REM CAN'T USE THESE DICE
1070 IF FL(D(3,1)) = 0 THEN Y = D(3,1): GOTO 1100
1080 IF FL(D(1,1)) < >0 THEN 1130: REM CAN'T USE THESE
1090 Y = D(1,1)
1100 FOR X = 0 TO 4: IF D(X,1) < >Y THEN D(X,1) = 0
1110 NEXT : GOTO 1220: REM KEEP ONLY ONE PAIR
1120 REM * REDO ALL DICE *
1130 FOR X = 0 TO 4:D(X,0) = 0: PRINT ".";: NEXT : GOTO 1220
1140 REM ** TRY FOR A RUN **
1150 FOR X = 0 TO 3: IF D(X,1) = D(X +1,1) THEN D(X,1) = 0: REM FIND DUPLICATE DICE
1160 PRINT ".";: NEXT : GOSUB 490: IF D(0,1) = 0 THEN 1190
1170 IF D(2,1) = 3 THEN D(3,1) = 0:D(4,1) = 0: GOTO 1220: REM ROLLED 12356
1180 IF D(2,1) = 4 THEN D(0,1) = 0:D(1,1) = 0: GOTO 1220: REM ROLLED 12456
1190 IF D(1,1) +1 < >D(2,1) THEN D(1,1) = 0
1200 IF D(4,1) -1 < >D(3,1) THEN D(4,1) = 0
1210 REM ** SEPARATE KEEPERS/TRASH **
1220 Y = 0
1230 FOR X = 0 TO 4: IF D(X,1) = D(Y,0) THEN D(X,1) = 0: GOTO 1250