home *** CD-ROM | disk | FTP | other *** search
/ Programmer 7500 / MAX_PROGRAMMERS.iso / INFO / BASIC / FRIENDLY.ZIP / DOMINOES.002 < prev    next >
Encoding:
Text File  |  1988-10-13  |  16.7 KB  |  394 lines

  1. 10 '6/12/83
  2. 20 WIDTH 80:SCREEN 0,0,0:COLOR 3,0:KEY OFF:DEF SEG:DEFINT A-D:DEFSTR Z
  3. 30 YSCR=0:MYSCR=0:XLIN=1:XPOS=1:ON KEY(10) GOSUB 3310:ON ERROR GOTO 3910
  4. 40 GOSUB 3040:GOSUB 3460:GOSUB 2140
  5. 50 XLIN=1:XPOS=1:GOSUB 3360:FSTTME=1:NOSPR=1:PLAYED=1
  6. 60 XXFLG=0:PL1=1:GOSUB 2700:GOSUB 590:IF XXFLG THEN PL1=0:GOTO 90 ELSE GOSUB 160:GOSUB 280
  7. 70 IF INVD THEN GOSUB 2070:GOTO 60 ELSE NOPLAY=0
  8. 80 GOSUB 1260:GOSUB 1570:YSCR=YSCR+HOLDY:PL1=0:IF PLNO=0 THEN 3620
  9. 90 GOSUB 3830:FOR A=3 TO 6:LOCATE A,1:PRINT SPC(25):NEXT:LOCATE 3,1:PRINT "One Moment Please":PRINT "I am Thinking
  10. 100 GOSUB 770:IF INVD THEN GOSUB 1340:IF EMPT THEN GOSUB 3560:GOTO 60
  11. 110 IF INVD THEN CONO=CONO+1:MY$(CONO)=NEXTBN$:GOTO 100 ELSE NOPLAY=0
  12. 120 GOSUB 1300:GOSUB 1570:MYSCR=MYSCR+HOLDY:IF CONO=0 THEN 3620
  13. 130 COLOR 4,0:LOCATE 1,66:PRINT "Dominoes Played":COLOR 3,0
  14. 140 FOR A=1 TO 5:LOCATE A,1:PRINT SPC(25):NEXT
  15. 150 LOCATE 4,1:FOR A=1 TO CONO:PRINT "▄▄":NEXT:GOSUB 3830:GOTO 60
  16. 160 DLN=15:DOM=40:DD=2:IF FSTTME THEN RETURN
  17. 170 DEF SEG:POKE 106,0:IF INKEY$<>"" THEN 170
  18. 180 LOCATE DLN,DOM,0:SAVE1=SCREEN(DLN,DOM):COLOR 31:PRINT CHR$(1);:COLOR 6
  19. 190 Z=INKEY$:IF Z="" THEN 190
  20. 200 IF LEN(Z)>1 THEN Z1=RIGHT$(Z,1) ELSE Z1=""
  21. 210 IF Z="8" OR Z1="H" THEN DLN=5 :DOM=40:DD=0
  22. 220 IF Z="6" OR Z1="M" THEN DLN=10:DOM=55:DD=1
  23. 230 IF Z="2" OR Z1="P" THEN DLN=15:DOM=40:DD=2
  24. 240 IF Z="4" OR Z1="K" THEN DLN=10:DOM=25:DD=3
  25. 250 LOCATE CSRLIN,POS(0)-1:PRINT CHR$(SAVE1);
  26. 260 IF Z<>CHR$(13) THEN 180
  27. 270 LOCATE CSRLIN,POS(0)-1:PRINT CHR$(SAVE1);:RETURN
  28. 280 INVD=0:OS=0:IS=0
  29. 290 IF FSTTME THEN 580
  30. 300 IF TBL$(DD)="  " THEN 380
  31. 310 ZL=LEFT$(TBL$(DD),1):ZLP=LEFT$(YOU$(PLA),1):ZRP=RIGHT$(YOU$(PLA),1)
  32. 320 IF ZL=ZLP THEN IS=1:GOTO 350
  33. 330 IF ZL=ZRP THEN OS=1:GOTO 350
  34. 340 INVD=1:RETURN
  35. 350 INVD=0
  36. 360 IF OS THEN TBL$(DD)=ZLP+ZRP:GOTO 490
  37. 370 IF IS THEN TBL$(DD)=ZRP+ZLP:GOTO 490
  38. 380 ZL=LEFT$(TBL$(4),1):ZR=RIGHT$(TBL$(4),1)
  39. 390 ZLP=LEFT$(YOU$(PLA),1):ZRP=RIGHT$(YOU$(PLA),1)
  40. 400 IF ZL=ZR THEN 460
  41. 410 IF DD=0 THEN IF ZL=ZLP THEN IS=1:GOTO 510
  42. 420 IF DD=0 THEN IF ZL=ZRP THEN OS=1:GOTO 510
  43. 430 IF DD=2 THEN IF ZR=ZLP THEN IS=1:GOTO 510
  44. 440 IF DD=2 THEN IF ZR=ZRP THEN OS=1:GOTO 510
  45. 450 GOTO 340
  46. 460 IF ZL=ZLP THEN IS=1:GOTO 510
  47. 470 IF ZL=ZRP THEN OS=1:GOTO 510
  48. 480 GOTO 340
  49. 490 CUR$=TBL$(DD)
  50. 500 GOSUB 2350:PLNO=PLNO-1:RETURN
  51. 510 IF LEFT$(TBL$(4),1)<>RIGHT$(TBL$(4),1) THEN 560
  52. 520 IF TBL$(1)="  " AND TBL$(2)="  " AND DD=1 THEN DD=2:GOTO 560
  53. 530 IF TBL$(3)="  " AND TBL$(2)="  " AND DD=3 THEN DD=2:GOTO 560
  54. 540 IF TBL$(1)="  " AND TBL$(0)="  " AND DD=1 THEN DD=0:GOTO 560
  55. 550 IF TBL$(3)="  " AND TBL$(0)="  " AND DD=3 THEN DD=0
  56. 560 IF OS THEN TBL$(DD)=YOU$(PLA):GOTO 490
  57. 570 IF IS THEN TBL$(DD)=ZRP+ZLP:GOTO 490
  58. 580 TBL$(4)=YOU$(PLA):CUR$=TBL$(4):GOTO 500
  59. 590 GOSUB 1780:IF XXFLG THEN RETURN
  60. 600 PLA=FIX(PLNO/2+.5):DLN=19
  61. 610 IF PLNO AND 1 THEN DOM=40 ELSE DOM=35
  62. 620 IF PLNO>8 THEN DOM=35:PLA=4
  63. 630 DEF SEG:POKE 106,0:IF INKEY$<>"" THEN 630
  64. 640 LOCATE DLN,DOM,0:SAVE1=SCREEN(DLN,DOM):COLOR 26:PRINT CHR$(1);:COLOR 14
  65. 650 Z=INKEY$:IF Z="" THEN 650
  66. 660 IF LEN(Z)>1 THEN Z1=RIGHT$(Z,1) ELSE Z1=""
  67. 670 IF Z="4" OR Z1="K" THEN DOM=DOM-10:PLA=PLA-1:GOTO 710
  68. 680 IF Z="6" OR Z1="M" THEN DOM=DOM+10:PLA=PLA+1:GOTO 710
  69. 690 IF Z<>CHR$(13) THEN 650
  70. 700 LOCATE CSRLIN,POS(0)-1:PRINT CHR$(SAVE1);:RETURN
  71. 710 IF PLA=0 THEN PLA=1:DOM=DOM+10:GOTO 760
  72. 720 IF PLA>PLNO THEN PLA=PLNO:DOM=DOM-10:GOTO 760
  73. 730 IF ONEROW GOTO 760
  74. 740 IF DOM>80 THEN DOM=DOM-80:DLN=DLN+3:GOTO 760
  75. 750 IF DOM<0 THEN DOM=DOM+80:DLN=DLN-3:GOTO 760
  76. 760 LOCATE CSRLIN,POS(0)-1:PRINT CHR$(SAVE1);:GOTO 640
  77. 770 IS=0:OS=0:INVD=0:PLFG=0:HOLD=0:HH1=0:HH2=0
  78. 780 FOR DD=3 TO 0 STEP-1
  79. 790   FOR PLA=1 TO CONO
  80. 800    ZLM=LEFT$(TBL$(4),1):ZRM=RIGHT$(TBL$(4),1)
  81. 810    ZL=LEFT$(TBL$(DD),1):ZLP=LEFT$(MY$(PLA),1):ZRP=RIGHT$(MY$(PLA),1)
  82. 820    IF TBL$(DD)="  " THEN 850
  83. 830    IF ZL=ZRP THEN OS=1:GOSUB 1170:GOTO 980
  84. 840    IF ZL=ZLP THEN IS=1:GOSUB 1170:GOTO 980 ELSE 980
  85. 850    IF ZLM<>ZRM THEN 940
  86. 860    IF ZLM=ZRP AND DD=0 THEN OS=1:GOSUB 1170:GOTO 980
  87. 870    IF ZLM=ZLP AND DD=0 THEN IS=1:GOSUB 1170:GOTO 980
  88. 880    IF ZLM=ZRP AND DD=2 THEN OS=1:GOSUB 1170:GOTO 980
  89. 890    IF ZLM=ZLP AND DD=2 THEN IS=1:GOSUB 1170:GOTO 980
  90. 900    IF ZLM=ZLP AND DD=1 THEN IS=1:GOSUB 1170:GOTO 980
  91. 910    IF ZLM=ZRP AND DD=1 THEN OS=1:GOSUB 1170:GOTO 980
  92. 920    IF ZLM=ZLP AND DD=3 THEN IS=1:GOSUB 1170:GOTO 980
  93. 930    IF ZLM=ZRP AND DD=3 THEN OS=1:GOSUB 1170:GOTO 980 ELSE 980
  94. 940    IF ZLM=ZLP AND DD=0 THEN IS=1:GOSUB 1170:GOTO 980
  95. 950    IF ZLM=ZRP AND DD=0 THEN OS=1:GOSUB 1170:GOTO 980
  96. 960    IF ZRM=ZLP AND DD=2 THEN IS=1:GOSUB 1170:GOTO 980
  97. 970    IF ZRM=ZRP AND DD=2 THEN OS=1:GOSUB 1170:GOTO 980
  98. 980   NEXT PLA
  99. 990 NEXT DD
  100. 1000 IF LEFT$(TBL$(4),1)<>RIGHT$(TBL$(4),1) THEN 1030
  101. 1010 IF TBL$(1)="  " AND TBL$(2)="  " AND HH1 THEN HH2=2:GOTO 1030
  102. 1020 IF TBL$(1)="  " AND TBL$(2)="  " AND PLFG THEN DRH=2:GOTO 1030
  103. 1030 IF HH1 THEN PLA=HH1:DRH=HH2:GOTO 1060
  104. 1040 IF PLFG THEN PLA=PLFG:GOTO 1060
  105. 1050 INVD=1:RETURN
  106. 1060 ZLP1=LEFT$(MY$(PLA),1):ZRP1=RIGHT$(MY$(PLA),1)
  107. 1070 IF TBL$(DRH)<>"  " THEN 1110
  108. 1080 ZL1=LEFT$(TBL$(4),1):ZR1=RIGHT$(TBL$(4),1)
  109. 1090 IF ZL1=ZR1 THEN 1120
  110. 1100 IF DRH=2 THEN SWAP ZL1,ZR1:GOTO 1120 ELSE 1120
  111. 1110 ZL1=LEFT$(TBL$(DRH),1):ZR1=RIGHT$(TBL$(DRH),1)
  112. 1120 IF ZL1=ZLP1 THEN IS=1:OS=0:GOTO 1140
  113. 1130 IF ZL1=ZRP1 THEN OS=1:IS=0:GOTO 1140
  114. 1140 IF IS THEN TBL$(DRH)=ZRP1+ZLP1:CUR$=TBL$(DRH):GOTO 1160
  115. 1150 IF OS THEN TBL$(DRH)=ZLP1+ZRP1:CUR$=TBL$(DRH):GOTO 1160
  116. 1160 GOSUB 2350:LOCATE 1,1:CONO=CONO-1:RETURN
  117. 1170 PLFG=PLA:DRH=DD
  118. 1180 FOR A=0 TO 4:SAV$(A)=TBL$(A):NEXT
  119. 1190 ZLP2=LEFT$(MY$(PLA),1):ZRP2=RIGHT$(MY$(PLA),1)
  120. 1200 IF IS THEN TBL$(DD)=ZRP2+ZLP2
  121. 1210 IF OS THEN TBL$(DD)=ZLP2+ZRP2
  122. 1220 GOSUB 1570
  123. 1230 IF HOLDY AND HOLD<=HOLDY THEN HOLD=HOLDY ELSE 1250
  124. 1240 HH1=PLA:HH2=DD
  125. 1250 FOR A=0 TO 4:TBL$(A)=SAV$(A):NEXT:RETURN
  126. 1260 FOR A=1 TO PLNO
  127. 1270   IF A<PLA THEN 1290
  128. 1280   YOU$(A)=YOU$(A+1)
  129. 1290 NEXT:RETURN
  130. 1300 FOR A=1 TO CONO
  131. 1310   IF A<PLA THEN 1330
  132. 1320   MY$(A)=MY$(A+1)
  133. 1330 NEXT:RETURN
  134. 1340 IF BNPTR=29 THEN EMPT=1:RETURN
  135. 1350 NEXTBN$=BONE$(BNPTR):BNPTR=BNPTR+1:RETURN
  136. 1360 IF NOSPR THEN 1370 ELSE RETURN
  137. 1370 IF LEFT$(TBL$(4),1)=RIGHT$(TBL$(4),1) THEN 1560
  138. 1380 FOR A=0 TO 3
  139. 1390   ZL=LEFT$(TBL$(A),1):ZR=RIGHT$(TBL$(A),1)
  140. 1400   IF TBL$(A)="  " THEN 1420
  141. 1410   IF ZL=ZR THEN 1430
  142. 1420 NEXT:RETURN
  143. 1430 IF A<>0 THEN 1470
  144. 1440 IF TBL$(2)<>"  " THEN TBL$(4)=TBL$(0):TBL$(0)="  ":GOTO 1570
  145. 1450 SWAP TBL$(2),TBL$(4):SWAP TBL$(0),TBL$(4)
  146. 1460 TBL$(2)=RIGHT$(TBL$(2),1)+LEFT$(TBL$(2),1):GOTO 1570
  147. 1470 IF A<>1 THEN 1500
  148. 1480 IF TBL$(3)<>"  " THEN TBL$(4)=TBL$(1):TBL$(1)="  ":GOTO 1570
  149. 1490 SWAP TBL$(3),TBL$(4):SWAP TBL$(1),TBL$(4):GOTO 1570
  150. 1500 IF A<>2 THEN 1530
  151. 1510 IF TBL$(0)<>"  " THEN TBL$(4)=TBL$(2):TBL$(2)="  ":GOTO 1570
  152. 1520 SWAP TBL$(0),TBL$(4):SWAP TBL$(2),TBL$(4):GOTO 1570
  153. 1530 IF A<>3 THEN RETURN
  154. 1540 IF TBL$(1)="  " THEN SWAP TBL$(1),TBL$(4):SWAP TBL$(3),TBL$(4):GOTO 1570
  155. 1550 TBL$(4)=TBL$(3):TBL$(3)="  "
  156. 1560 NOSPR=0:RETURN
  157. 1570 HOLDY=0:FLAG1=0:PTOT=0
  158. 1580  PLM=VAL(LEFT$(TBL$(4),1)):PRM=VAL(RIGHT$(TBL$(4),1))
  159. 1590  IF FSTTME THEN 1760
  160. 1600 FOR A=0 TO 3
  161. 1610  PL=VAL(LEFT$(TBL$(A),1)):PR=VAL(RIGHT$(TBL$(A),1))
  162. 1620  IF TBL$(A)="  " THEN 1650
  163. 1630  PTOT=PTOT+PL:IF PL=PR THEN PTOT=PTOT+PR
  164. 1640  GOTO 1730
  165. 1650  IF PLM<>PRM THEN 1710
  166. 1660  IF FLAG1 THEN 1730
  167. 1670  IF A=0 OR A=2 THEN PTOT=PTOT+PRM+PLM:GOTO 1700
  168. 1680  IF TBL$(1)="  " THEN PTOT=PTOT+PLM
  169. 1690  IF TBL$(3)="  " THEN PTOT=PTOT+PLM
  170. 1700  FLAG1=1:GOTO 1730
  171. 1710  IF A=0 THEN PTOT=PTOT+PLM:GOTO 1730
  172. 1720  IF A=2 THEN PTOT=PTOT+PRM:GOTO 1730
  173. 1730 NEXT A
  174. 1740 IF PTOT/5=PTOT\5 THEN 1750 ELSE RETURN
  175. 1750 HOLDY=PTOT:RETURN
  176. 1760 A=PLM+PRM:IF A/5=A\5 THEN HOLDY=A ELSE HOLDY=0
  177. 1770 FSTTME=0:RETURN
  178. 1780 IF FSTTME THEN RETURN
  179. 1790 C=0
  180. 1800 FOR A=0 TO 3
  181. 1810   IF TBL$(A)="  " THEN 1870 ELSE C=C+1
  182. 1820   ZL=LEFT$(TBL$(A),1)
  183. 1830   FOR B=1 TO PLNO
  184. 1840     ZLP=LEFT$(YOU$(B),1):ZRP=RIGHT$(YOU$(B),1)
  185. 1850     IF ZL=ZLP OR ZL=ZRP THEN 2060
  186. 1860   NEXT B
  187. 1870 NEXT A
  188. 1880 IF C<4 THEN 1920
  189. 1890 GOSUB 1340:IF EMPT THEN XXFLG=1:GOSUB 3560:RETURN
  190. 1900 PLNO=PLNO+1:YOU$(PLNO)=NEXTBN$
  191. 1910 GOSUB 2700:GOTO 1790
  192. 1920 ZL=LEFT$(TBL$(4),1):ZR=RIGHT$(TBL$(4),1)
  193. 1930 IF ZL=ZR THEN 1990
  194. 1940 FOR A=1 TO PLNO
  195. 1950   ZLP=LEFT$(YOU$(A),1):ZRP=RIGHT$(YOU$(A),1)
  196. 1960   IF TBL$(0)="  " AND (ZL=ZLP OR ZL=ZRP) THEN 2060
  197. 1970   IF TBL$(2)="  " AND (ZR=ZLP OR ZR=ZRP) THEN 2060
  198. 1980 NEXT A:GOTO 1890
  199. 1990 FOR B=0 TO 3
  200. 2000   IF TBL$(B)<>"  " THEN 2050
  201. 2010   FOR A=1 TO PLNO
  202. 2020     ZLP=LEFT$(YOU$(A),1):ZRP=RIGHT$(YOU$(A),1)
  203. 2030     IF ZL=ZLP OR ZL=ZRP THEN 2060
  204. 2040   NEXT A
  205. 2050 NEXT B:GOTO 1890
  206. 2060 RETURN
  207. 2070 LOCATE 25,1:PRINT SPC(79);:COLOR 31,0:LOCATE 25,25
  208. 2080 PRINT "Invalid Move. Please Try Again.";:COLOR 3,0:INVD=0:GOTO 2090
  209. 2090 DEF SEG:POKE 106,0:IF INKEY$<>"" THEN 2090
  210. 2100 FOR XX=1 TO 1000
  211. 2110  Z=INKEY$:IF Z<>"" THEN 2130
  212. 2120 NEXT
  213. 2130 LOCATE 25,1:PRINT SPC(79);:RETURN
  214. 2140 FOR A=0 TO 6:READ DT$(A):NEXT
  215. 2150 DATA "   "," ∙ ",". ∙",".∙.",": :",":∙:",":::"
  216. 2160 RANDOMIZE(VAL(RIGHT$(TIME$,2)))
  217. 2170 DIM PLD$(28),BONE$(28),MY$(25),YOU$(25):C=0:B=-1
  218. 2180 FOR A=1 TO 28
  219. 2190   B=B+1
  220. 2200       BONE$(A)=RIGHT$(STR$(B),1)+RIGHT$(STR$(C),1)
  221. 2210   IF B=6 THEN B=C:C=C+1
  222. 2220 NEXT
  223. 2230 FOR A=1 TO 28
  224. 2240   B=FIX(RND*28)+1:C=FIX(RND*28)+1:IF B=C THEN 2240
  225. 2250   SWAP BONE$(B),BONE$(C)
  226. 2260 NEXT
  227. 2270 FOR A=0 TO 4:TBL$(A)="  ":NEXT
  228. 2280 B=0
  229. 2290 FOR A=1 TO 13 STEP 2
  230. 2300   B=B+1
  231. 2310   YOU$(B)=BONE$(A)
  232. 2320   MY$(B)=BONE$(A+1)
  233. 2330 NEXT:PLNO=7:CONO=7:BNPTR=15
  234. 2340 RETURN
  235. 2350 CLS:GOSUB 1360:GOSUB 3360:CUR$=LEFT$(CUR$,1)+":"+RIGHT$(CUR$,1)
  236. 2360 PLD$(PLAYED)=CUR$
  237. 2370 PLAYED=PLAYED+1
  238. 2380 FOR SLOC=0 TO 3
  239. 2390   IF TBL$(SLOC)="  " THEN 2420
  240. 2400   ZL=LEFT$(TBL$(SLOC),1):ZR=RIGHT$(TBL$(SLOC),1)
  241. 2410   IF ZL<>ZR THEN GOSUB 2520 ELSE GOSUB 2460
  242. 2420 NEXT
  243. 2430 ZL=LEFT$(TBL$(4),1):ZR=RIGHT$(TBL$(4),1)
  244. 2440 IF ZL=ZR THEN GOSUB 2510 ELSE GOSUB 2570
  245. 2450 RETURN
  246. 2460 ON SLOC+1 GOSUB 2470,2490,2500,2480,2510:RETURN
  247. 2470 SLN=6:HS=36:LFT=VAL(ZL):RHT=VAL(ZR):GOSUB 2650:RETURN
  248. 2480 SLN=8:HS=28:TOP=VAL(ZL):BOT=VAL(ZR):GOSUB 2580:RETURN
  249. 2490 SLN=8:HS=50:TOP=VAL(ZL):BOT=VAL(ZR):GOSUB 2580:RETURN
  250. 2500 SLN=12:HS=36:LFT=VAL(ZL):RHT=VAL(ZR):GOSUB 2650:RETURN
  251. 2510 SLN=9:HS=36:LFT=VAL(ZL):RHT=VAL(ZR):GOSUB 2650:RETURN
  252. 2520 ON SLOC+1 GOSUB 2530,2550,2560,2540,2570:RETURN
  253. 2530 SLN=3:HS=38:TOP=VAL(ZR):BOT=VAL(ZL):GOSUB 2580:RETURN
  254. 2540 SLN=9:HS=26:LFT=VAL(ZR):RHT=VAL(ZL):GOSUB 2650:RETURN
  255. 2550 SLN=9:HS=46:LFT=VAL(ZL):RHT=VAL(ZR):GOSUB 2650:RETURN
  256. 2560 SLN=13:HS=38:TOP=VAL(ZL):BOT=VAL(ZR):GOSUB 2580:RETURN
  257. 2570 SLN=8:HS=38:TOP=VAL(ZR):BOT=VAL(ZL):GOSUB 2580:RETURN
  258. 2580 COLOR 6,0:LOCATE SLN+0,HS:PRINT "┌───┐"
  259. 2590 LOCATE SLN+1,HS:PRINT "│   │"
  260. 2600 LOCATE SLN+2,HS:PRINT "├───┤"
  261. 2610 LOCATE SLN+3,HS:PRINT "│   │"
  262. 2620 LOCATE SLN+4,HS:PRINT "└───┘":COLOR 15,0
  263. 2630 LOCATE SLN+1,HS+1:PRINT DT$(BOT)
  264. 2640 LOCATE SLN+3,HS+1:PRINT DT$(TOP):COLOR 7,0:RETURN
  265. 2650 COLOR 6,0:LOCATE SLN+0,HS:PRINT "┌───┬───┐"
  266. 2660 LOCATE SLN+1,HS:PRINT "│   │   │"
  267. 2670 LOCATE SLN+2,HS:PRINT "└───┴───┘":COLOR 15,0
  268. 2680 LOCATE SLN+1,HS+1:PRINT DT$(RHT)
  269. 2690 LOCATE SLN+1,HS+5:PRINT DT$(LFT):COLOR 7,0:RETURN
  270. 2700 ONEROW=1
  271. 2710 LOCATE ,,0
  272. 2720 SLN=19
  273. 2730 HS=(80-(10*PLNO))\2+1
  274. 2740 IF HS<1 THEN HS=1
  275. 2750 FOR I=SLN TO 6+SLN-1
  276. 2760   LOCATE I,1:PRINT SPC(79);
  277. 2770 NEXT I
  278. 2780 FOR A=1 TO PLNO:COLOR 14,0
  279. 2790   LOCATE SLN,HS:  PRINT "┌───┬───┐";
  280. 2800   LOCATE SLN+1,HS:PRINT "│   │   │";
  281. 2810   LOCATE SLN+2,HS:PRINT "└───┴───┘";
  282. 2820   HS=HS+10
  283. 2830   IF HS>80 THEN SLN=SLN+3:HS=1:ONEROW=0
  284. 2840 NEXT
  285. 2850 LOCATE 24,1,O:PRINT "Use Cursor Arrows To Choose And Position Domino    Strike Enter Key When Ready";
  286. 2860 SLN=19
  287. 2870 HS=((80-(10*PLNO))\2)+2
  288. 2880 IF HS<1 THEN HS=2
  289. 2890 FOR A=1 TO PLNO:COLOR 15,0
  290. 2900 ON VAL(LEFT$(YOU$(A),1))+1 GOSUB 2970,2980,2990,3000,3010,3020,3030
  291. 2910   HS=HS+4
  292. 2920 ON VAL(RIGHT$(YOU$(A),1))+1 GOSUB 2970,2980,2990,3000,3010,3020,3030
  293. 2930   HS=HS+6
  294. 2940   IF HS>80 THEN SLN=SLN+3:HS=2
  295. 2950 NEXT
  296. 2960 COLOR 7,0:RETURN
  297. 2970 LOCATE SLN+1,HS:PRINT DT$(0):RETURN
  298. 2980 LOCATE SLN+1,HS:PRINT DT$(1):RETURN
  299. 2990 LOCATE SLN+1,HS:PRINT DT$(2):RETURN
  300. 3000 LOCATE SLN+1,HS:PRINT DT$(3):RETURN
  301. 3010 LOCATE SLN+1,HS:PRINT DT$(4):RETURN
  302. 3020 LOCATE SLN+1,HS:PRINT DT$(5):RETURN
  303. 3030 LOCATE SLN+1,HS:PRINT DT$(6):RETURN
  304. 3040 CLS:COLOR 6,0:GOSUB 3440
  305. 3050 LOCATE 1,1:PRINT STRING$(80,219)
  306. 3060 FOR A=2 TO 22:LOCATE A,1:PRINT "█":LOCATE A,80:PRINT "█":NEXT
  307. 3070 LOCATE 23,1:PRINT STRING$(80,219);
  308. 3080 LOCATE 3,33:COLOR 11,0:PRINT "D O M I N O E S
  309. 3090 COLOR 15,0:LOCATE 8,25:PRINT "Would You Like instructions? <Y/N>"
  310. 3100 GOSUB 3390:IF Z="N" THEN CLS:RETURN ELSE IF Z<>"Y" THEN 3100
  311. 3110 COLOR 3,0:LOCATE 4,19:PRINT  "This is single spinner Dominoes,  that is you
  312. 3120 LOCATE 5,19:PRINT    "can only play in any direction off  the first
  313. 3130 LOCATE 6,19:PRINT    "spinner or double domino  (1:1,2:2,3:3, etc).
  314. 3140 LOCATE 7,19:PRINT    "The object of the game  is to score points in
  315. 3150 LOCATE 8,19:PRINT    "multiples of  `5'  by adding the total of all
  316. 3160 LOCATE 9,19:PRINT "open ends of the playing board. You can score
  317. 3170 LOCATE 10,19:PRINT "points  only  if the game board total is five
  318. 3180 LOCATE 11,19:PRINT "or a multiple of five. You may start each new
  319. 3190 LOCATE 12,19:PRINT "hand  by  playing  the  first domino.  If the
  320. 3200 LOCATE 13,19:PRINT "total of both ends equals  five  or  ten, you
  321. 3210 LOCATE 14,19:PRINT "score that number of points.  From that point
  322. 3220 LOCATE 15,19:PRINT "on,  you and the computer build onto the ends
  323. 3230 LOCATE 16,19:PRINT "trying to  score  points.   If no domino  end
  324. 3240 LOCATE 17,19:PRINT "in your hand matches an open end on the board,
  325. 3250 LOCATE 18,19:PRINT "the computer will draw from the boneyard.  If
  326. 3260 LOCATE 19,19:PRINT "the boneyard is  empty,  the other player may
  327. 3270 LOCATE 20,19:PRINT "play again.  Use the Cursor Arrows and  Enter
  328. 3280 LOCATE 21,19:PRINT "Key to select and play your dominoes.
  329. 3290 LOCATE 25,25:COLOR 15,0:PRINT "Strike Any Key To Continue";
  330. 3300 Z=INKEY$:IF Z="" THEN 3300 ELSE CLS:RETURN
  331. 3310 KEY(10) OFF:XLIN=CSRLIN:XPOS=POS(0):LOCATE 25,1:PRINT SPC(79);
  332. 3320 LOCATE 25,21:PRINT "Do You Wish To Leave This Game? <Y/N>";
  333. 3330 Z=INKEY$:IF Z="" THEN 3330
  334. 3340 IF Z="y" OR Z="Y" THEN 3910
  335. 3350 IF Z<>"n" AND Z<>"N" THEN 3330
  336. 3360 LOCATE 25,1:PRINT SPC(79);:LOCATE 25,24:COLOR 0,7
  337. 3370 PRINT " Strike <F10> To Leave This Game ";:COLOR 7,0:LOCATE XLIN,XPOS,0
  338. 3380 KEY(10) ON:RETURN
  339. 3390 DEF SEG:POKE 106,0:IF INKEY$<>"" THEN 3390
  340. 3400 Z=INKEY$:IF Z="" THEN 3400
  341. 3410 IF Z<"a" OR Z>"z" THEN 3430
  342. 3420 Z=CHR$(ASC(Z)-32)
  343. 3430 RETURN
  344. 3440 '
  345. 3450 RETURN
  346. 3460 CLS
  347. 3470 LOCATE 6,30:COLOR 0,7:PRINT " A ";:COLOR 3,0:PRINT" Play To 100 Points"
  348. 3480 LOCATE 8,30:COLOR 0,7:PRINT " B ";:COLOR 3,0:PRINT" Play To 250 Points"
  349. 3490 LOCATE 10,30:COLOR 0,7:PRINT " C ";:COLOR 3,0:PRINT" Play To 500 Points"
  350. 3500 COLOR 3,0:LOCATE 4,25:PRINT"Please Choose A Game <A> <B> or <C>"
  351. 3510 Z=INKEY$:IF Z="" THEN 3510
  352. 3520 IF Z="A" OR Z="a" THEN GAME=100:GOTO 3550
  353. 3530 IF Z="B" OR Z="b" THEN GAME=250:GOTO 3550
  354. 3540 IF Z="C" OR Z="c" THEN GAME=500:GOTO 3550 ELSE 3510
  355. 3550 CLS:RETURN
  356. 3560 NOPLAY=NOPLAY+1
  357. 3570 LOCATE 4,1:COLOR 15,0
  358. 3580 PRINT "The Bone Yard Is Empty":IF PL1 THEN 3600
  359. 3590 PRINT "And I Have No Play":PRINT "I Lose My Turn":GOTO 3610
  360. 3600 PRINT "Sorry, You Have No Play":PRINT "So You Lose Your Turn":GOTO 3610
  361. 3610 IF NOPLAY=2 THEN 3620 ELSE FOR AI=1 TO 3500:NEXT:RETURN
  362. 3620 FOR A=1 TO 3000:NEXT:TOT=0:IF PLNO THEN IF CONO THEN 3630 ELSE 3670
  363. 3630 FOR A=1 TO CONO
  364. 3640  TOT=TOT+VAL(LEFT$(MY$(A),1))+VAL(RIGHT$(MY$(A),1))
  365. 3650 NEXT:REMA=TOT MOD 5:TOT=TOT\5:TOT=TOT*5:IF REMA>2 THEN TOT=TOT+5
  366. 3660 YSCR=YSCR+TOT:IF PLNO THEN 3670 ELSE 3710
  367. 3670 TOT=0:FOR A=1 TO PLNO
  368. 3680  TOT=TOT+VAL(LEFT$(YOU$(A),1))+VAL(RIGHT$(YOU$(A),1))
  369. 3690 NEXT:REMA=TOT MOD 5:TOT=TOT\5:TOT=TOT*5:IF REMA>2 THEN TOT=TOT+5
  370. 3700 MYSCR=MYSCR+TOT
  371. 3710 CLS:LOCATE 4,29:PRINT "Your Total Score Is"YSCR
  372. 3720 LOCATE 5,30:PRINT "My Total Score Is"MYSCR:IF MYSCR>=GAME AND MYSCR=YSCR THEN 3800
  373. 3730 IF YSCR>=GAME THEN IF YSCR>MYSCR THEN 3780 ELSE 3790
  374. 3740 IF MYSCR>=GAME THEN IF YSCR<MYSCR THEN 3790 ELSE 3780
  375. 3750 LOCATE 7,28:PRINT "One Moment Please, While
  376. 3760 LOCATE 8,28:PRINT "I Reshuffle The BoneYard
  377. 3770 EMPT=0:C=0:B=-1:GOSUB 2180:FOR A=1 TO 7000:NEXT:CLS:GOTO 50
  378. 3780 LOCATE 6,36:PRINT "You Win":GOTO 3810
  379. 3790 LOCATE 6,37:PRINT "I Win":GOTO 3810
  380. 3800 LOCATE 6,31:PRINT "The Game Is A Tie"
  381. 3810 LOCATE 10,23:PRINT "Would You Like To Play Again? <Y/N>"
  382. 3820 GOSUB 3390:IF Z="Y" THEN RUN ELSE IF Z="N" THEN 3910 ELSE 3820
  383. 3830 COLOR 4,0:LOCATE 1,66:PRINT "Dominoes Played":COLOR 3,0
  384. 3840 FOR A=0 TO PLAYED-1
  385. 3850   IF A<17 THEN LOCATE A+2,71:PRINT PLD$(A);
  386. 3860   IF A>16 THEN LOCATE A-14,76:PRINT PLD$(A);
  387. 3870 NEXT
  388. 3880 LOCATE 2,1:PRINT"Your Score Is"YSCR;:COLOR 7,0
  389. 3890 COLOR 2,0:LOCATE 1,1:PRINT"My Score Is"MYSCR;
  390. 3900 RETURN
  391. 3910 CLEAR:ON ERROR GOTO 3920:RUN"MENU2.002"
  392. 3920 CLEAR:ON ERROR GOTO 3930:RUN"MENU1.001"
  393. 3930 RUN"MENU3.003"
  394.