home *** CD-ROM | disk | FTP | other *** search
/ ftp.barnyard.co.uk / 2015.02.ftp.barnyard.co.uk.tar / ftp.barnyard.co.uk / cpm / walnut-creek-CDROM / SIMTEL / CPMUG / CPMUG054.ARK / TICTAC.BAS < prev    next >
BASIC Source File  |  1984-04-29  |  5KB  |  251 lines

  1. 90 RANDOMIZE
  2. 100 PRINT "YOUR OBJECTIVE IS TO PLACE 5 MARKS"
  3. 110 PRINT "IN A STRAIGHT LINE (EITHER HORIZONTAL, VERTICAL, OR DIAGONAL)"
  4. 130 PRINT "ON A 9 X 9 BOARD, PLAYING AGAINST THE COMPUTER.  ENTER YOUR"
  5. 140 PRINT "MOVE AS 2 NUMBERS; THE POSITIONS ACROSS AND THEN DOWN"
  6. 150 PRINT "FROM THE UPPER LEFT HAND CORNER OF THE BOARD.  THE COMPUTER"
  7. 160 PRINT "WILL TELL YOU IT'S MOVE, AND PRINT THE BOARD.  'Y' IS YOU;"
  8. 170 PRINT "'C' IS THE COMPUTER.  GOOD LUCK."
  9. 180 DIM A(27,27),P(22),Q(22)
  10. 190 LET L9=200
  11. 200 FOR J=1 TO 27
  12. 210 FOR K=1 TO 27
  13. 220 LET A(J,K)=3
  14. 230 NEXT K
  15. 240 NEXT J
  16. 250 LET S=0
  17. 260 FOR J=10 TO 18
  18. 270 FOR K=10 TO 18
  19. 280 LET A(J,K)=0
  20. 290 NEXT K
  21. 300 NEXT J
  22. 310 IF S=1 THEN 2440
  23. 320 LET S=1
  24. 330 GOTO 350
  25. 340 GOSUB 2220
  26. 350 INPUT J1,K1
  27. 360 IF J1+K1=0 THEN 260
  28. 370 LET J1=J1+9
  29. 380 LET K1=K1+9
  30. 390 IF A(J1,K1)<>0 THEN 2420
  31. 400 LET A(J1,K1)=2
  32. 410 LET D2=2
  33. 420 LET L3=0
  34. 430 LET D4=0
  35. 440 LET L2=81
  36. 450 LET Z9=1
  37. 460 GOTO 2480
  38. 470 LET D5=D4
  39. 480 IF D4>79 THEN 2080
  40. 490 LET D2=1
  41. 500 LET L2=65
  42. 510 LET D4=0
  43. 520 LET Z9=2
  44. 530 GOTO 2480
  45. 540 LET D6=D4
  46. 550 IF D5>31 THEN 570
  47. 560 IF D6<31 THEN 910
  48. 570 IF L3>0 THEN 2100
  49. 580 IF D5<65 THEN 610
  50. 590 LET D2=2
  51. 600 GOTO 640
  52. 610 LET D2=1
  53. 620 LET L2=55
  54. 630 IF D6<55 THEN 680
  55. 640 LET Z9=3
  56. 650 GOTO 2480
  57. 660 IF L3=3 THEN 2160
  58. 670 GOTO 2180
  59. 680 IF D5<55 THEN 780
  60. 690 LET D2=2
  61. 700 LET Z9=4
  62. 710 GOTO 2480
  63. 720 LET L2=31
  64. 730 LET L9=55
  65. 740 LET Z9=5
  66. 750 GOTO 2480
  67. 760 GOSUB 1830
  68. 770 GOTO 2160
  69. 780 LET L2=31
  70. 790 LET Z9=6
  71. 800 GOTO 2480
  72. 810 IF L3<2 THEN 830
  73. 820 GOSUB 1830
  74. 830 LET L3=0
  75. 840 LET D2=2
  76. 850 LET Z9=7
  77. 860 GOTO 2480
  78. 870 IF L3=0 THEN 920
  79. 880 IF L3=1 THEN 2140
  80. 890 GOSUB 1830
  81. 900 GOTO 2180
  82. 910 LET D2=2
  83. 920 LET L2=D5-5
  84. 930 LET L3=0
  85. 940 LET Z9=8
  86. 950 GOTO 2480
  87. 960 IF L3>0 THEN 2180
  88. 970 PRINT "DRAW, ";
  89. 980 GOTO 2120
  90. 990 FOR J=1 TO 9
  91. 1000 GOSUB 1760
  92. 1010 FOR K=1 TO 10
  93. 1020 GOSUB 1270
  94. 1030 NEXT K
  95. 1040 NEXT J
  96. 1050 FOR K=1 TO 9
  97. 1060 GOSUB 1760
  98. 1070 FOR J=1 TO 10
  99. 1080 GOSUB 1270
  100. 1090 NEXT J
  101. 1100 NEXT K
  102. 1110 FOR L=4 TO -4 STEP -1
  103. 1120 GOSUB 1760
  104. 1130 FOR J=1 TO 10
  105. 1140 LET K=J+L
  106. 1150 GOSUB 1270
  107. 1160 NEXT J
  108. 1170 NEXT L
  109. 1180 FOR L=5 TO 14
  110. 1190 GOSUB 1760
  111. 1200 FOR K=1 TO 10
  112. 1210 LET J=L-K
  113. 1220 GOSUB 1270
  114. 1230 NEXT K
  115. 1240 NEXT L
  116. 1250 LET L9=200
  117. 1260 RETURN
  118. 1270 LET B=A(J+9,K+9)
  119. 1280 IF B=0 THEN 1610
  120. 1290 IF B=D2 THEN 1500
  121. 1300 IF V1=0 THEN 1330
  122. 1310 IF C1=66 THEN 1330
  123. 1320 LET C1=C1-10
  124. 1330 LET S9=0
  125. 1340 LET V1=0
  126. 1350 IF C1<=C2 THEN 1370
  127. 1360 LET C2=C1
  128. 1370 IF C5>=5 THEN 1400
  129. 1380 GOSUB 1760
  130. 1390 RETURN
  131. 1400 LET C5=0
  132. 1410 IF C2<=D4 THEN 1430
  133. 1420 LET D4=C2
  134. 1430 IF C2<L2 THEN 1390
  135. 1440 IF C2>L9 THEN 1390
  136. 1450 IF L1=0 THEN 1390
  137. 1460 LET P(L3)=Q(L1-1)
  138. 1470 LET L3=L3+1
  139. 1480 LET L1=L1-1
  140. 1490 GOTO 1450
  141. 1500 IF V1=1 THEN 1550
  142. 1510 LET V1=1
  143. 1520 IF S9=0 THEN 1550
  144. 1530 GOSUB 1910
  145. 1540 LET S9=0
  146. 1550 LET C6=C7+C6+1
  147. 1560 LET C7=0
  148. 1570 LET C5=C5+1
  149. 1580 IF C6>5 THEN 1390
  150. 1590 LET C1=C1+20
  151. 1600 GOTO 1390
  152. 1610 IF V1=1 THEN 1640
  153. 1620 LET S9=10*J+K
  154. 1630 GOTO 1660
  155. 1640 GOSUB 1910
  156. 1650 LET V1=0
  157. 1660 LET C5=C5+1
  158. 1670 IF C1<=0 THEN 1690
  159. 1680 LET C7=C7+1
  160. 1690 IF C1<=C2 THEN 1730
  161. 1700 LET C2=C1
  162. 1710 LET C1=C1-4
  163. 1720 GOTO 1390
  164. 1730 IF C1>=0 THEN 1710
  165. 1740 LET C1=1
  166. 1750 GOTO 1390
  167. 1760 LET L1=0
  168. 1770 LET C1=-10
  169. 1780 LET C2=0
  170. 1790 LET C5=0
  171. 1800 LET C6=0
  172. 1810 LET C7=0
  173. 1820 RETURN
  174. 1830 FOR H=0 TO L3-2
  175. 1840 FOR I=H+1 TO L3-1
  176. 1850 IF P(H)=P(I) THEN 1890
  177. 1860 NEXT I
  178. 1870 NEXT H
  179. 1880 RETURN
  180. 1890 LET P(0)=P(H)
  181. 1900 GOTO 2140
  182. 1910 IF C1<65 THEN 1970
  183. 1920 IF L1=0 THEN 1970
  184. 1930 IF L1=1 THEN 2020
  185. 1940 LET Q(0)=Q(1)
  186. 1950 LET L1=L1-1
  187. 1960 GOTO 1930
  188. 1970 IF S9=0 THEN 2000
  189. 1980 LET Q(L1)=S9
  190. 1990 GOTO 2010
  191. 2000 LET Q(L1)=10*J+K
  192. 2010 LET L1=L1+1
  193. 2020 RETURN
  194. 2030 LET J=INT(P(0)/10)+9
  195. 2040 LET K=P(0)-10*(J-9)+9
  196. 2050 LET A(J,K)=1
  197. 2060 PRINT J-9;K-9
  198. 2070 RETURN
  199. 2080 PRINT "YOU WIN"
  200. 2090 GOTO 2210
  201. 2100 GOSUB 2030
  202. 2110 GOSUB 2220
  203. 2120 PRINT "COMPUTER WINS"
  204. 2130 GOTO 2210
  205. 2140 GOSUB 2030
  206. 2150 GOTO 340
  207. 2160 LET P(0)=P(1)
  208. 2170 GOTO 2140
  209. 2180 LET L9=INT(L3*RND(X))
  210. 2190 LET P(0)=P(L9)
  211. 2200 GOTO 2140
  212. 2210 GOTO 260
  213. 2220 PRINT
  214. 2230 PRINT "      1 2 3 4 5 6 7 8 9"
  215. 2240 FOR J=10 TO 18
  216. 2250 PRINT J-9;TAB(6);
  217. 2260 FOR K=10 TO 18
  218. 2270 FOR L=K TO 18
  219. 2280 IF A(L,J)<>0 THEN 2310
  220. 2290 NEXT L
  221. 2300 GOTO 2350
  222. 2310 IF A(K,J)=0 THEN 2400
  223. 2320 IF A(K,J)=1 THEN 2380
  224. 2330 PRINT "Y ";
  225. 2340 NEXT K
  226. 2350 PRINT
  227. 2360 NEXT J
  228. 2370 RETURN
  229. 2380 PRINT "C ";
  230. 2390 GOTO 2340
  231. 2400 PRINT ". ";
  232. 2410 GOTO 2340
  233. 2420 PRINT "BAD PLAY, MAKE A NEW ONE"
  234. 2430 GOTO 350
  235. 2440 LET A(14,14)=1
  236. 2450 PRINT "COMPUTER PLAYS FIRST WITH 5, 5"
  237. 2460 LET S=0
  238. 2470 GOTO 340
  239. 2480 GOSUB 990
  240. 2490 IF Z9>5 THEN 2510
  241. 2500 IF Z9=1 THEN 470
  242. 2501 IF Z9=2 THEN 540
  243. 2502 IF Z9=3 THEN 660
  244. 2503 IF Z9=4 THEN 720
  245. 2504 IF Z9=5 THEN 760
  246. 2510 LET Z9=Z9-5
  247. 2520 IF Z9=1 THEN 810
  248. 2530 IF Z9=2 THEN 870
  249. 2540 IF Z9=3 THEN 960
  250. 2550 END
  251.