1 'DOMINO.BA Bob Delbourgo 2 FORI=1TOVAL(RIGHT$(TIME$,2)):R=RND(1):NEXTI:CLEAR500:GOSUB58:CLS:PRINT@91,CHR$(27)"p"" D O M I N O E S ";:FORI=6TO126STEP40 3 PRINT@I," ";:PRINT@66+I," ";:NEXTI:PRINT@11,SPACE$(22);:PRINT@51,SPACE$(1);:PRINT@147,SPACE$(1); 4 PRINT@166," by Bob Delbourgo "CHR$(27)"q";:GOSUB62:GOSUB59:DIMXL(30),YL(30),XR(30),YR(30),N(9),X(180),Y(180):FORI=1TO6 5 FORJ=0TO4:XL(I+6*J)=126+16*I:YL(I+6*J)=3+8*J:XR(I+6*J)=133+16*I:YR(I+6*J)=3+8*J:NEXTJ,I:FORI=1TO10:FORJ=0TO8 6 X(18*I-17+J)=14*I-14:Y(18*I-17+J)=7*J:X(18*I-J)=14*I-7:Y(18*I-J)=7*J:NEXTJ,I 7 CLS:R$="":RL=0:RR=0:RD=RD+1:LINE(0,0)-(139,63),1,B:FORI=6TO132STEP14:LINE(I,0)-(I,57):LINE(I+1,0)-(I+1,57) 8 LINE(I+7,6)-(I+7,63):LINE(I+8,6)-(I+8,63):NEXTI:LINE(140,6)-(140,63),0:LINE(139,0)-(239,44),1,B:PRINT@264,"Draw POCO PILE"; 9 PRINT@304,"Y/N?";:LINE(170,44)-(170,63):LINE(205,44)-(205,63):LINE(239,44)-(239,63) 10 C=1:FORI=1TOLEN(P$)/2:A$=MID$(P$,2*I-1,2):B$=LEFT$(A$,1):X=XL(I):Y=YL(I):GOSUB63:B$=RIGHT$(A$,1):X=XR(I):Y=YR(I):GOSUB63 11 NEXTI 12 PRINT@315,LEN(D$)/2;:PRINT@309,LEN(Q$)/2;:I$=INKEY$:IFI$=CHR$(28)THENC=C+1:IFC>LEN(P$)THENC=LEN(P$) 13 IFI$=CHR$(31)THENC=C+12:IFC>LEN(P$)THENC=C-12 14 IFI$=CHR$(29)THENC=C-1:IFC<1THENC=1 15 IFI$=CHR$(30)THENC=C-12:IFC<1THENC=C+12 16 IFC=2*INT(C/2)THENX=XR(C/2):Y=YR(C/2)ELSEX=XL((C+1)/2):Y=YL((C+1)/2) 17 LINE(X,Y-1)-(X+6,Y-1),1:LINE(X,Y+7)-(X+6,Y+7),1:FORT=1TO20:NEXTT:LINE(X,Y-1)-(X+6,Y-1),0:LINE(X,Y+7)-(X+6,Y+7),0 18 IFI$="N"ORI$="n"THEN24 19 IFI$="Y"ORI$="y"THEN21 20 GOTO12 21 IFD$=""THENDP=1:IFDQ=1THEN50ELSE32 22 P$=P$+LEFT$(D$,2):P=LEN(P$):X=XL(P/2):Y=YL(P/2):B$=LEFT$(D$,1):GOSUB63:X=XR(P/2):Y=YR(P/2):B$=MID$(D$,2,1):GOSUB63 23 D$=RIGHT$(D$,LEN(D$)-2):GOTO12 24 C$=MID$(P$,C,1):C1=2*C-2*INT(C/2)-1:IFC=C1THENF$=MID$(P$,C+1,1)ELSEF$=MID$(P$,C1,1) 25 IFR$=""ANDC$<>F$THENBEEP:GOTO12 26 IFR$=""THENSOUND1000,10:R$=C$+F$:B$=C$:X=X(90):Y=Y(90):GOSUB63:X=X(91):Y=Y(91):GOSUB63:GOTO31 27 IFLEFT$(R$,1)<>C$ANDRIGHT$(R$,1)<>C$THENBEEP:GOTO12 28 DP=0 29 IFC$=LEFT$(R$,1)THENSOUND1000,10:B$=C$:X=X(89-RL):Y=Y(89-RL):GOSUB63:B$=F$:X=X(88-RL):Y=Y(88-RL):GOSUB63:RL=RL+2:R$=F$+C$+R$:GOTO31 30 IFC$=RIGHT$(R$,1)THENSOUND1000,10:B$=C$:X=X(92+RR):Y=Y(92+RR):GOSUB63:B$=F$:X=X(93+RR):Y=Y(93+RR):GOSUB63:RR=RR+2:R$=R$+C$+F$ 31 P$=LEFT$(P$,C1-1)+RIGHT$(P$,LEN(P$)-C1-1):LINE(140,1)-(239,43),0,BF:IFP$=""THEN50 32 FORC=1TOLEN(Q$):C$=MID$(Q$,C,1):IFC$=LEFT$(R$,1)ORC$=RIGHT$(R$,1)THEN36 33 NEXTC:IFD$<>""THENQ$=Q$+LEFT$(D$,2):D$=RIGHT$(D$,LEN(D$)-2):BEEP:PRINT@309,LEN(Q$)/2;:PRINT@315,LEN(D$)/2; 34 IFD$=""THENDQ=1:IFDP=1THEN50ELSE10 35 GOTO32 36 PRINT@146,"Pondering..";:FL=0:FR=0:U$=LEFT$(R$,1):IFC$=U$THENGOSUB73:FL=F 37 U$=RIGHT$(R$,1):IFC$=U$THENGOSUB73:FR=F 38 IF FR>FL OR FR=FL THEN F=FR ELSE F=FL 39 FORC=1TOLEN(Q$):C1=2*C-2*INT(C/2)-1:C$=MID$(Q$,C,1):IFC1=CTHENF$=MID$(Q$,C+1,1)ELSEF$=MID$(Q$,C1,1) 40 IFF=VAL(F$)ANDC$=LEFT$(R$,1)THEN43 41 IFF=VAL(F$)ANDC$=RIGHT$(R$,1)THEN45 42 NEXTC 43 SOUND10000,5 44 IFC$=LEFT$(R$,1)THENB$=C$:X=X(89-RL):Y=Y(89-RL):GOSUB63:B$=F$:X=X(88-RL):Y=Y(88-RL):GOSUB63:RL=RL+2:R$=F$+C$+R$:GOTO47 45 SOUND10000,5 46 IFC$=RIGHT$(R$,1)THENB$=C$:X=X(92+RR):Y=Y(92+RR):GOSUB63:B$=F$:X=X(93+RR):Y=Y(93+RR):GOSUB63:RR=RR+2:R$=R$+C$+F$ 47 Q$=LEFT$(Q$,C1-1)+RIGHT$(Q$,LEN(Q$)-C1-1):PRINT@309,LEN(Q$)/2;:IFQ$=""THEN50 48 IFD$=""THENDQ=0 49 PRINT@146,SPACE$(12);:GOTO10 50 CLS:PRINT"ROUND "RD:IFP$=""THENPRINT"You win!":GOSUB56 51 IFQ$=""THENPRINT"POCO wins":GOSUB57 52 IFDP=1ANDDQ=1THENPRINT"Stalemate":GOSUB56:GOSUB57 53 PRINTCHR$(27)"p""Your TOTAL"SP:PRINT"POCO's TOTAL"SQ:PRINTCHR$(27)"q":PRINT@250,"Another round (Y/N)? 54 I$=INKEY$:IFI$="Y"ORI$="y"THENGOSUB62:GOSUB58:GOSUB59:GOTO7ELSEIFI$="n"ORI$="N"THENMENU 55 GOTO54 56 FORI=1TOLEN(Q$):SQ=SQ+VAL(MID$(Q$,I,1)):NEXTI:RETURN 57 FORJ=1TOLEN(P$):SP=SP+VAL(MID$(P$,J,1)):NEXTJ:RETURN 58 D$="111213141516171819222324252627282933343536373839444546474849555657585966676869777879888999":RETURN 59 FORI=1TO5*VAL(RIGHT$(TIME$,2))+10:J=2*INT(45*RND(1)+1)-1:K=2*INT(45*RND(1)+1)-1:A$=MID$(D$,J,2):B$=MID$(D$,K,2) 60 MID$(D$,J,2)=B$:MID$(D$,K,2)=A$:NEXTI:R=2*INT(35*RND(1)+1)+1:P$=MID$(D$,R,20):L$=LEFT$(D$,R-1):R$=RIGHT$(D$,71-R):D$=L$+R$ 61 R=2*INT(25*RND(1)+1)+1:Q$=MID$(D$,R,20):L$=LEFT$(D$,R-1):R$=RIGHT$(D$,51-R):D$=L$+R$:RETURN 62 PRINT@240,"Shuffling the dominoes, please wait...";:RETURN 63 LINE(X,Y)-(X+6,Y+6),1,BF:IFB$="1"THENPRESET(X+3,Y+3) 64 IFB$="2"THENPRESET(X+1,Y+1):PRESET(X+5,Y+5) 65 IFB$="3"THENPRESET(X+1,Y+1):PRESET(X+3,Y+3):PRESET(X+5,Y+5) 66 IFB$="4"THENPRESET(X+1,Y+1):PRESET(X+5,Y+1):PRESET(X+1,Y+5):PRESET(X+5,Y+5) 67 IFB$="5"THENPRESET(X+1,Y+1):PRESET(X+5,Y+1):PRESET(X+1,Y+5):PRESET(X+5,Y+5):PRESET(X+3,Y+3) 68 IFB$="6"THENFORK=1TO5STEP2:PRESET(X+1,Y+K):PRESET(X+5,Y+K):NEXTK 69 IFB$="7"THENFORK=1TO5STEP2:PRESET(X+1,Y+K):PRESET(X+5,Y+K):NEXTK:PRESET(X+3,Y+3) 70 IFB$="8"THENFORK=1TO5STEP2:PRESET(X+1,Y+K):PRESET(X+5,Y+K):NEXTK:PRESET(X+3,Y+1):PRESET(X+3,Y+5) 71 IFB$="9"THENFORJ=1TO5STEP2:FORK=1TO5STEP2:PRESET(X+J,Y+K):NEXTK,J 72 RETURN 73 FORI=1TO9:N(I)=0:NEXTI:FORC=1TOLEN(Q$):A$=MID$(Q$,C,1):IFA$<>U$THEN77 74 C1=2*C-2*INT(C/2)-1:IFC1=CTHENF$=MID$(Q$,C+1,1)ELSEF$=MID$(Q$,C1,1) 75 F=VAL(F$):FORI=1TOLEN(Q$+R$):IFVAL(MID$(Q$+R$,I,1))=FTHENN(F)=N(F)+1 76 NEXTI 77 NEXTC:N=N(1):FORG=2TO9:IFN(G)>=NTHENN=N(G):F=G 78 NEXTG:RETURN