home *** CD-ROM | disk | FTP | other *** search
/ Shareware Overload / ShartewareOverload.cdr / games / basic-1.zip / CONNFOUR.BAS < prev    next >
BASIC Source File  |  1988-01-17  |  7KB  |  256 lines

  1. 1  rem  from Chelmsford Exchange 11/13/83
  2. 4  REM  QUBIC
  3. 5  PRINT "DO YOU WANT INSTRUCTIONS";
  4. 6  INPUT C$
  5. 7  IF C$ = "NO" THEN 20
  6. 8  IF C$ = "YES" THEN 13
  7. 9  PRINT "INCORECT ANSWER.  PLEASE TYPE 'YES' OR 'NO'.";
  8. 10  GOTO 6
  9. 13  PRINT "THE GAME IS TIC-TAC-TOE IN A 4X4X4 CUBE."
  10. 14  PRINT "EACH MOVE IS INDICATED BY A 3 DIGIT NUMBER, WITH EACH"
  11. 15  PRINT "DIGIT BETWEEN 1 AND 4 INCLUSIVE. THE DIGITS INDICATE THE"
  12. 16  PRINT "LEVEL, COLUMN, AND ROW, RESPECTIVELY, OF THE OCCUPIED PLACE."
  13. 17  PRINT "IF YOU WANT A DISPLAY OF THE BOARD THEN ENTER ANY NUMBER"
  14. 18  PRINT "GREATER THAN 444 AS YOUR MOVE. THE '+' IS YOU AND THE '*' IS ME."
  15. 19  PRINT 
  16. 20  DIM X(64),L(76),M(76,4),Y(16)
  17. 21  FOR I = 1 TO 16
  18. 22  READ Y(I)
  19. 23  NEXT I
  20. 24  FOR I = 1 TO 76
  21. 25  FOR J = 1 TO 4
  22. 26  READ M(I,J)
  23. 27  NEXT J
  24. 28  NEXT I
  25. 35  FOR I = 1 TO 64
  26. 40  X(I) = 0
  27. 50  NEXT I
  28. 54  Z = 1
  29. 55  PRINT "DO YOU WANT TO MOVE FIRST";
  30. 60  INPUT S$
  31. 66  IF S$ = "NO" THEN  PRINT : GOTO 110
  32. 67  IF S$ = "YES" THEN 70
  33. 68  PRINT "INCORECT ANSWER.  PLEASE TYPE 'YES' OR 'NO'.";
  34. 69  GOTO 60
  35. 70  PRINT : IF S$ = "YES" THEN  PRINT 
  36. 72  PRINT "YOUR MOVE";
  37. 80  INPUT J1
  38. 85  GOSUB 1800
  39. 88  IF J1 > 444 THEN  GOTO 1870
  40. 90  K1 =  INT (J1 / 100)
  41. 95  J2 = (J1 - K1 * 100)
  42. 96  K2 =  INT (J2 / 10)
  43. 97  K3 = J1 - K1 * 100 - K2 * 10
  44. 98  M = 16 * K1 + 4 * K2 + K3 - 20
  45. 99  IF X(M) = 0 THEN 109
  46. 100  PRINT "THAT SQUARE IS ALREADY TAKEN, TRY AGAIN";
  47. 101  GOTO 80
  48. 109  X(M) = 1: IF S$ = "NO" THEN  PRINT 
  49. 110  GOSUB 1050
  50. 180  FOR J = 1 TO 3
  51. 190  FOR I = 1 TO 76
  52. 200  IF J = 1 THEN 210
  53. 201  IF J = 2 THEN 220
  54. 203  IF J = 3 THEN 235
  55. 205  NEXT I
  56. 206  NEXT J
  57. 207  GOTO 400
  58. 210  IF L(I) <  > 4 THEN 205
  59. 211  PRINT "CONGRATULATIONS, YOU WIN AS FOLLOWS";
  60. 212  FOR J = 1 TO 4
  61. 213  M = M(I,J)
  62. 214  GOSUB 1000
  63. 216  NEXT J
  64. 217  GOTO 500
  65. 220  IF L(I) <  > 15 THEN 205
  66. 221  FOR J = 1 TO 4
  67. 222  M = M(I,J)
  68. 223  IF X(M) <  > 0 THEN 227
  69. 224  X(M) = 5
  70. 225  PRINT "I MOVE TO";
  71. 226  GOSUB 1000
  72. 227  NEXT J
  73. 228  PRINT ", AND WIN AS FOLLOWS"
  74. 229  FOR J = 1 TO 4
  75. 230  M = M(I,J)
  76. 231  GOSUB 1000
  77. 233  NEXT J
  78. 234  GOTO 500
  79. 235  IF L(I) <  > 3 THEN 205
  80. 236  PRINT "NICE TRY, I MOVE TO";
  81. 237  FOR J = 1 TO 4
  82. 238  M = M(I,J)
  83. 239  IF X(M) <  > 0 THEN 245
  84. 240  X(M) = 5
  85. 241  GOSUB 1000
  86. 243  GOTO 70
  87. 245  NEXT J
  88. 248  GOTO 400
  89. 250  FOR I = 1 TO 76
  90. 251  L(I) = X(M(I,1)) + X(M(I,2)) + X(M(I,3)) + X(M(I,4))
  91. 252  L = L(I)
  92. 255  IF L < 2 THEN 290
  93. 260  IF L >  = 3 THEN 290
  94. 265  IF L > 2 THEN 1600
  95. 270  FOR J = 1 TO 4
  96. 275  IF X(M(I,J)) <  > 0 THEN 285
  97. 280  X(M(I,J)) = 1 / 8
  98. 285  NEXT J
  99. 290  NEXT I
  100. 295  GOSUB 1050
  101. 300  FOR I = 1 TO 76
  102. 305  IF L(I) = 1 / 2 THEN 1700
  103. 310  IF L(I) = 1 + 3 / 8 THEN 1700
  104. 315  NEXT I
  105. 320  GOTO 1300
  106. 360  Z = 1
  107. 362  IF X(Y(Z)) = 0 THEN 380
  108. 365  Z = Z + 1
  109. 368  IF Z <  > 17 THEN 362
  110. 375  GOTO 1200
  111. 380  M = Y(Z)
  112. 381  X(M) = 5
  113. 385  PRINT "I MOVE TO";
  114. 389  GOSUB 1000
  115. 390  GOTO 70
  116. 400  X = X
  117. 410  FOR I = 1 TO 76
  118. 412  L(I) = X(M(I,1)) + X(M(I,2)) + X(M(I,3)) + X(M(I,4))
  119. 415  L = L(I)
  120. 420  IF L < 10 THEN 455
  121. 425  IF L >  = 11 THEN 455
  122. 430  IF L > 10 THEN 1600
  123. 435  FOR J = 1 TO 4
  124. 440  IF X(M(I,J)) <  > 0 THEN 450
  125. 445  X(M(I,J)) = 1 / 8
  126. 450  NEXT J
  127. 455  NEXT I
  128. 470  GOSUB 1050
  129. 475  FOR I = 1 TO 76
  130. 480  IF L(I) = .5 THEN 1700
  131. 485  IF L(I) = 5 + 3 / 8 THEN 1700
  132. 490  NEXT I
  133. 492  GOSUB 1800
  134. 493  GOTO 250
  135. 500  PRINT " "
  136. 505  PRINT "DO YOU WANT TO TRY ANOTHER GAME";
  137. 510  INPUT X$
  138. 515  IF X$ = "YES" THEN 35
  139. 516  IF X$ = "NO" THEN 520
  140. 517  PRINT "INCORRECT ANSWER,  PLEASE TYPE 'YES' OR 'NO'.";
  141. 518  GOTO 510
  142. 520  STOP 
  143. 1000  K1 =  INT ((M - 1) / 16) + 1
  144. 1010  J2 = M - 16 * (K1 - 1)
  145. 1030  K2 =  INT ((J2 - 1) / 4) + 1
  146. 1035  K3 = M - (K1 - 1) * 16 - (K2 - 1) * 4
  147. 1040  M = K1 * 100 + K2 * 10 + K3
  148. 1042  PRINT M;
  149. 1045  RETURN 
  150. 1050  FOR S = 1 TO 76
  151. 1060  J1 = M(S,1)
  152. 1070  J2 = M(S,2)
  153. 1080  J3 = M(S,3)
  154. 1090  J4 = M(S,4)
  155. 1100  L(S) = X(J1) + X(J2) + X(J3) + X(J4)
  156. 1110  NEXT S
  157. 1120  RETURN 
  158. 1200  FOR I = 1 TO 64
  159. 1210  IF X(I) <  > 0 THEN 1250
  160. 1220  X(I) = 5
  161. 1225  M = I
  162. 1226  PRINT "I LIKE";
  163. 1227  GOSUB 1000
  164. 1228  PRINT " "
  165. 1230  GOTO 70
  166. 1250  NEXT I
  167. 1252  PRINT "THE GAME IS A DRAW"
  168. 1255  GOTO 500
  169. 1300  FOR K = 1 TO 18
  170. 1305  P = 0
  171. 1310  FOR I = 4 * K - 3 TO 4 * K
  172. 1315  FOR J = 1 TO 4
  173. 1320  P = P + X(M(I,J))
  174. 1325  NEXT J
  175. 1330  NEXT I
  176. 1345  IF P < 4 THEN 1390
  177. 1350  IF P < 5 THEN 1400
  178. 1355  IF P < 9 THEN 1390
  179. 1360  IF P < 10 THEN 1400
  180. 1390  NEXT K
  181. 1395  GOSUB 1800
  182. 1396  GOTO 360
  183. 1400  S = 1 / 8
  184. 1405  FOR I = 4 * K - 3 TO 4 * K
  185. 1410  GOTO 1703
  186. 1415  NEXT I
  187. 1420  S = 0
  188. 1425  GOTO 1405
  189. 1500  DATA  1,49,52,4,13,61,64,16,22,39,23,38,26,42,27,43
  190. 1510  DATA  1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20
  191. 1520  DATA  21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38
  192. 1521  DATA  39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56
  193. 1522  DATA  57,58,59,60,61,62,63,64
  194. 1523  DATA  1,17,33,49,5,21,37,53,9,25,41,57,13,29,45,61
  195. 1524  DATA  2,18,34,50,6,22,38,54,10,26,42,58,14,30,46,62
  196. 1525  DATA  3,19,35,51,7,23,39,55,11,27,43,59,15,31,47,63
  197. 1527  DATA  4,20,36,52,8,24,40,56,12,28,44,60,16,32,48,64
  198. 1529  DATA   1,5,9,13,17,21,25,29,33,37,41,45,49,53,57,61
  199. 1532  DATA   2,6,10,14,18,22,26,30,34,38,42,46,50,54,58,62
  200. 1534  DATA  3,7,11,15,19,23,27,31,35,39,43,47,51,55,59,63
  201. 1536  DATA  4,8,12,16,20,24,28,32,36,40,44,48,52,56,60,64
  202. 1538  DATA  1,6,11,16,17,22,27,32,33,38,43,48,49,54,59,64
  203. 1540  DATA  13,10,7,4,29,26,23,20,45,42,39,36,61,58,55,52
  204. 1542  DATA  1,21,41,61,2,22,42,62,3,23,43,63,4,24,44,64
  205. 1544  DATA  49,37,25,13,50,38,26,14,51,39,27,15,52,40,28,16
  206. 1546  DATA  1,18,35,52,5,22,39,56,9,26,43,60,13,30,47,64
  207. 1548  DATA  49,34,19,4,53,38,23,8,57,42,27,12,61,46,31,16
  208. 1550  DATA  1,22,43,64,16,27,38,49,4,23,42,61,13,26,39,52
  209. 1600  FOR J = 1 TO 4
  210. 1605  IF X(M(I,J)) <  > 1 / 8 THEN 1650
  211. 1610  X(M(I,J)) = 5
  212. 1615  IF L(I) < 5 THEN 1625
  213. 1620  PRINT "LET'S SEE YOU GET OUT OF THIS:  I MOVE TO ";
  214. 1622  GOTO 1626
  215. 1625  PRINT "YOU FOX,  JUST IN THE NICK OF TIME, I MOVE TO";
  216. 1626  M = M(I,J)
  217. 1630  GOSUB 1000
  218. 1640  GOTO 70
  219. 1650  NEXT J
  220. 1660  PRINT "I CONCEDE THIS GAME."
  221. 1665  GOTO 500
  222. 1700  S = 1 / 8
  223. 1703  IF I -  INT (I / 4) * 4 > 1 THEN 1715
  224. 1705  A = 1
  225. 1710  GOTO 1720
  226. 1715  A = 2
  227. 1720  FOR J = A TO 5 - A STEP 5 - 2 * A
  228. 1725  IF X(M(I,J)) = S THEN 1750
  229. 1730  NEXT J
  230. 1735  GOTO 1415
  231. 1750  X(M(I,J)) = 5
  232. 1755  M = M(I,J)
  233. 1760  PRINT "I TAKE";
  234. 1770  GOSUB 1000
  235. 1780  GOTO 70
  236. 1800  FOR I = 1 TO 64
  237. 1810  IF X(I) <  > 1 / 8 THEN 1850
  238. 1815  X(I) = 0
  239. 1850  NEXT I
  240. 1860  RETURN 
  241. 1870  PRINT " LEVEL 1   LEVEL 2   LEVEL3   LEVEL 4"
  242. 1875  FOR R2 = 1 TO 4
  243. 1880  FOR L2 = 1 TO 4
  244. 1890  FOR C2 = 1 TO 4
  245. 1900  T5 = 16 * (L2 - 1) + 4 * (C2 - 1) + R2
  246. 1905  IF X(T5) = 5 THEN  PRINT " *";: GOTO 1910
  247. 1906  IF X(T5) = 1 THEN  PRINT " +";: GOTO 1910
  248. 1907  PRINT " .";
  249. 1910  NEXT C2
  250. 1920  PRINT "  ";
  251. 1930  NEXT L2
  252. 1940  PRINT 
  253. 1950  NEXT R2
  254. 1960  GOTO 72
  255. 2000  END 
  256.