home *** CD-ROM | disk | FTP | other *** search
/ CP/M / CPM_CDROM.iso / simtel / cpmug / cpmug054.ark / TTTOE.BAS < prev    next >
Encoding:
BASIC Source File  |  1984-04-29  |  2.4 KB  |  138 lines

  1. 1 DATA 2,3,4,9,1,5,8,7,6
  2. 2 DATA 2,3,4,9,1,5,8,7,6,2,9,8,3,1,7
  3. 3 DATA 4,5,6,2,1,6,4,1,8
  4. 4 DATA 0,1,-1,1,-1,1,-1,1,-1
  5. 5 DIM A(9)
  6. 6 DIM B(9)
  7. 7 DIM C(24)
  8. 8 DIM D(24)
  9. 9 DIM F(9)
  10. 10 FOR I=1 TO 9
  11. 11 READ A(I)
  12. 12 NEXT I
  13. 13 FOR I=1 TO 24
  14. 14 READ C(I)
  15. 15 NEXT I
  16. 16 FOR I=1 TO 9
  17. 17 READ F(I)
  18. 18 NEXT I
  19. 19 PRINT "TIC-TAC-TOE"
  20. 20 PRINT
  21. 21 PRINT "THE MOVE POSITIONS ARE:"
  22. 22 PRINT
  23. 23 PRINT "1 2 3"
  24. 24 PRINT "4 5 6"
  25. 25 PRINT "7 8 9"
  26. 26 GOSUB 133
  27. 27 GOSUB 133
  28. 32 LET E=0
  29. 33 LET G=2
  30. 34 LET K=0
  31. 35 FOR I=1 TO 9
  32. 36 LET B(I)=0
  33. 37 NEXT I
  34. 38 FOR I=1 TO 24
  35. 39 LET D(I)=0
  36. 40 NEXT I
  37. 41 PRINT
  38. 42 PRINT
  39. 43 PRINT "--BEGIN GAME--"
  40. 44 PRINT "YOU WILL BE 'X', I WILL BE 'O'"
  41. 47 PRINT "TYPE 0 IF YOU WANT ME TO GO FIRST";
  42. 48 INPUT I
  43. 49 IF I=0 THEN 65
  44. 50 LET L=-1
  45. 51 PRINT "YOUR MOVE";
  46. 52 INPUT I
  47. 53 PRINT
  48. 54 PRINT
  49. 55 LET H=INT(ABS(I))
  50. 56 IF H<>I THEN 50
  51. 57 IF H < 1 THEN 50
  52. 58 IF H>9 THEN 50
  53. 59 LET H=A(H)
  54. 60 IF B(H) <> 0 THEN 50
  55. 61 IF K=1 THEN 64
  56. 62 LET G=F(H)
  57. 63 LET K=1
  58. 64 GOSUB 111
  59. 65 LET L=1
  60. 66 FOR I=1 TO 22 STEP 3
  61. 67 IF D(I) + D(I+1) + D(I+2) = -3 THEN 92
  62. 68 NEXT I
  63. 69 FOR I=1 TO 22 STEP 3
  64. 70 IF D(I) + D(I+1) + D(I+2) = 2 THEN 90
  65. 71 NEXT I
  66. 72 FOR I=1 TO 22 STEP 3
  67. 73 IF D(I) + D(I+1) + D(I+2) = -2 THEN 106
  68. 74 NEXT I
  69. 75 IF E=1 THEN 77
  70. 76 IF G = -1 THEN 78
  71. 77 IF B(1)=0 THEN 100
  72. 78 IF G <> 0 THEN 82
  73. 79 FOR I=2 TO 8 STEP 2
  74. 80 IF B(I)=0 THEN 101
  75. 81 NEXT I
  76. 82 IF H=8 THEN 86
  77. 83 FOR I=H+1 TO 8
  78. 84 IF B(I)=0 THEN 101
  79. 85 NEXT I
  80. 86 FOR I=2 TO 9
  81. 87 IF B(I)=0 THEN 101
  82. 88 NEXT I
  83. 89 GOTO 98
  84. 90 PRINT "I WIN"
  85. 91 GOTO 900
  86. 92 PRINT "YOU ARE NOT ALLOWED TO WIN"
  87. 93 FOR I=1 TO 9
  88. 94 LET B(I)=1
  89. 95 NEXT I
  90. 96 GOSUB 117
  91. 97 GOTO 900
  92. 98 PRINT "DRAW"
  93. 99 GOTO 900
  94. 100 LET I=1
  95. 101 LET H=I
  96. 102 GOSUB 111
  97. 103 LET E=1
  98. 104 GOSUB 117
  99. 105 GOTO 50
  100. 106 FOR J=I TO I+2
  101. 107 IF D(J)=0 THEN 109
  102. 108 NEXT J
  103. 109 LET I=C(J)
  104. 110 GOTO 101
  105. 111 LET B(H)=L
  106. 112 FOR M=1 TO 24
  107. 113 IF C(M) <> H THEN 115
  108. 114 LET D(M)=L
  109. 115 NEXT M
  110. 116 RETURN
  111. 117 FOR N=1 TO 9
  112. 118 IF B(N)=0 THEN 200
  113. 119 NEXT N
  114. 120 IF N<100 THEN 98
  115. 121 FOR N=1 TO 9 STEP 3
  116. 122 FOR O= 0 TO 2
  117. 123 IF B(A(O+N))=0 THEN 127
  118. 124 IF B(A(O+N))=1 THEN 129
  119. 125 PRINT "X ";
  120. 126 GOTO 130
  121. 127 PRINT "- ";
  122. 128 GOTO 130
  123. 129 PRINT "O ";
  124. 130 NEXT O
  125. 131 PRINT
  126. 132 NEXT N
  127. 133 PRINT
  128. 136 RETURN
  129. 137 STOP
  130. 200 LET N=1000
  131. 210 GOTO 119
  132. 900 GOTO 910
  133. 910 PRINT "TRY AGAIN (IF SO TYPE 0)";
  134. 920 INPUT I
  135. 930 IF I<>0 THEN 999
  136. 940 GOTO 27
  137. 999 END
  138.