home *** CD-ROM | disk | FTP | other *** search
/ CP/M / CPM_CDROM.iso / simtel / cpmug / cpmug027.ark / DOTS.ASC < prev    next >
Encoding:
Text File  |  1984-04-29  |  7.6 KB  |  320 lines

  1. 100 REM  THIS PROGRAM WAS WRITTEN BY JAMES MCGILL
  2. 110 DIM C(1,20) 
  3. 120 LET C(1,5)=5
  4. 130 LET C(1,10)=5   
  5. 140 LET C(1,15)=5   
  6. 150 LETC(1,20)=5
  7. 160 DIM A(35,35)
  8. 170 FOR C=0 TO 4
  9. 180 FOR B=5*C+1 TO 5*C+4
  10. 190 LET A(B,B+1)=1  
  11. 200 IF C=4 GOTO 220
  12. 210 LET A(B,B+5)=1  
  13. 220 NEXT B   
  14. 230 NEXT C  
  15. 240 FOR K=1 TO4 
  16. 250 LET A(5*K,5*K+5)=1  
  17. 260 NEXT K  
  18. 270 LET R=0 
  19. 280 LET M=0 
  20. 290 LETN=0  
  21. 300  LET S=0
  22. 310 LET W=0 
  23. 320 LET X=0 
  24. 330 LET Y=0 
  25. 340 LETZ=0  
  26. 350 LET U=0 
  27. 360 LET V=0 
  28. 370 DIM B$(81)  
  29. 380 FOR A=1 TO 73 STEP 18   
  30. 390 FOR B=A TO (A+8) STEP 2 
  31. 400 LET B$(B)= "*"  
  32. 410 NEXT B  
  33. 420 NEXT A  
  34. 430 FOR A=2 TO 74 STEP 18   
  35. 440 FOR B=A TO (A+6) STEP 2 
  36. 450 LET B$(B)=" "   
  37. 460 NEXT B  
  38. 470 NEXT A  
  39. 480 FOR A=10 TO  64 STEP 18 
  40. 490 FOR B=A TO A+8  
  41. 500 LET B$(B)=" "   
  42. 510 NEXT B  
  43. 520 NEXT A  
  44. 530 PRINT"DO YOU KNOW HOW TO PLAY"; 
  45. 540 INPUT B$
  46. 550 IF B$="YES" GOTO 700   
  47. 560 PRINT"THIS IS THE GAME OF DOTS.WE WILL USE A 5 BY 5"
  48. 570 PRINT"ARRAY OF DOTS.YOU MAKE YOUR MOVE BY MAKING A" 
  49. 580 PRINT"HORIZONTAL OR VERTICAL LINE BETWEEN TWO"  
  50. 590 PRINT"CONSECUTIVE DOTS.EACH DOT HAS A PAIR OF"  
  51. 600 PRINT"COORDINATES.THE TOP LEFT DOT IS 1,1.THE LOWER"
  52. 610 PRINT"LEFT DOT IS 5,1.THE UPPER RIGHT DOT IS 1,5"
  53. 620 PRINT"AND THE LOWER RIGHT DOT IS 5,5.YOU MOVE BY"   
  54. 630 PRINT"TYPING IN THE COORDINATES OF THE TWO DOTS"
  55. 640 PRINT"TO BE CONNECTED.THEREFORE,YOU WILL ALWAYS"
  56. 650 PRINT "TYPE IN FOUR NUMBERS OF THE FORM W,X,Y,Z."   
  57. 660 PRINT"ALWAYS TYPE IN THE COORDINATES OF THE UPPER"  
  58. 670 PRINT"OR LEFTMOST DOT FIRST.THE GAME BOARD LOOKS"   
  59. 680 PRINT"LIKE THIS."   
  60. 690 GOSUB 3150  
  61. 700 PRINT "WHAT ARE YOUR VALUES OF W,X,Y,Z.";   
  62. 710 INPUT W,X,Y,Z   
  63. 720 GOSUB 1200  
  64. 730 LET N=N+S   
  65. 740 IF S=0 GOTO 830
  66. 750 IF R>=40 GOTO 1050 
  67. 760 LET S=0 
  68. 770 PRINT"YOU SCORED!!!"
  69. 780 PRINT"THE SCORE IS" 
  70. 790 PRINT"YOU...";N 
  71. 800 PRINT"ME....";M 
  72. 810 GOSUB 3150  
  73. 820 GOTO 970   
  74. 830 PRINT"YOU DID NOT SCORE.MY TURN"
  75. 840 GOSUB 2240  
  76. 850 LET M=M+S   
  77. 860 IF S=0 GOTO 990   
  78. 870 IF R>=40 GOTO 1050 
  79. 880 LET S=0 
  80. 890 PRINT"MY MOVE IS";W;X;Y;Z   
  81. 900 PRINT"I SCORED!!!"  
  82. 910 GOSUB 3150  
  83. 920 PRINT"THE SCORE IS" 
  84. 930 PRINT"YOU....";N
  85. 940 PRINT"ME.....";M
  86. 950 PRINT"I GET ANOTHER TURN"   
  87. 960 GOTO 840   
  88. 970 PRINT"YOU GET ANOTHER TURN" 
  89. 980 GOTO 710   
  90. 990 IF R>=40 GOTO 1050
  91. 1000 PRINT"MY MOVE IS";W;X;Y;Z  
  92. 1010 GOSUB 3150 
  93. 1020 PRINT"I DID NOT SCORE" 
  94. 1030 PRINT"YOUR TURN"   
  95. 1040 GOTO 710  
  96. 1050 PRINT"ALL MOVES HAVE BEEN MADE.THE GAME IS OVER"   
  97. 1060 PRINT"THE FINAL SCORE IS"  
  98. 1070 PRINT"YOU...";N
  99. 1080 PRINT"ME....";M
  100. 1090 IF M<N GOTO 1130  
  101. 1100 IF M=N GOTO 1150  
  102. 1110 PRINT"AS USUAL,I AM VICTORIOUS"
  103. 1120 GOTO  1160
  104. 1130 PRINT"DON'T ASK ME HOW, BUT YOU WON"   
  105. 1140 GOTO 1160 
  106. 1150 PRINT"WELL, IT LOOKS LIKE A TIE GAME"  
  107. 1160 PRINT"DO YOU WANT TO PLAY ANOTHER GAME";   
  108. 1170 INPUT A$   
  109. 1180 IF A$="YES" GOTO 700  
  110. 1190 STOP   
  111. 1200 IF W>Y GOTO 1320  
  112. 1210 IF X>Z GOTO 1320  
  113. 1220 IF W=Y GOTO 1260  
  114. 1230 IF X<>Z GOTO 1370 
  115. 1240 IF Y <>W+1 GOTO 1400  
  116. 1250 GOTO 1270 
  117. 1260 IF Z<>X+1 GOTO 1400   
  118. 1270 IF(ABS(W))/(INT(W))<>1 GOTO 1290  
  119. 1280 GOTO 1430 
  120. 1290 PRINT"ILLEGAL MOVE.PLEASE USE POSITIVE INTEGERS LESS THAN 6"   
  121. 1300 GOTO 1340 
  122. 1310 GOTO 1430 
  123. 1320 PRINT"ILLEGAL MOVE.PLEASE TYPE IN  THE COORDINATES OF "
  124. 1330 PRINT"THE UPPERMOST OR LEFTMOST DOT FIRST" 
  125. 1340 PRINT"TRY AGAIN. WHAT ARE YOUR VALUES FOR W,X,Y,Z";
  126. 1350 INPUT W,X,Y,Z  
  127. 1360 GOTO 1200 
  128. 1370 PRINT"ILLEGAL MOVE.ONLY HORIZONTAL AND VERTICAL MOVES" 
  129. 1380 PRINT"ARE ALLOWED" 
  130. 1390 GOTO 1340 
  131. 1400 PRINT"ILLEGAL MOVE.YOU MAY ONLY CONNECT CONSECUTIVE DOTS"  
  132. 1410 PRINT"NO SKIPPING OVER DOTS"   
  133. 1420 GOTO 1340 
  134. 1430 LET U=(W-1)*5+X
  135. 1440 LET V=(Y-1)*5+Z
  136. 1450 IF A(U,V) =1 GOTO 1480
  137. 1460 PRINT"ILLEGAL MOVE.THAT MOVE HAS ALREADY BEEN USED"
  138. 1470 GOTO 1340 
  139. 1480 PRINT"LEGAL MOVE"  
  140. 1490 GOSUB 1510 
  141. 1500 RETURN 
  142. 1510 IF X=Z GOTO 1730  
  143. 1520 IF V/5>1 GOTO 1570
  144. 1530 LET C(1,U)=C(1,U)+1
  145. 1540 IF C(1,U)<>4 GOTO 1560
  146. 1550 LET S=S+1  
  147. 1560 GOTO 1950 
  148. 1570 IF V/5<4.1 GOTO 1630  
  149. 1580 LET P=U-5  
  150. 1590 LET C(1,P)=C(1,P)+1
  151. 1600 IF C(1,P)<>4 GOTO1620 
  152. 1610 LET S=S+1  
  153. 1620 GOTO 1950 
  154. 1630 LET C(1,U)=C(1,U)+1
  155. 1640 LET P=U-5  
  156. 1650 LET C(1,P)=C(1,P)+1
  157. 1660 IF C(1,U)<> 4 GOTO 1700   
  158. 1670 IF C(1,P)<>4 GOTO 1710
  159. 1680 LET S=S+2  
  160. 1690 GOTO 1950 
  161. 1700 IF C(1,P)<>4 GOTO 1720
  162. 1710 LET S=S+1  
  163. 1720 GOTO 1950 
  164. 1730 LET Q=V-1  
  165. 1740 IF (INT(Q/5))*5<>Q GOTO 1790  
  166. 1750 LET C(1,U)=C(1,U)+1
  167. 1760 IF C(1,U)<>4 GOTO 1780
  168. 1770 LET S=S+1  
  169. 1780 GOTO 1990 
  170. 1790 IF (INT(V/5))*5<>V GOTO1850   
  171. 1800 LET T=U-1  
  172. 1810 LET C(1,T)=C(1,T)+1
  173. 1820 IF C(1,T)<>4 GOTO 1840
  174. 1830 LET S=S+1  
  175. 1840 GOTO 1990 
  176. 1850 LET T =U-1 
  177. 1860 LET C(1,U)=C(1,U)+1
  178. 1870 LET C(1,T)=C(1,T)+1
  179. 1880 IF C(1,U)<>4 GOTO 1920
  180. 1890 IF C(1,T)<> 4 GOTO 1930   
  181. 1900 LET S=S+2  
  182. 1910 GOTO 1990 
  183. 1920 IF C(1,T)<>4 GOTO 1990
  184. 1930 LET S=S+1  
  185. 1940 GOTO 1990 
  186. 1950 LET F=2*W-1
  187. 1960 LET G=2*X  
  188. 1970 GOSUB 3220 
  189. 1980 GOTO 2020 
  190. 1990 LET H= 2*W 
  191. 2000 LET J=2*X-1
  192. 2010 GOSUB 3250 
  193. 2020 LET A(U,V)=0   
  194. 2030 LET R=R+1  
  195. 2040 LET U=0
  196. 2050 LET V=0
  197. 2060 LET P=0
  198. 2070 LET Q=0
  199. 2080 LET T=0
  200. 2090 LET F=0
  201. 2100 LET G=0
  202. 2110 LET H=0
  203. 2120 LET J=0
  204. 2130 RETURN 
  205. 2140 IF A(24,25)=1 GOTO 2160   
  206. 2150 GOTO 2210 
  207. 2160 LET W=5
  208. 2170 LET X=4
  209. 2180 LET Y=5
  210. 2190 LET Z=5
  211. 2200 GOTO 3070 
  212. 2210 FOR I=19 TO 1 STEP -1  
  213. 2220 IF C(1,I)<4 GOTO 2670 
  214. 2230 NEXT I 
  215. 2240 FOR I=1 TO 20  
  216. 2250 IF C(1,I)=3 GOTO 2670 
  217. 2260 NEXT I 
  218. 2270 GOTO 2320 
  219. 2280 IF A(I+1,I+6)=1 GOTO 2690 
  220. 2290 GOTO 2460 
  221. 2300 IF A(I+5,I+6)=1 GOTO 2680 
  222. 2310 GOTO 2490 
  223. 2320 FOR I=1 TO 20  
  224. 2330 IF C(1,I)=0 GOTO 2400 
  225. 2340 GOTO 2490 
  226. 2350 IF I<2 GOTO 2400  
  227. 2360 IF C(1,I-1)=0 GOTO2390
  228. 2370 IF C(1,I-1)=1 GOTO 2390   
  229. 2380 GOTO 2400 
  230. 2390 IF A(I,I+5)=1 GOTO 2710   
  231. 2400 IF I<6 GOTO 2430  
  232. 2410 IF C(1,I-5)=0 GOTO2430
  233. 2420 IF C(1,I-5)<>1 GOTO 2440  
  234. 2430 IF A(I,I+1)=1 GOTO2700
  235. 2440 IF C(1,I+1)=0 GOTO 2280   
  236. 2450 IF C(1,I+1)=1 GOTO 2280   
  237. 2460 IF I>15 GOTO 2490 
  238. 2470 IF C(1,I+5)=0 GOTO 2300   
  239. 2480 IF C(1,I+5)=1 GOTO 2300   
  240. 2490 NEXT I 
  241. 2500 FOR I=1 TO 20  
  242. 2510 IF C(1,I)=1 GOTO 2530 
  243. 2520 GOTO 2630 
  244. 2530 IF I<2 GOTO 2590  
  245. 2540 IF C(1,I-1)=1 GOTO2560
  246. 2550 GOTO 2570 
  247. 2560 IF A(I,I+5)=1 GOTO 2710   
  248. 2570 IF I<6 GOTO 2590  
  249. 2580 IF C(1,I-5)<> 1 GOTO 2600 
  250. 2590 IF A(I,I+1)=1 GOTO2700
  251. 2600 IF C(1,I+1)=1 GOTO2280
  252. 2610 IF I>15 GOTO 2630 
  253. 2620 IF C(1,I+5)=1 GOTO2300
  254. 2630 NEXT I 
  255. 2640 IF A(1,2)=1 GOTO 2730 
  256. 2650 IF A(1,6)=1 GOTO 2760 
  257. 2660 IF A(2,7)=1 GOTO 2790 
  258. 2670 IF I=20  GOTO 2700
  259. 2680 IF A(I+5,I+6)=1 GOTO 2880 
  260. 2690 IF A(I+1,I+6)=1 GOTO 2920 
  261. 2700 IF A(I,I+1)=1 GOTO 2820   
  262. 2710 IF A(I,I+5)=1 GOTO 2960   
  263. 2720 GOTO 2140 
  264. 2730 LET W=1
  265. 2740 LET X=1
  266. 2750 GOTO 3020 
  267. 2760 LET W=1
  268. 2770 LET X=1
  269. 2780 GOTO 3050 
  270. 2790 LET W=1
  271. 2800 LET X=2
  272. 2810 GOTO 3050 
  273. 2820 LET W=INT((I+4)/5) 
  274. 2830 LET X=I-(5*(W-1))  
  275. 2840 GOTO 3020 
  276. 2850 LET W=INT((I+3)/5) 
  277. 2860 LET X=I-(5*(W-1))  
  278. 2870 GOTO 3020 
  279. 2880 LET I=I+5  
  280. 2890 LET W= INT((I+4)/5)
  281. 2900 LET X=I-(5*(W-1))  
  282. 2910 GOTO 3020 
  283. 2920 LET I=I+1  
  284. 2930 LET W=INT((I+4)/5) 
  285. 2940 LET X=I-(5*(W-1))  
  286. 2950 GOTO 3050 
  287. 2960 LET W=INT((I+4)/5)  
  288. 2970 LET X=I-(5*(W-1))  
  289. 2980 GOTO 3050 
  290. 2990 LET W=INT((I-1)/5) 
  291. 3000 LET X=I-(5*(W-1))  
  292. 3010 GOTO 3050 
  293. 3020 LET Y=W
  294. 3030 LET Z=X+1  
  295. 3040 GOTO 3070 
  296. 3050 LET Y=W+1  
  297. 3060 LET Z=X
  298. 3070 LET U=(W-1)*5+X
  299. 3080 LET V=(Y-1)*5+Z
  300. 3090 LETA=W 
  301. 3100 LET B=X
  302. 3110 LET C=Y
  303. 3120 LETD=Z 
  304. 3130 GOSUB 1510 
  305. 3140 RETURN 
  306. 3150 FOR I=1 TO 81 STEP 9   
  307. 3160 FOR J=I TO (I+8)   
  308. 3170 PRINT B$(J);   
  309. 3180 NEXT J 
  310. 3190 PRINT  
  311. 3200 NEXT I 
  312. 3210 RETURN 
  313. 3220 LET U1=(F-1)*9+G   
  314. 3230 LET B$(U1)="-" 
  315. 3240 GOTO 3270 
  316. 3250 LET U2=(H-1)*9+J   
  317. 3260 LET B$(U2)="I" 
  318. 3270 RETURN 
  319. 3280 END 
  320.