Compucolor.org – Virtual Media

Listing of file='CMDICE.BAS;01' on disk='vmedia/chip_12-sector.ccvf'

100 REM **************************************************
110 REM *                                                *
120 REM *              C O M P U D I C E                 *
130 REM *                                                *
140 REM *           PROGRAMMER:   J MENTLEY              *
150 REM *                                                *
160 REM *             LANGUAGE:   BASIC                  *
170 REM *                                                *
180 REM *                                                *
190 REM *      V2$(I)- DISPLAY SECTIONS FOR DICE         *
200 REM *      D(I)  - VALUES FOR DICE AFTER ROLL        *
210 REM *      R(I)  - KEY TO SELECT DICE FOR ROLLING    *
220 REM *      RD(I) - VALUES FOR DICE DURING ROLLS      *
230 REM *      P(I)  - ARRAY OF DICE VALUES FOR ROLL     *
240 REM *      S(I,0)- USE KEY FOR SCORING COMBINATIONS  *
250 REM *      S(I,1)- SCORES FOR THE 12 COMBINATIONS    *
260 REM *                                                *
270 REM *  NOTE: THIS PROGRAM REQUIRES THE DISPLAY FILE  *
280 REM *        "PLATO.DSP;01" TO BE ON THE SAME DISK.  *
290 REM *                                                *
300 REM **************************************************
310 PLOT 15,12,27,4
320 PRINT "LOA CMDICE.DSP"
330 PLOT 27,27:FOR I= 0TO PEEK (33209):X= RND (1):NEXT
340 DEF FN R(X)= INT (6* RND (1)+ 1)
350 DIM V2$(4),D(4),R(4),RD(4),P(5),S(11,1)
360 FOR I= 0TO 11:S(I,0)= 0:S(I,1)= 0:NEXT I
370 REM

---DICE UTILITY FROM MONOPOLY
380 V2$(0)= "   "
390 V2$(1)= "  d"
400 V2$(2)= "d  "
410 V2$(3)= "d d"
420 V2$(4)= " d "
430 GOTO 490
440 PRINT V2$(0):RETURN
450 PRINT V2$(1):RETURN
460 PRINT V2$(2):RETURN
470 PRINT V2$(3):RETURN
480 PRINT V2$(4):RETURN
490 FOR I= 0TO 4:R(I)= 0:NEXT I
500 FOR A= 1TO 3
510 PLOT 3,52,19,6,25,14:PRINT A:PLOT 6,27,15
520 SS= PEEK (33209):FOR I= 0TO SS:RR= FN R(0):NEXT
530 FOR II= 0TO RR
540 RD(0)= FN R(0):RD(1)= FN R(0):RD(2)= FN R(0):RD(3)= FN R(0):RD(4)= FN R(0)
550 FOR R0= 0TO 4
560 XX= 8* R0+ 15
570 IF R(R0)= 1GOTO 650
580 PLOT 3,XX,25
590 ON RD(R0)GOSUB 440,450,460,470,470,470
600 PLOT 3,XX,26
610 ON RD(R0)GOSUB 480,440,480,440,480,470
620 PLOT 3,XX,27
630 ON RD(R0)GOSUB 440,460,450,470,470,470
640 D(R0)= RD(R0)
650 NEXT R0
660 FOR W= 0TO 9:NEXT W:REM ---PAUSE BETWEEN ROLLS
670 NEXT II
680 REM

---INITIALIZE AND CALCULATE VALUE ARRAY  P(I)
690 FOR I= 0TO 4:R(I)= 1:NEXT I
700 FOR I= 0TO 5:P(I)= 0:NEXT I
710 FOR K= 0TO 4
720 DD= D(K)- 1
730 P(DD)= P(DD)+ 1
740 NEXT K
750 REM

---BLANK OUT *'S FOR FIRST ROLL
760 PLOT 6,27,3,14,24:PRINT "                                     "
770 REM

---KEYBOARD SEARCH ROUTINE
780 PLOT 6,27,3,64,64
790 POKE 33278,0
800 KEY= PEEK (33278)
810 REM

---SCORING KEYS
820 IF KEY= 65THEN NN= 0:GOTO 1230
830 IF KEY= 66THEN NN= 1:GOTO 1230
840 IF KEY= 67THEN NN= 2:GOTO 1230
850 IF KEY= 68THEN NN= 3:GOTO 1230
860 IF KEY= 69THEN NN= 4:GOTO 1230
870 IF KEY= 70THEN NN= 5:GOTO 1230
880 IF KEY= 71THEN MM= 2:GOTO 1300
890 IF KEY= 72THEN MM= 3:GOTO 1300
900 IF KEY= 73GOTO 1410
910 IF KEY= 74GOTO 1510
920 IF KEY= 75GOTO 1590
930 IF KEY= 76GOTO 1670
940 IF A= 3GOTO 800:REM ---ALLOW ONLY SCORING AFTER 3RD ROLL
950 REM

---DI SELECTION KEYS
960 IF KEY= 49THEN R(0)= 0:PLOT 6,25,3,16,24:PRINT "*":GOTO 1120
970 IF KEY= 50THEN R(1)= 0:PLOT 6,25,3,24,24:PRINT "*":GOTO 1120
980 IF KEY= 51THEN R(2)= 0:PLOT 6,25,3,32,24:PRINT "*":GOTO 1120
990 IF KEY= 52THEN R(3)= 0:PLOT 6,25,3,40,24:PRINT "*":GOTO 1120
1000 IF KEY= 53THEN R(4)= 0:PLOT 6,25,3,48,24:PRINT "*":GOTO 1120
1010 IF KEY= 45THEN GOTO 1050
1020 IF KEY= 8GOTO 1130
1030 GOTO 800
1040 REM

----CORRECTION ROUTINE FOR DI "UNSELECTION"
1050 KEY= PEEK (33278)
1060 IF KEY= 49THEN R(0)= 1:PLOT 6,27,3,16,24:PRINT " ":GOTO 1120
1070 IF KEY= 50THEN R(1)= 1:PLOT 6,27,3,24,24:PRINT " ":GOTO 1120
1080 IF KEY= 51THEN R(2)= 1:PLOT 6,27,3,32,24:PRINT " ":GOTO 1120
1090 IF KEY= 52THEN R(3)= 1:PLOT 6,27,3,40,24:PRINT " ":GOTO 1120
1100 IF KEY= 53THEN R(4)= 1:PLOT 6,27,3,48,24:PRINT " ":GOTO 1120
1110 GOTO 1050
1120 POKE 33278,0:GOTO 780
1130 NEXT A
1140 REM

----MESSAGE THAT SCORING COMBINATION ALREADY USED
1150 PLOT 6,1,14,3,18,18
1160 PRINT "   I L L E G A L  "
1170 FOR I= 0TO 500:NEXT I
1180 PLOT 6,7,14,3,18,18
1190 PRINT " C O M P U D I C E "
1200 PLOT 6,27,15
1210 GOTO 780
1220 REM

----SCORING FOR A THRU F
1230 IF S(NN,0)= 1GOTO 1150
1240 S(NN,0)= 1
1250 S(NN,1)= (NN+ 1)* P(NN)
1260 LL= 2* NN+ 4
1270 PLOT 6,2,3,20,LL:PRINT S(NN,1)
1280 GOTO 1850
1290 REM

----SCORING FOR G AND H
1300 IF S(MM+ 4,0)= 1GOTO 1150
1310 S(MM+ 4,0)= 1
1320 FOR I= 0TO 5
1330 IF P(I)> MMGOTO 1360
1340 NEXT I
1350 S(MM+ 4,1)= 0:GOTO 1380
1360 RD= 0:FOR J= 0TO 4:RD= RD+ D(J):NEXT J
1370 S(MM+ 4,1)= RD
1380 PLOT 6,2,3,50,MM* 2:PRINT S(MM+ 4,1)
1390 GOTO 1850
1400 REM

----SCORING FOR I
1410 IF S(8,0)= 1GOTO 1150
1420 S(8,0)= 1
1430 IF P(0)= 2OR P(1)= 2OR P(2)= 2OR P(3)= 2OR P(4)= 2OR P(5)= 2GOTO 1450
1440 GOTO 1460
1450 IF P(0)= 3OR P(1)= 3OR P(2)= 3OR P(3)= 3OR P(4)= 3OR P(5)= 3GOTO 1470
1460 S(8,1)= 0:GOTO 1480
1470 S(8,1)= 30
1480 PLOT 6,2,3,50,8:PRINT S(8,1)
1490 GOTO 1850
1500 REM

----SCORING FOR J
1510 IF S(9,0)= 1GOTO 1150
1520 S(9,0)= 1
1530 IF P(2)> = 1AND P(3)> = 1AND ((P(4)> = 1AND P(1)> = 1)OR (P(5)> = 1AND P(4)> = 1)OR (P(0)> = 1AND P(1)> = 1))GOTO 1550
1540 S(9,1)= 0:GOTO 1560
1550 S(9,1)= 30
1560 PLOT 6,2,3,50,10:PRINT S(9,1)
1570 GOTO 1850
1580 REM

----SCORING FOR K
1590 IF S(10,0)= 1GOTO 1150
1600 S(10,0)= 1
1610 IF P(1)= 1AND P(2)= 1AND P(3)= 1AND P(4)= 1AND (P(0)= 1OR P(5)= 1)GOTO 1630
1620 S(10,1)= 0:GOTO 1640
1630 S(10,1)= 40
1640 PLOT 6,2,3,50,12:PRINT S(10,1)
1650 GOTO 1850
1660 REM

----SCORING FOR L
1670 IF S(11,0)= 1AND S(11,1)= 0GOTO 1150
1680 IF S(11,0)> 0GOTO 1770
1690 S(11,0)= 1
1700 FOR I= 0TO 5
1710 IF P(I)= 5GOTO 1740
1720 NEXT I
1730 S(11,1)= 0:GOTO 1750
1740 S(11,1)= 50
1750 PLOT 6,2,3,50,14:PRINT S(11,1)
1760 GOTO 1850
1770 FOR I= 0TO 5
1780 IF P(I)= 5GOTO 1810
1790 NEXT I
1800 GOTO 1150
1810 S(11,1)= S(11,1)+ 100
1820 PLOT 6,2,3,50,14:PRINT S(11,1)
1830 IF S(I,0)= 0GOTO 1240
1840 REM

----CHECK FOR END OF GAME
1850 FOR I= 0TO 11
1860 IF S(I,0)= 0GOTO 490
1870 NEXT I
1880 SC= 0
1890 FOR I= 0TO 11
1900 SC= SC+ S(I,1)
1910 NEXT I
1920 PLOT 6,7,3,18,18
1930 PRINT "TOTAL SCORE = ";SC
1940 PLOT 6,3,3,18,19
1950 PRINT "PLAY AGAIN ?,Y OR N"
1960 PLOT 6,27,3,64,64
1970 POKE 33278,0
1980 KEY= PEEK (33278)
1990 IF KEY= 78GOTO 2020
2000 IF KEY= 89GOTO 2030
2010 GOTO 1980
2020 PLOT 1
2030 FOR I= 4TO 14STEP 2
2040 PLOT 6,0,3,20,I:PRINT "   "
2050 PLOT 3,50,I:PRINT "   "
2060 NEXT I
2070 PLOT 6,7,14,3,18,18
2080 PRINT " C O M P U D I C E "
2090 PLOT 6,27,15
2100 GOTO 360