home *** CD-ROM | disk | FTP | other *** search
- 10 REM ******************
- 20 REM * *
- 30 REM * CHAMP DOMINOES *
- 40 REM * *
- 50 REM * BY *
- 60 REM * *
- 70 REM * ATHOL MCEWAN *
- 80 REM * 1988 *
- 90 REM * *
- 100 REM ******************
- 110 REM **INITIATE GAME**
- 120 POKE53265,PEEK(53265)OR16
- 130 POKE51,144:POKE52,148:POKE55,144:POKE56,148:CLR:DO=7:LE=1:OP=2
- 140 GOSUB4430:POKE53280,0:POKE53281,0
- 150 PRINT"[147]";:FORA=0TO8:PRINTTAB(2)DO$(A):NEXT
- 160 PRINT"[158]"TAB(12)"BY ATHOL MCEWAN":GOSUB4520:GOSUB5060
- 170 PRINT"[158] DO YOU NEED INSTRUCTIONS [Y/N] [146] N"
- 180 PRINTTAB(35)"[145]";:POKE198,0:INPUTA$
- 190 IFA$="N"THEN220
- 200 IFA$="Y"THEN4670
- 210 PRINT"[145][145][145]":GOTO170
- 220 PRINT"[147]";:FORA=0TO8:PRINTTAB(2)DO$(A):NEXT:RW=13:GOSUB2380
- 230 IFPEEK(251)>4ANDPEEK(251)<11THENDO=PEEK(251)
- 240 IFPEEK(252)>0ANDPEEK(252)<3THENLE=PEEK(252)
- 250 IFPEEK(253)>0ANDPEEK(253)<3THENOP=PEEK(253)
- 260 PRINTTAB(15)"[145][145][145][158] SELECT GAME [146]":PRINTTAB(4)
- 270 PRINT" HOW MANY OPPONENTS [1 OR 2]:[146] "OP:PRINTTAB(33)"[145]";:INPUTOP
- 280 IFOP<1OROP>2THENPRINT"[145][145]"TAB(4):GOTO270
- 290 PRINTTAB(4)
- 300 PRINT" NUMBER OF DOMINOES: [146]"DO:PRINTTAB(24)"[145]";:POKE198,0:INPUTDO
- 310 IFDO<5ORDO>9THENPRINT"[145][145][145]":DO=7:GOTO290
- 320 PRINTTAB(4)" LEVEL [146]":PRINT:PRINTTAB(4)"1. NOVICE"
- 330 PRINTTAB(4)"2. CHAMPIONSHIP"
- 340 PRINTTAB(4):PRINT" SELECT LEVEL [146] "LE:PRINTTAB(18)"[145]";:POKE198,0:INPUTLE
- 350 IFLE<1ORLE>2THENPRINT"[145][145][145]":GOTO340
- 360 TD=DO*(OP+1):PRINT"[147]":RW=11:GOSUB2380:FORA=5TO7
- 370 PRINTTAB(3);MID$(DO$(A),3,31):NEXT
- 380 REM **DEAL DOMINOES**
- 390 EQ=0:FORA=1TODO:EQ=EQ+1:FORI=1TO(OP+1)
- 400 RQ=INT(28*RND(0)+1):IFS$(RQ)=""THEN400
- 410 DD$(I)=S$(RQ):S$(RQ)=""
- 420 NEXT:IFOP=1THENM$(EQ)=DD$(1):C$(EQ)=DD$(2):NEXT:GOTO450
- 430 M$(EQ)=DD$(1):C$(EQ)=DD$(2):H$(EQ)=DD$(3):NEXT
- 440 REM **SET UP GAME SCREEN**
- 450 PRINT" [158]MAX":IFOP=2THENPRINT" JOE"
- 460 IFOP=2THENB2=DO:D2=DO:G2=DO:GOSUB2490:GOSUB2510:GOSUB2440:GOSUB3390:GOTO480
- 470 IFOP=1THENB2=DO:D2=DO:GOSUB2490:GOSUB2440:GOSUB3390
- 480 IFOP=2THENGOSUB3240:PRINT"";TAB(30)"[150]MAX[158]JOEYOU":MR=0:CR=0:GR=0:GOTO500
- 490 GOSUB3240:PRINT"";TAB(30)"[150]MAX YOU":MR=0:CR=0
- 500 PRINT" [158][176][192][192][174]":PRINT" [194][194]":PRINT" [173][192][192][189]"
- 510 REM **CHECK FOR HIGHEST DOMINO**
- 520 IFS$(28)=""THENX=6:GOTO600
- 530 IFS$(26)=""THENX=5:GOTO600
- 540 IFS$(23)=""THENX=4:GOTO600
- 550 IFS$(19)=""THENX=3:GOTO600
- 560 IFS$(14)=""THENX=2:GOTO600
- 570 IFS$(8)=""THENX=1:GOTO600
- 580 IFS$(1)=""THENX=0:GOTO600
- 590 GOTO690
- 600 FORI=1TODO:L=VAL(LEFT$(M$(I),1)):R=VAL(RIGHT$(M$(I),1)):XX=L+R
- 610 IFL=XANDR=XTHENPP=I:PT=3:GOTO850
- 620 NEXT
- 630 FORI=1TODO:L=VAL(LEFT$(C$(I),1)):R=VAL(RIGHT$(C$(I),1)):XX=L+R
- 640 IFL=XANDR=XTHENPP=I:PT=1:N$="MAX":GOTO870
- 650 NEXT:IFOP=1THEN690
- 660 FORI=1TODO:L=VAL(LEFT$(H$(I),1)):R=VAL(RIGHT$(H$(I),1)):XX=L+R
- 670 IFL=XANDR=XTHENPP=I:PT=2:N$="JOE":GOTO900
- 680 NEXT
- 690 IFS$(27)=""THENX=11:GOTO750
- 700 IFS$(25)=""THENX=10:GOTO750
- 710 IFS$(22)=""ORS$(24)=""THENX=9:GOTO750
- 720 IFS$(21)=""ORS$(18)=""THENX=8:GOTO750
- 730 IFS$(20)=""ORS$(17)=""THENX=7:GOTO750
- 740 IFS$(16)=""ORS$(12)=""ORS$(7)=""THENX=6:GOTO750
- 750 FORI=1TODO:XX=VAL(LEFT$(M$(I),1))+VAL(RIGHT$(M$(I),1))
- 760 IFXX=XTHENPP=I:PT=3:GOTO850
- 770 NEXT
- 780 FORI=1TODO:XX=VAL(LEFT$(C$(I),1))+VAL(RIGHT$(C$(I),1))
- 790 IFXX=XTHENPP=I:PT=1:N$="MAX":GOTO870
- 800 NEXT:IOP=1THEN840
- 810 FORI=1TODO:XX=VAL(LEFT$(H$(I),1))+VAL(RIGHT$(H$(I),1))
- 820 IFXX=XTHENPP=I:PT=2:N$="JOE":GOTO900
- 830 NEXT
- 840 REM **PLAY HIGHEST DOMINO**
- 850 LC=10:RC=10:GOSUB2400
- 860 PRINTTAB(10)"[158][145][145]YOU HAVE FIRST DROP":FORT=1TO500:NEXT:GOTO930
- 870 GOSUB2400:PRINTTAB(10)"[158][145][145]"N$" HAS FIRST DROP":FORT=1TO500:NEXT
- 880 XX$=C$(PP):C$(PP)="":GOSUB2660:GOSUB3290:GOSUB2400:V1=VAL(LEFT$(XX$,1))
- 890 V2=VAL(RIGHT$(XX$,1)):L=V1:R=V2:GOSUB3450:GOSUB3330:GOSUB2850:GOTO960
- 900 GOSUB2400:PRINTTAB(10)"[158][145][145]"N$" HAS FIRST DROP":FORT=1TO500:NEXT
- 910 XX$=H$(PP):H$(PP)="":GOSUB2750:GOSUB3310:GOSUB2400:V1=VAL(LEFT$(XX$,1))
- 920 V2=VAL(RIGHT$(XX$,1)):L=V1:R=V2:GOSUB3450:GOSUB3330:GOSUB2850:GOTO960
- 930 XX$=M$(PP):M$(PP)="":GOSUB2530:GOSUB3270:GOSUB2400:V1=VAL(LEFT$(XX$,1))
- 940 V2=VAL(RIGHT$(XX$,1)):L=V1:R=V2:GOSUB3450:GOSUB3330
- 950 REM **CHECK WHO PLAYS NEXT**
- 960 PT=PT+1
- 970 IFPT=1THENN$="MAX":GOTO1150
- 980 IFOP=1ANDPT=2THENPT=3
- 990 IFPT=2THENN$="JOE":GOTO1660
- 1000 IFPT=3THEN1030
- 1010 IFPT>3THENPT=1:GOTO970
- 1020 REM **YOU MOVE ROUTINE**
- 1030 XX$="":GOSUB2420:CP=0
- 1040 RW=12:GOSUB2380:PRINT"[158]ENTER YOUR":PRINT"MOVE":SYS39270
- 1050 G$=CHR$(PEEK(252)):G$=G$+CHR$(PEEK(253))
- 1060 IFLEFT$(G$,1)="D"THENGOSUB3620:GOSUB2900:GOTO1120
- 1070 G=VAL(G$):IFG<1ORG>D2THENGOSUB3760:GOTO1030
- 1080 XX$=M$(G):L=VAL(LEFT$(XX$,1)):R=VAL(RIGHT$(XX$,1))
- 1090 IFL<>V1ANDL<>V2ANDR<>V1ANDR<>V2THENGOSUB3760:GOTO1030
- 1100 M$(G)="":GOSUB3450:GOSUB2530:GOSUB3270:GOSUB1510:IFD2=0THEN3790
- 1110 GOTO960
- 1120 IFCH=1THENCH=0:GOSUB2420:GOTO960
- 1130 IFCH=0THEN1030
- 1140 REM **MAX'S MOVE ROUTINE**
- 1150 RW=12:GOSUB2380:PRINT"[158]MAX TO":PRINT"MOVE":FORT=1TO1000:NEXT
- 1160 XX$="":FORI=1TO11:PD$(I)="":NG$(I)="":Q(I)=0:NEXT:C=1:V=1:CK=0
- 1170 FORI=1TOB2:L=VAL(LEFT$(C$(I),1)):R=VAL(RIGHT$(C$(I),1))
- 1180 IFL=V1ORR=V1THENPD$(C)=C$(I):C=C+1:GOTO1210
- 1190 IFL=V2ORR=V2THENPD$(C)=C$(I):C=C+1:GOTO1210
- 1200 NG$(V)=C$(I):V=V+1
- 1210 NEXT:C=C-1:V=V-1
- 1220 IFPD$(1)=""THENGOSUB3010:GOTO1290
- 1230 IFC=1THENPP=1:XX$=PD$(PP):GOSUB2070:GOSUB3450:GOTO1270
- 1240 IFLE=1THEN1260
- 1250 IFLE=2THEN1310
- 1260 PP=INT(C*RND(0))+1:XX$=PD$(PP):GOSUB2070:GOSUB3450
- 1270 IFB2=0THEN3830
- 1280 GOTO960
- 1290 IFCH=1THENCH=0:GOSUB2420:GOTO960
- 1300 IFCH=0THEN1160
- 1310 IFLC=10ANDRC=10THEN1390
- 1320 FORA=1TOC:L=VAL(LEFT$(PD$(A),1)):R=VAL(RIGHT$(PD$(A),1))
- 1330 IFL=V1ANDR=LCTHENQ(A)=10
- 1340 IFL=V2ANDR=RCTHENQ(A)=10
- 1350 IFR=V1ANDL=LCTHENQ(A)=Q(A)+10
- 1360 IFR=V2ANDL=RCTHENQ(A)=Q(A)+10
- 1370 IFQ(A)=20THENPP=A:XX$=PD$(A):GOSUB2070:GOSUB3450:GOTO1270
- 1380 NEXT
- 1390 FORA=1TOC:L(A)=VAL(LEFT$(PD$(A),1)):R(A)=VAL(RIGHT$(PD$(A),1))
- 1400 FORI=1TOV:LL(I)=VAL(LEFT$(NG$(I),1)):RR(I)=VAL(RIGHT$(NG$(I),1))
- 1410 IFL(A)=V1ANDR(A)=LL(I)ORR(A)=RR(I)THENQ(A)=Q(A)+5
- 1420 IFR(A)=V1ANDR(A)=LL(I)ORR(A)=RR(I)THENQ(A)=Q(A)+5
- 1430 IFL(A)=V2ANDR(A)=LL(I)ORR(A)=RR(I)THENQ(A)=Q(A)+5
- 1440 IFR(A)=V2ANDR(A)=LL(I)ORR(A)=RR(I)THENQ(A)=Q(A)+5
- 1450 NEXT:NEXT
- 1460 FORA=1TOC:LT=VAL(LEFT$(PD$(A),1)):RT=VAL(RIGHT$(PD$(A),1))
- 1470 Q(A)=Q(A)+LT+RT:NEXT:LC=0:RC=0:PC=0:FORA=1TOC:TQ=Q(A)+L(A)+R(A)
- 1480 IFPC<TQTHENPC=TQ:PP=A
- 1490 NEXT:XX$=PD$(PP):GOSUB2070:GOSUB3450:GOTO1270
- 1500 REM **POSITION YOUR DOMINO**
- 1510 IFV1=V2ANDL=RTHENGOSUB2320:GOSUB2420:RETURN
- 1520 IFL=V1ANDR=V2THEN1550
- 1530 IFR=V1ANDL=V2THEN1550
- 1540 GOSUB2320:GOTO1640
- 1550 IFD2=0ANDL=V1THENV2=L:V3=R:V4=L:GOSUB3350:GOTO1640
- 1560 IFD2=0ANDL=V2THENV1=L:V3=L:V4=R:GOSUB3370:GOTO1640
- 1570 GOSUB2420:PRINT"[158][145][145][145]"GU$(L)"UP":PRINT"OR "GU$(R):PRINT" UP "
- 1580 GOSUB3730:SYS39270:SD$=CHR$(PEEK(252)):SD=VAL(SD$)
- 1590 IFSD<>LANDSD<>RTHEN1570
- 1600 IFSD=LANDL=V1THENV2=L:V3=R:V4=L:GOSUB3350:GOTO1640
- 1610 IFSD=LANDL=V2THENV1=L:V3=L:V4=R:GOSUB3370:GOTO1640
- 1620 IFSD=RANDR=V1THENV2=R:V3=L:V4=R:GOSUB3350:GOTO1640
- 1630 IFSD=RANDR=V2THENV1=R:V3=R:V4=L:GOSUB3370
- 1640 GOSUB2420: RETURN
- 1650 REM **JOE'S MOVE ROUTINE**
- 1660 RW=12:GOSUB2380:PRINT"[158]JOE TO":PRINT"MOVE":FORT=1TO1000:NEXT
- 1670 XX$="":FORI=1TO11:PD$(I)="":NG$(I)="":Q(I)=0:NEXT:C=1:V=1:CJ=0
- 1680 FORI=1TOG2:L=VAL(LEFT$(H$(I),1)):R=VAL(RIGHT$(H$(I),1))
- 1690 IFL=V1ORR=V1THENPD$(C)=H$(I):C=C+1:GOTO1720
- 1700 IFL=V2ORR=V2THENPD$(C)=H$(I):C=C+1:GOTO1720
- 1710 NG$(V)=H$(I):V=V+1
- 1720 NEXT:C=C-1:V=V-1
- 1730 IFPD$(1)=""THENGOSUB3070:GOTO1800
- 1740 IFC=1THENPP=1:XX$=PD$(PP):GOSUB2090:GOSUB3450:GOTO1780
- 1750 IFLE=1THEN1770
- 1760 IFLE=2THEN1820
- 1770 PP=INT(C*RND(0))+1:XX$=PD$(PP):GOSUB2090:GOSUB3450
- 1780 IFG2=0THEN3830
- 1790 GOTO960
- 1800 IFCH=1THENCH=0:GOSUB2420:GOTO960
- 1810 IFCH=0THEN1670
- 1820 IFLC=10ANDRC=10THEN1900
- 1830 FORA=1TOC:L=VAL(LEFT$(PD$(A),1)):R=VAL(RIGHT$(PD$(A),1))
- 1840 IFL=V1ANDR=LCTHENQ(A)=10
- 1850 IFL=V2ANDR=RCTHENQ(A)=10
- 1860 IFR=V1ANDL=LCTHENQ(A)=Q(A)+10
- 1870 IFR=V2ANDL=RCTHENQ(A)=Q(A)+10
- 1880 IFQ(A)=20THENPP=A:XX$=PD$(A):GOSUB2090:GOSUB3450:GOTO1780
- 1890 NEXT
- 1900 FORA=1TOC:L(A)=VAL(LEFT$(PD$(A),1)):R(A)=VAL(RIGHT$(PD$(A),1))
- 1910 FORI=1TOV:LL(I)=VAL(LEFT$(NG$(I),1)):RR(I)=VAL(RIGHT$(NG$(I),1))
- 1920 IFL(A)=V1ANDR(A)=LL(I)ORR(A)=RR(I)THENQ(A)=Q(A)+5
- 1930 IFR(A)=V1ANDR(A)=LL(I)ORR(A)=RR(I)THENQ(A)=Q(A)+5
- 1940 IFL(A)=V2ANDR(A)=LL(I)ORR(A)=RR(I)THENQ(A)=Q(A)+5
- 1950 IFR(A)=V2ANDR(A)=LL(I)ORR(A)=RR(I)THENQ(A)=Q(A)+5
- 1960 NEXT:NEXT
- 1970 FORA=1TOC:LT=VAL(LEFT$(PD$(A),1)):RT=VAL(RIGHT$(PD$(A),1))
- 1980 Q(A)=Q(A)+LT+RT:NEXT:LC=0:RC=0:PC=0:FORA=1TOC:TQ=Q(A)+L(A)+R(A)
- 1990 IFPC<TQTHENPC=TQ:PP=A
- 2000 NEXT:XX$=PD$(PP):GOSUB2090:GOSUB3450:GOTO1780
- 2010 IFV1=V2ANDL=RTHENGOSUB2320:GOSUB2420:RETURN
- 2020 IFL=V1ANDR=V2THEN2050
- 2030 IFR=V1ANDL=V2THEN2050
- 2040 GOSUB2320:GOSUB2420:RETURN
- 2050 IFG2=0ANDL=V1THENV2=L:V3=R:V4=L:GOSUB3350:GOSUB2420:RETURN
- 2060 IFG2=0ANDL=V2THENV1=L:V3=L:V4=R:GOSUB3370:GOSUB2420:RETURN
- 2070 FORI=1TOB2:IFC$(I)=PD$(PP)THENXX$=C$(I):C$(I)=""
- 2080 NEXT:GOSUB2660:L=VAL(LEFT$(XX$,1)):R=VAL(RIGHT$(XX$,1)):GOTO2120
- 2090 FORI=1TOG2:IFH$(I)=PD$(PP)THENXX$=H$(I):H$(I)=""
- 2100 NEXT:GOSUB2750:L=VAL(LEFT$(XX$,1)):R=VAL(RIGHT$(XX$,1))
- 2110 REM **DECIDE WHERE TO POSITION DOM**
- 2120 IFL=V1ANDR=V2THEN2150
- 2130 IFR=V1ANDL=V2THEN2150
- 2140 GOSUB2320:GOTO2300
- 2150 IFP(R)=7ANDR=V2THENV2=L:V3=R:V4=L:GOSUB3350:GOTO2300
- 2160 IFP(R)=7ANDR=V1THENV1=L:V3=L:V4=R:GOSUB3370:GOTO2300
- 2170 IFP(L)=7ANDL=V2THENV2=R:V3=L:V4=R:GOSUB3350:GOTO2300
- 2180 IFP(L)=7ANDL=V1THENV1=R:V3=R:V4=L:GOSUB3370:GOTO2300
- 2190 IFLE=1THENV1=R:V3=R:V4=L:GOSUB3370:GOTO2300
- 2200 AA=P(L):IFAA>=P(R)ANDL=V1THENV2=L:V3=R:V4=L:GOSUB3350:GOTO2300
- 2210 IFAA>=P(R)ANDL=V2THENV1=L:V3=L:V4=R:GOSUB3370:GOTO2300
- 2220 IFAA>=P(R)ANDR=V1THENV2=R:V3=L:V4=R:GOSUB3350:GOTO2300
- 2230 IFAA>=P(R)ANDR=V2THENV1=R:V3=R:V4=L:GOSUB3370:GOTO2300
- 2240 IFAA<P(R)ANDR=V1THENV1=L:V3=L:V4=R:GOSUB3370:GOTO2300
- 2250 IFAA<P(R)ANDR=V2THENV2=L:V3=R:V4=L:GOSUB3350:GOTO2300
- 2260 IFL=V1THENV2=L:V3=R:V4=L:GOSUB3370:GOTO2300
- 2270 IFL=V2THENV2=L:V3=L:V4=R:GOSUB3350:GOTO2300
- 2280 IFR=V1THENV2=R:V3=L:V4=R:GOSUB3370:GOTO2300
- 2290 IFR=V2THENV1=R:V3=R:V4=L:GOSUB3350
- 2300 IFPT=1THENGOSUB3290:RETURN
- 2310 IFPT=2THENGOSUB3310:RETURN
- 2320 IFL=V1THENV1=R:V3=R:V4=L:GOSUB3370:GOTO2360
- 2330 IFL=V2THENV2=R:V3=L:V4=R:GOSUB3350:GOTO2360
- 2340 IFR=V1THENV1=L:V3=L:V4=R:GOSUB3370:GOTO2360
- 2350 IFR=V2THENV2=L:V3=R:V4=L:GOSUB3350
- 2360 RETURN
- 2370 REM **SET UP ROW**
- 2380 RW=RW+1:EE$=LEFT$(RW$,RW):PRINTEE$;:RETURN
- 2390 REM **CLEAR CENTRE OF SCREEN**
- 2400 RW=11:GOSUB2380:FORI=1TO4:PRINTLEFT$(CL$,33):NEXT:RETURN
- 2410 REM **CLEAR LEFT CENTRE OF SCREEN**
- 2420 RW=11:GOSUB2380:FORA=1TO3:PRINTLEFT$(CL$,10):NEXT:RETURN
- 2430 REM **PLAY YOUR DOM WITH SOUND**
- 2440 M=1:POKELL,VAL(LEFT$(M$(M),1)):POKERR,VAL(RIGHT$(M$(M),1)):SYSO1:GOSUB3710
- 2450 M=M+1:POKELL,VAL(LEFT$(M$(M),1)):POKERR,VAL(RIGHT$(M$(M),1)):SYSO2:GOSUB3710
- 2460 IFM>D2-1THENRETURN
- 2470 GOTO2450
- 2480 REM **PLAY MAX'S DOM WITH SOUND**
- 2490 SYSC1:GOSUB3710:FORP=1TOB2-1:SYSC2:GOSUB3710:NEXT:GOSUB2850:RETURN
- 2500 REM **PLAY JOE'S DOM WITH SOUND**
- 2510 SYSQ1:GOSUB3710:FORP=1TOG2-1:SYSQ2:GOSUB3710:NEXT:RETURN
- 2520 REM **REMOVE ONE OF YOUR DOM**
- 2530 D2=D2-1:IFD2=0THENRW=15:GOSUB2380:FORA=1TO9:PRINTLEFT$(CL$,33):NEXT:RETURN
- 2540 I=1:FORA=1TO(D2+1):IFM$(A)=""THEN2560
- 2550 ZZ$(I)=M$(A):I=I+1
- 2560 NEXT
- 2570 FORA=1TO11:M$(A)="":NEXT:FORA=1TOD2:M$(A)=ZZ$(A):NEXT
- 2580 RW=15:GOSUB2380:FORI=1TO9:PRINTLEFT$(CL$,34):NEXT
- 2590 PRINTLEFT$(CL$,34);""
- 2600 M=1:POKELL,VAL(LEFT$(M$(M),1)):POKERR,VAL(RIGHT$(M$(M),1)):SYSO1
- 2610 IFD2=1THENGOSUB3240:RETURN
- 2620 M=M+1:POKELL,VAL(LEFT$(M$(M),1)):POKERR,VAL(RIGHT$(M$(M),1)):SYSO2
- 2630 IFM>D2-1THENGOSUB3240:RETURN
- 2640 GOTO2620
- 2650 REM **REMOVE ONE OF MAX'S DOM**
- 2660 B2=B2-1:IFB2=0THENPRINT"";:FORA=1TO5
- 2670 IFB2=0THENPRINT""LEFT$(CL$,24):NEXT:RETURN
- 2680 I=1:FORA=1TO(B2+1):IFC$(A)=""THEN2700
- 2690 ZZ$(I)=C$(A):I=I+1
- 2700 NEXT
- 2710 FORA=1TO11:C$(A)="":NEXT:FORA=1TOB2:C$(A)=ZZ$(A):NEXT
- 2720 PRINT"";:FORA=1TO5:PRINT""LEFT$(CL$,24):NEXT:SYSC1:IFB2=1THENRETURN
- 2730 FORP=1TOB2-1:SYSC2:NEXT:GOSUB2850:RETURN
- 2740 REM **REMOVE ONE OF JOE'S DOM**
- 2750 G2=G2-1:IFG2=0THENPRINT"":FORA=1TO5
- 2760 IFG2=0THENPRINT""LEFT$(CL$,24):NEXT:RETURN
- 2770 I=1:FORA=1TO(G2+1):IFH$(A)=""THEN2790
- 2780 ZZ$(I)=H$(A):I=I+1
- 2790 NEXT
- 2800 FORA=1TO11:H$(A)="":NEXT:FORA=1TOG2:H$(A)=ZZ$(A):NEXT
- 2810 PRINT"":FORA=1TO5:PRINT""LEFT$(CL$,24):NEXT
- 2820 SYSQ1:IFG2=1THENRETURN
- 2830 FORP=1TOG2-1:SYSQ2:NEXT:GOSUB2850:RETURN
- 2840 REM **PRINT NOS FOR COMPUTER DOM**
- 2850 PRINT" "
- 2860 DN=B2:IFG2>B2THENDN=G2
- 2870 RW=5:GOSUB2380:PRINT"";:FORA=1TODN:A$=STR$(A)
- 2880 A$=RIGHT$(A$,(LEN(A$)-1)):PRINTA$" ";:NEXT:RETURN
- 2890 REM **ROUTINE IF YOU CANT PLAY**
- 2900 LC=V1:RC=V2:IFD2<11THEN2950
- 2910 XX$="OUT[146]":GOSUB3270:CP=1:CH=1
- 2920 IFOP=1ANDCP=1ANDCK=1THEN3980
- 2930 IFCP=1ANDCK=1ANDCJ=1THEN3980
- 2940 GOSUB3710:GOSUB3710:RETURN
- 2950 IFTD=28THEN2910
- 2960 A=INT(28*RND(0)+1):IFS$(A)=""THEN2960
- 2970 D2=D2+1:M$(D2)=S$(A):S$(A)="":TD=TD+1:GOSUB3390
- 2980 POKELL,VAL(LEFT$(M$(D2),1)):POKERR,VAL(RIGHT$(M$(D2),1)):PRINT"[152]":SYSO2
- 2990 GOSUB3710:GOSUB3240:RETURN
- 3000 REM **ROUTINE IF MAX CANT PLAY**
- 3010 IFB2<11THEN3110
- 3020 XX$="OUT[146]":GOSUB3290:CK=1:CH=1
- 3030 IFOP=1ANDCP=1ANDCK=1THEN3980
- 3040 IFCK=1ANDCP=1ANDCJ=1THEN3980
- 3050 GOSUB3710:GOSUB3710:GOSUB2860:RETURN
- 3060 REM **ROUTINE IF JOE CANT PLAY**
- 3070 IFG2<11THEN3170
- 3080 XX$="OUT[146]":GOSUB3310:CJ=1:CH=1
- 3090 IFCK=1ANDCP=1ANDCJ=1THEN3980
- 3100 GOSUB3710:GOSUB3710:GOSUB2860:RETURN
- 3110 IFTD=28THEN3020
- 3120 A=INT(28*RND(0)+1):IFS$(A)=""THEN3120
- 3130 REM **ADD DOM TO MAX'S HAND**
- 3140 B2=B2+1:C$(B2)=S$(A):S$(A)="":TD=TD+1:GOSUB3390
- 3150 PRINT"[152]":SYSC2
- 3160 GOSUB3710:RETURN
- 3170 IFTD=28THEN3080
- 3180 A=INT(28*RND(0)+1):IFS$(A)=""THEN3180
- 3190 REM **ADD DOM TO JOE'S HAND**
- 3200 G2=G2+1:H$(G2)=S$(A):S$(A)="":TD=TD+1:GOSUB3390
- 3210 PRINT"[152]":SYSQ2
- 3220 GOSUB3710:RETURN
- 3230 REM **NOS FOR YOUR DOMINOES**
- 3240 RW=24:GOSUB2380:PRINTTAB(1)"1 ";:IFD2=1THENRETURN
- 3250 FORI=2TOD2:PRINTI;:NEXT:RETURN
- 3260 REM ** PRINT YOUR DOM VALUE IN COLUMN**
- 3270 RW=MR:MR=MR+1:GOSUB2380:PRINT"":PRINTTAB(36)XX$:RETURN
- 3280 REM **PRINT MAX'S DOM VALUE IN COLUMN**
- 3290 RW=CR:CR=CR+1:GOSUB2380:PRINT"[150]":PRINTTAB(30)XX$:RETURN
- 3300 REM **PRINT JOE'S DOM VALUE IN COLUMN**
- 3310 RW=GR:GR=GR+1:GOSUB2380:PRINT"[158]":PRINTTAB(33)XX$:RETURN
- 3320 REM **PRINT CENTRE DOMINOE**
- 3330 POKELL,V1:POKERR,V2:SYSCD:GOSUB3710:RETURN
- 3340 REM **PRINT CENTRE RIGHT DOMINOE**
- 3350 POKELL,V3:POKERR,V4:SYSCC:GOSUB3710:RETURN
- 3360 REM **PRINT CENTRE LEFT DOMINOE**
- 3370 POKELL,V3:POKERR,V4:SYSCL:GOSUB3710:RETURN
- 3380 REM **PRINT NO OF DOMINOES LEFT**
- 3390 I=28-TD:IFI<0THENI=0
- 3400 PRINT" ":I$=STR$(I)
- 3410 I$=RIGHT$(I$,(LEN(I$)-1))
- 3420 IFLEN(I$)=1THENI$="0"+I$
- 3430 PRINT"[156]"I$:RETURN
- 3440 REM **KEEP CHECK ON DOMINOES PLAYED**
- 3450 R=VAL(RIGHT$(XX$,1)):L=VAL(LEFT$(XX$,1))
- 3460 IFR=0THENP(0)=P(0)+1
- 3470 IFR=1THENP(1)=P(1)+1
- 3480 IFR=2THENP(2)=P(2)+1
- 3490 IFR=3THENP(3)=P(3)+1
- 3500 IFR=4THENP(4)=P(4)+1
- 3510 IFR=5THENP(5)=P(5)+1
- 3520 IFR=6THENP(6)=P(6)+1
- 3530 IFL=0THENP(0)=P(0)+1
- 3540 IFL=1THENP(1)=P(1)+1
- 3550 IFL=2THENP(2)=P(2)+1
- 3560 IFL=3THENP(3)=P(3)+1
- 3570 IFL=4THENP(4)=P(4)+1
- 3580 IFL=5THENP(5)=P(5)+1
- 3590 IFL=6THENP(6)=P(6)+1
- 3600 RETURN
- 3610 REM **CHECK IF YOU CAN PLAY**
- 3620 IFLE<>1THENRETURN
- 3630 FORA=1TOD2:L=VAL(LEFT$(M$(A),1)):R=VAL(RIGHT$(M$(A),1))
- 3640 IFL=V1ORR=V1THEN3680
- 3650 IFL=V2ORR=V2THEN3680
- 3660 NEXT
- 3670 RETURN
- 3680 FORI=1TO3:GOSUB2420:RW=12:GOSUB2380:PRINT"YOU CAN":PRINT" PLAY[158]"
- 3690 GOSUB3760:NEXT:FORA=1TO1000:NEXT:GOTO1030
- 3700 REM **SOUND ROUTINES**
- 3710 FORX=SSTOSS+24:POKEX,0:NEXT:POKEVO,15:POKEAD,5:POKESR,5:POKEWF,17
- 3720 FORTZ=1TO4:POKEWF,130:POKEHF,33:POKELF,33:POKEHF,0:POKELF,O:NEXT:RETURN
- 3730 FORA=1TO3:POKEVO,15
- 3740 POKEWF,0:POKELF,0:POKEHF,0:POKEAD,0:POKESR,240:POKEWF,17
- 3750 POKEHF,150:POKEWF,0:POKE53280,0:NEXT:RETURN
- 3760 POKEVO,15:POKEWF,0:POKELF,0:POKEHF,0:POKEAD,0:POKESR,240:POKEWF,17
- 3770 FORZ=60TO0STEP-1:POKEHF,Z:NEXT:RETURN
- 3780 REM **YOU HAVE WON**
- 3790 RW=18:GOSUB2380:PRINTEE$TAB(15)"WELL DONE":PRINTTAB(16)"YOU WIN"
- 3800 RW=24:GOSUB2380:PRINT" "
- 3810 W=0:F=17:T=1:GOTO3890
- 3820 REM **MAX OR JOE WINS**
- 3830 IFB2=0THENRW=3:GOSUB2380:PRINTEE$TAB(15)"HARD LUCK"
- 3840 IFB2=0THENPRINTTAB(16)"MAX WINS"
- 3850 IFOP=2ANDG2=0THENRW=8:GOSUB2380:PRINTEE$TAB(15)"HARD LUCK"
- 3860 IFOP=2ANDG2=0THENPRINTTAB(16)"JOE WINS"
- 3870 W=17:F=0:T=-1:GOTO3890
- 3880 REM **END OF GAME SOUND**
- 3890 POKEVO,15:POKEWF,0:POKESS,0:POKEHF,0:POKEAD,0:POKESR,240:POKEWF,33
- 3900 FORZ=WTOFSTEPT:POKE53280,Z:FORA1=1TO15:POKEHF,A*A1:NEXT:NEXT
- 3910 POKEWF,0:POKE53280,0:RW=23:GOSUB2380
- 3920 PRINTTAB(5)"[158] DO YOU WANT ANOTHER GAME: [146] Y":PRINTTAB(31)"[145]";:INPUTA$
- 3930 IFLEFT$(A$,1)="Y"THENPOKE251,DO:POKE252,LE:POKE253,OP
- 3940 IFLEFT$(A$,1)="Y"THENCLR:GOSUB4430:GOSUB4520:GOTO220
- 3950 IFLEFT$(A$,1)="N"THENSTOP
- 3960 PRINT"[145][145]":GOTO3920
- 3970 REM **STITCHED GAME**
- 3980 C1=0:C2=0:V1=0:V2=0:J1=0:J2=0
- 3990 PRINT"[147]";:FORA=0TO8:PRINTTAB(2)DO$(A):NEXT
- 4000 PRINTTAB(14)"STITCHED GAME"
- 4010 IFOP=1THENRW=15:GOSUB2380:PRINT"MAX"SPC(31)"YOU":GOTO4030
- 4020 RW=15:GOSUB2380:PRINT"MAX"SPC(14)"JOE"SPC(14)"YOU"
- 4030 TT=B2:IFD2>TTTHENTT=D2
- 4040 IFG2>TTTHENTT=G2
- 4050 FORA=1TOTT:C1=C1+VAL(LEFT$(C$(A),1)):C2=C2+VAL(RIGHT$(C$(A),1))
- 4060 IFC$(A)=""THENC$(A)=" "
- 4070 PRINT"[158]"C$(A)SPC(14);
- 4080 IFOP=2THENJ1=J1+VAL(LEFT$(H$(A),1)):J2=J2+VAL(RIGHT$(H$(A),1))
- 4090 IFOP=2ANDH$(A)=""THENH$(A)=" "
- 4100 IFOP=2THENPRINTH$(A);SPC(14);
- 4110 IFOP=1THENPRINTSPC(17);
- 4120 V1=V1+VAL(LEFT$(M$(A),1)):V2=V2+VAL(RIGHT$(M$(A),1))
- 4130 IFM$(A)=""THENM$(A)=" "
- 4140 PRINTM$(A):NEXT:GOTO4210
- 4150 FORA=1TOTT:C1=C1+VAL(LEFT$(C$(A),1)):C2=C2+VAL(RIGHT$(C$(A),1))
- 4160 IFC$(A)=""THENC$(A)=" "
- 4170 PRINT"[158]"C$(A)SPC(31);
- 4180 V1=V1+VAL(LEFT$(M$(A),1)):V2=V2+VAL(RIGHT$(M$(A),1))
- 4190 IFM$(A)=""THENM$(A)=" "
- 4200 PRINTM$(A):NEXT
- 4210 IFOP=2THENRW=11:GOSUB2380:PRINT"MAX'S"SPC(11)"JOE'S"SPC(13)"YOUR"
- 4220 IFOP=1THENRW=11:GOSUB2380:PRINT"MAX'S"SPC(29)"YOUR"
- 4230 IFOP=2THENPRINT"POINTS"SPC(10)"POINTS"SPC(11)"POINTS"
- 4240 IFOP=1THENPRINT"POINTS"SPC(27)"POINTS"
- 4250 S1=C1+C2:S2=J1+J2:S3=V1+V2
- 4260 IFOP=2THENPRINT""S1;SPC(16-LEN(STR$(S1)));S2;SPC(16-LEN(STR$(S2)))S3
- 4270 IFOP=1THENPRINT" "S1;SPC(32-LEN(STR$(S1)));S3:S2=1000
- 4280 FORT=1TO10
- 4290 IFS1<S2ANDS1<S3THENN$="MAX":GOTO4360
- 4300 IFS2<S1ANDS2<S3THENN$="JOE":GOTO4360
- 4310 IFS3<S1ANDS3<S2THENN$="YOU":GOTO4360
- 4320 IFS1=S2ANDS2=S3THENRW=14:GOSUB2380:PRINTTAB(16)"WE DRAW":GOTO4410
- 4330 IFS1=S2THENRW=14:GOSUB2380:PRINTTAB(11)"MAX AND JOE DRAW":GOTO4410
- 4340 IFS1=S3THENRW=14:GOSUB2380:PRINTTAB(11)"MAX AND YOU DRAW":GOTO4410
- 4350 IFS2=S3THENRW=14:GOSUB2380:PRINTTAB(11)"JOE AND YOU DRAW":GOTO4410
- 4360 RW=14:GOSUB2380:PRINTTAB(15)""N$" WINS"
- 4370 IFN$="YOU"THENPRINTTAB(22)"[145] "
- 4380 FORA=1TO200:NEXT
- 4390 PRINTTAB(15)"[145] ":NEXT:PRINTTAB(15)"[145]"N$" WINS"
- 4400 IFN$="YOU"THENPRINTTAB(22)"[145] "
- 4410 RW=23:GOSUB2380:GOTO3920
- 4420 REM **SET UP VARIABLES ETC**
- 4430 DO$(0)="[176][195][195][195][195][195][195][195][195][195][195][195][195][195][195][195][195][195][195][195][195][195][195][195][195][195][195][195][195][195][195][195][195][195][195][174]"
- 4440 DO$(1)="[221] [213][195][201][178] [178][176][195][201][213][178][201][176][195][201][178][213][195][201][176][201][178][176][195][201][178] [178][178][176][195][201] [221]"
- 4450 DO$(2)="[221][158] [221] [171][195][179][171][195][179][221][221][221][171][195][203][221][221][221][221][221][221][221][173][195][174][171][195][179][221][171][195][203] [221]"
- 4460 DO$(3)="[221] [202][195][203][177] [177][177] [177][177] [177][177] [177][202][195][203][177][202][189][173][195][189][177] [177][177][177] [221]"
- 4470 DO$(4)="[221] [221]"
- 4480 DO$(5)="[221] [176][195][201][213][195][201][213][178][201][213][174][176][201][178][213][195][201][213][195][201][176][195][174] [221]"
- 4490 DO$(6)="[221][158] [221][221][221][221][221][221][221][221][221][221][221][221][221][221][221][221][221][171][195] [173][195][174] [221]"
- 4500 DO$(7)="[221] [173][195][203][202][195][203][177] [177][173][189][177][173][189][202][195][203][173][195][189][173][195][189] [221]"
- 4510 DO$(8)="[173][195][195][195][195][195][195][195][195][195][195][195][195][195][195][195][195][195][195][195][195][195][195][195][195][195][195][195][195][195][195][195][195][195][195][189][159]":RETURN
- 4520 GU$(0)="BLANK ":GU$(1)="ONE ":GU$(2)="TWO ":GU$(3)="THREE "
- 4530 GU$(4)="FOUR ":GU$(5)="FIVE ":GU$(6)="SIX "
- 4540 RW$=""
- 4550 CL$=" "
- 4560 DIMS$(28),C$(11),M$(11),H$(11),XX$(11),PD$(11),NG$(11),Q$(11),Q(11)
- 4570 SS=54272:LF=SS:HF=SS+1:AD=SS+5:SR=SS+6:WF=SS+4:VO=SS+24:H3=SS+15:L3=SS+14
- 4580 C1=39150:C2=39185:O1=38160:O2=38220:CD=38582:LL=251:RR=252
- 4590 CC=39011:CL=38992:Q1=39210:Q2=39245
- 4600 S$(1)="0-0":S$(2)="0-1":S$(3)="0-2":S$(4)="0-3":S$(5)="0-4":S$(6)="0-5"
- 4610 S$(7)="0-6":S$(8)="1-1":S$(9)="1-2":S$(10)="1-3":S$(11)="1-4":S$(12)="1-5"
- 4620 S$(13)="1-6":S$(14)="2-2":S$(15)="2-3":S$(16)="2-4":S$(17)="2-5"
- 4630 S$(18)="2-6":S$(19)="3-3":S$(20)="3-4":S$(21)="3-5":S$(22)="3-6"
- 4640 S$(23)="4-4":S$(24)="4-5":S$(25)="4-6":S$(26)="5-5":S$(27)="5-6"
- 4650 S$(28)="6-6":RETURN
- 4660 REM **INSTRUCTIONS**
- 4670 PRINT"[147] INSTRUCTIONS [146][159]"
- 4680 PRINT"NORMAL DOMINO RULES APPLY...........
- 4690 [153]"YOU WILL BE PLAYING WITH A DOUBLE SIX
- 4700 PRINT"PACK AND DEALT WITH THE NUMBER OF
- 4710 [153]"DOMINOES YOU SELECT BETWEEN 5 AND 9.
- 4720 PRINT"THE COMPUTER WILL CHECK WHICH PLAYER
- 4730 [153]"HOLDS THE HIGHEST DOUBLE AND MAKE THE
- 4740 PRINT"THE FIRST MOVE.
- 4750 [153]"TO MAKE SUBSEQUENT MOVES ENTER THE
- 4760 PRINT"NUMBER OF THE SELECTED DOMINO AND
- 4770 [153]"PRESS RETURN. IF YOU ARE UNABLE TO PLAY
- 4780 PRINT"ADDITIONAL DOMINOES CAN BE DRAWN FROM
- 4790 [153]"THE POOL BY ENTERING 'D' AND RETURN.
- 4800 PRINT"'D' SHOULD BE USED EVEN IF THERE ARE"
- 4810 PRINT"NO DOMINOES LEFT IN THE POOL."
- 4820 PRINT"ALL DOMINOES PLAYED WILL BE DISPLAYED
- 4830 [153]"ON THE RIGHT OF THE SCREEN UNDER THE
- 4840 PRINT"CORRECT COLUMN.
- 4850 [153]"IF YOU HOLD ELEVEN DOMINOES OR THE
- 4860 PRINT"POOL IS EMPTY YOU WILL MISS THAT TURN.
- 4870 [153]"SYS PRESS RETURN TO CONTINUE WAIT
- 4880 GETA$:IFA$=""THEN4880
- 4890 IFA$<>CHR$(13)THEN4880
- 4900 PRINT"[147][159]THE COMPUTER WILL AUTOMATICALLY MAKE
- 4910 [153]"MOVES FOR MAX AND JOE.
- 4920 PRINT"IF YOUR MOVE CAN ALTER THE STATE OF THE
- 4930 [153]"GAME. I.E. YOUR SELECTED DOMINO CAN
- 4940 PRINT"BE PLAYED EITHER WAY YOU WILL BE ASKED
- 4950 [153]"WHICH SIDE UP. THE NUMBER YOU SELECT
- 4960 PRINT"WILL THEN BE THE VALUE AT BOTH ENDS.
- 4970 [153]"IF THE GAME IS 'STITCHED' (NO PLAYER
- 4980 PRINT"WINS) THE WINNER IS DECIDED BY THE
- 4990 [153]"LOWEST SPOT TOTAL OF THE DOMINOES ON
- 5000 PRINT"THE TABLE AT THE END OF THE GAME.
- 5010 [153]"SYS PRESS RETURN FOR FIRST GAME WAIT
- 5020 GETA$:IFA$=""THEN5020
- 5030 IFA$<>CHR$(13)THEN5020
- 5040 GOTO220
- 5050 REM **REDIFINE CHARACTERS**
- 5060 I=49152
- 5070 READ A:IF A=256 THEN5100
- 5080 POKE I,A:I=I+1:GOTO5070
- 5090 DATA 0,3,7,7,7,7,3,256
- 5100 I=49376
- 5110 READ A:IF A=256 THEN5140
- 5120 POKE I,A:I=I+1:GOTO5110
- 5130 DATA 0,192,224,224,224,224,192,256
- 5140 I=49393
- 5150 READ A:IF A=256 THEN RETURN
- 5160 POKE I,A:I=I+1:GOTO5150
- 5170 DATA 0,0,0,0,60,126,126,126
- 5180 DATA 126,60,0,0,0,0,256
-