Advertisement
mattmcgrath

tictac.bas

Feb 14th, 2017
106
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 5.30 KB | None | 0 0
  1. 20 PRINT "GREETINGS PROFESSOR HIPO";
  2. 30 PRINT "........"
  3. 100 PRINT "SHALL WE PLAY A GAME?"
  4.  
  5. 110 PRINT
  6. 120 PRINT "YOU HAVE THE OPPORTUNITY OF TRYING TO BEAT THE COMPUTER"
  7. 130 PRINT "AT TIC-TAC-TOE, ENTER YOUR MOVES AS FOLLOWS:"
  8. 140 PRINT
  9.  
  10. 150 DIM C(11)
  11. 160 DIM D(11)
  12. 170 FOR K = 1 TO 11
  13. 180 READ C(K), D(K)
  14. 190 NEXT K
  15.  
  16. 200 PRINT "...ROW NUMBER...COMMA...COLUMN NUMBER..."
  17. 210 PRINT
  18. 220 PRINT "ROWS ARE HORIZONTAL(ACROSS)...COLUMNS ARE VERTICAL(UP + DOWN)"
  19.  
  20. 230 DIM B(9)
  21. 240 DIM A(3, 3)
  22. 250 PRINT
  23. 260 PRINT "NEW GAME STARTED NOW............................"
  24.  
  25. 270 FOR J = 1 TO 3
  26. 280 FOR I = 1 TO 3
  27. 290 LET A(I, J) = 0
  28. 300 NEXT I
  29. 301 LET I = I - 1
  30. 310 NEXT J
  31. 311 LET J = J - 1
  32. 320 LET Z = 0
  33.  
  34. 330 PRINT "YOUR MOVE",
  35. 340 INPUT R, C
  36. 341 R = ABS(R)
  37. 342 C = ABS(C)
  38. 350 PRINT
  39.  
  40. 360 IF R > 3 THEN 620
  41. 370 IF C > 3 THEN 620
  42. 380 IF A(R, C) <> 0 THEN 620
  43.  
  44. 390 LET A(R, C) = -1
  45. 400 GOSUB 1660
  46. 410 IF Z = 1 THEN 2070
  47. 420 REM MACHINE MOVE...
  48. 430 GOSUB 1100
  49. 440 REM TEST FOR GAME WIN
  50. 450 GOSUB 1660
  51. 460 IF Z = 0 THEN 650
  52. 470 REM PRINT GAME BOARD....
  53. 480 GOTO 490
  54. 490 PRINT
  55. 500 FOR K = 1 TO 3
  56. 510 LET B = A(K, 1)
  57. 520 LET D = A(K, 2)
  58. 530 LET F = A(K, 3)
  59. 540 GOSUB 840
  60. 550 IF K > 2 THEN 570
  61. 560 PRINT "**************"
  62. 570 NEXT K
  63. 571 LET K = K - 1
  64. 580 PRINT
  65. 590 IF Z <> 0 THEN GOTO 2070
  66. 600 GOTO 330
  67. 610 STOP
  68. 620 PRINT "---- ILLEGAL MOVE -- TRY AGAIN ----"
  69. 630 PRINT
  70. 640 GOTO 330
  71. 650 LET T2 = 0
  72. 660 FOR J = 1 TO 3
  73. 670 FOR I = 1 TO 3
  74. 680 IF A(I, J) <> 0 THEN 700
  75. 690 LET T2 = T2 + 1
  76. 700 NEXT I
  77. 701 LET I = I - 1
  78. 710 NEXT J
  79. 720 IF T2 > 0 THEN GOTO 750
  80. 730 GOSUB 1340
  81. 740 GOTO 480
  82. 750 IF T2 > 1 THEN 480
  83. 760 FOR J = 1 TO 8
  84. 770 IF B(J) = -2 THEN GOTO 800
  85. 780 NEXT J
  86. 781 LET J = J - 1
  87. 790 GOTO 730
  88. 800 GOSUB 2000
  89. 810 GOTO 480
  90. 820 REM PRINT TIC-TAC-TOE BOARD ROW.....
  91. 830 REM
  92. 840 IF B <> 0 THEN GOTO 910
  93. 850 PRINT " * ";
  94. 860 IF D <> 0 THEN 940
  95. 870 PRINT " * ";
  96. 880 IF F <> 0 THEN 970
  97. 890 PRINT " "
  98. 900 GOTO 1070
  99. 910 IF B > 0 THEN 1000
  100. 920 PRINT "YOU * ";
  101. 930 GOTO 860
  102. 940 IF D > 0 THEN 1020
  103. 950 PRINT "YOU * ";
  104. 960 GOTO 880
  105. 970 IF F > 0 THEN 1040
  106. 980 PRINT "YOU"
  107. 990 GOTO 900
  108. 1000 PRINT "PDP * ";
  109. 1010 GOTO 860
  110. 1020 PRINT "PDP * ";
  111. 1030 GOTO 880
  112. 1040 PRINT "PDP"
  113. 1050 GOTO 900
  114. 1060 REM PRINT LEGENDS..
  115. 1070 PRINT " * * "
  116. 1080 RETURN
  117. 1090 REM PROGRAM TO MAKE MOVE FOR MACHINE...
  118. 1100 LET M = INT(3.33 * RND(1))
  119. 1110 LET N = INT(3.33333 * RND(1))
  120. 1120 IF M = 0 THEN 1100
  121. 1130 IF M > 3 THEN 1100
  122. 1140 IF N = 0 THEN 1100
  123. 1150 IF N > 3 THEN 1100
  124. 1160 LET C(2) = M
  125. 1170 LET D(2) = N
  126.  
  127.  
  128. 1180 LET C(3) = N
  129. 1190 LET D(3) = M
  130. 1200 FOR I = 1 TO 8
  131. 1210 IF B(I) > 1 THEN GOTO 1370
  132. 1220 NEXT I
  133. 1221 LET I = I - 1
  134. 1230 FOR I = 1 TO 8
  135. 1240 IF B(I) < -1 THEN 1370
  136. 1250 NEXT I
  137. 1251 LET I = I - 1
  138. 1260 IF R + C = 0 THEN 1550
  139. 1270 FOR K = 1 TO 11
  140. 1280 LET I = C(K)
  141. 1290 LET J = D(K)
  142. 1300 IF A(I, J) <> 0 THEN 1330
  143. 1310 LET A(I, J) = 1
  144. 1320 GOTO 1360
  145. 1330 NEXT K
  146. 1331 LET K = K - 1
  147. 1340 PRINT " ... TIE GAME ... "
  148. 1350 LET Z = 3
  149. 1360 RETURN
  150.  
  151. 1370 IF I > 3 THEN 1440
  152. 1380 FOR J = 1 TO 3
  153. 1390 IF A(I, J) = 0 THEN 1420
  154. 1400 NEXT J
  155.  
  156. 1401 LET J = J - 1
  157. 1410 GOTO 1360
  158. 1420 LET A(I, J) = 1
  159. 1430 GOTO 1360
  160. 1440 IF I > 6 THEN 1510
  161. 1450 FOR J = 1 TO 3
  162. 1460 IF A(J, I - 3) = 0 THEN 1490
  163. 1470 NEXT J
  164. 1471 LET J = J - 1
  165. 1480 GOTO 1360
  166. 1490 LET A(J, I - 3) = 1
  167. 1500 GOTO 1360
  168. 1510 IF I > 7 THEN 1550
  169. 1520 FOR J = 1 TO 3
  170. 1530 IF A(J, J) = 0 THEN 1590
  171. 1540 NEXT J
  172.  
  173.  
  174. 1541 LET J = J - 1
  175. 1550 IF A(1, 3) = 0 THEN 1610
  176. 1560 IF A(3, 1) = 0 THEN 1630
  177. 1570 LET A(2, 2) = 1
  178. 1580 GOTO 1360
  179. 1590 LET A(J, J) = 1
  180. 1600 GOTO 1360
  181. 1610 LET A(1, 3) = 1
  182. 1620 GOTO 1360
  183. 1630 LET A(3, 1) = 1
  184. 1640 GOTO 1360
  185. 1650 REM PROGRAM TO TEST FOR GAME WINNER...
  186. 1660 LET T1 = 0
  187. 1670 FOR J = 1 TO 9
  188. 1680 LET B(J) = 0
  189. 1690 NEXT J
  190. 1691 LET J = J - 1
  191. 1700 FOR J = 1 TO 3
  192. 1710 FOR I = 1 TO 3
  193. 1720 IF A(J, 1) <> A(J, I) THEN 1750
  194. 1730 NEXT I
  195. 1731 LET I = I - 1
  196. 1740 LET T1 = A(J, I)
  197. 1750 NEXT J
  198. 1751 LET J = J - 1
  199. 1760 FOR J = 1 TO 3
  200. 1770 FOR I = 1 TO 3
  201. 1780 IF A(1, J) <> A(I, J) THEN 1810
  202. 1790 NEXT I
  203. 1791 LET I = I - 1
  204. 1800 LET T1 = A(I, J)
  205. 1810 NEXT J
  206. 1811 LET J = J - 1
  207. 1820 IF A(1, 1) = A(3, 3) THEN 1930
  208. 1830 IF A(3, 1) = A(1, 3) THEN 1970
  209. 1840 IF T1 <> 0 THEN 1990
  210. 1850 FOR J = 1 TO 3
  211. 1860 FOR I = 1 TO 3
  212. 1870 LET B(J) = B(J) + A(J, I)
  213. 1880 LET B(J + 3) = B(J + 3) + A(I, J)
  214. 1890 NEXT I
  215. 1900 NEXT J
  216. 1901 LET J = J - 1
  217. 1910 LET B(7) = A(1, 1) + A(2, 2) + A(3, 3)
  218. 1920 RETURN
  219.  
  220. 1930 IF A(2, 2) = A(3, 3) THEN 1950
  221. 1940 GOTO 1830
  222. 1950 LET T1 = A(2, 2)
  223. 1960 GOTO 1840
  224. 1970 IF A(2, 2) = A(1, 3) THEN 1950
  225. 1980 GOTO 1840
  226. 1990 IF T1 > 0 THEN 2030
  227.  
  228. 2000 PRINT " ... YOU WIN THIS TIME ..."
  229. 2010 LET Z = 1
  230. 2020 GOTO 1850
  231.  
  232. 2030 PRINT " ... THE PDP-8 WINS THIS TIME ..."
  233. 2040 LET Z = 2
  234. 2050 GOTO 1850
  235. 2060 REM END OF TEST WINNER PROGRAM..........
  236.  
  237. 2070 PRINT "DO YOU WANT TO PLAY ANOTHER GAME: YES(1), NO(0)"
  238. 2080 INPUT X1
  239. 2090 IF X1 = 1 THEN GOTO 250
  240. 2100 IF X1 = 0 THEN GOTO 2130
  241. 2110 PRINT "I SAID ONE OR ZERO: TRY AGAIN",
  242. 2120 GOTO 2080
  243.  
  244. 2130 PRINT
  245. 2135 PRINT "----------------------------------------"
  246. 2136 PRINT "A STRANGE GAME."
  247. 2137 PRINT "THE ONLY WINNING MOVE IS"
  248. 2138 PRINT "NOT TO PLAY."
  249. 2139 PRINT "HOW ABOUT A NICE GAME OF CHESS?"
  250.  
  251.  
  252. 2140 GOTO 2160
  253.  
  254. 2150 DATA 2,2,0,0,0,0,1,1,3,3,1,3,3,1,1,2,3,2,3,2,3,1
  255.  
  256. 2160 REM CHAIN "DEMON "
  257. 2170 END
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement