home *** CD-ROM | disk | FTP | other *** search
/ Brotikasten / BROTCD01.iso / geos / geos171.d64 / othellojoy (.txt) < prev    next >
Commodore BASIC  |  1995-08-07  |  7KB  |  295 lines

  1. 0 POKE808,234
  2. 1 POKE644,128:POKE56,128:CLR
  3. 2 POKE56,56:CLR:TU=1:POKE53281,15:CO=54272:SC=13:CHIP$="%&[157][157]#$":PL=1
  4. 3 DIMBO(80),TA(71),PT(71),A(71),PO(80)
  5. 4 GOSUB250
  6. 5 GOSUB77
  7. 6 GOSUB107
  8. 7 GOSUB97
  9. 8 IFDE=1THENGOSUB122:GOTO16
  10. 9 FORY=2TO5:FORX=2TO5
  11. 10 READA:PO(Y*9+X)=A:NEXT:NEXT
  12. 11 BO(30)=2:BO(31)=1:BO(39)=1:BO(40)=2:BC=2:WC=2
  13. 12 POKE646,1:POKE214,9:PRINT:PRINTTAB(10);CHIP$
  14. 13 POKE214,9:PRINT:POKE646,0:PRINTTAB(13);CHIP$
  15. 14 POKE646,0:POKE214,12:PRINT:PRINTTAB(10);CHIP$
  16. 15 POKE214,12:PRINT:POKE646,1:PRINTTAB(13);CHIP$
  17. 16 FL=1:X=4:Y=4:WC$=STR$(WC)+" ":BC$=STR$(BC)+" "
  18. 17 IFTU=1THENM$="BLACK'S TURN":GOTO19
  19. 18 M$="WHITE'S TURN"
  20. 19 POKE214,4:PRINT:PRINTTAB(26);M$:POKE214,10:PRINT:PRINTTAB(31);BC$
  21. 20 IFPL=1THENAL=BC+1:GOTO22
  22. 21 AL=WC+1
  23. 22 POKE214,16:PRINT:PRINTTAB(31);WC$
  24. 23 POKE214,9:PRINT:PRINTTAB(26)"BLACK'S CHIPS"
  25. 24 POKE214,15:PRINT:PRINTTAB(26)"WHITE'S CHIPS"
  26. 25 IFCM=1ANDTU=PLTHENGOSUB193:GOTO46
  27. 26 POKE53269,1
  28. 27 JV=PEEK(56321):FR=JVAND16:JV=15-(JVAND15):S=0
  29. 28 IFJV=1ANDY>0THENY=Y-1:GOTO33
  30. 29 IFJV=2ANDY<7THENY=Y+1:GOTO33
  31. 30 IFJV=4ANDX>0THENX=X-1:GOTO33
  32. 31 IFJV=8ANDX<7THENX=X+1:GOTO33
  33. 32 GOTO34
  34. 33 POKECO+4,17:POKECO+1,25:FORI=1TO20:NEXTI:POKECO+4,16
  35. 34 GETA$:IFA$<>"E"THEN39
  36. 35 POKE214,20:PRINT:PRINTTAB(26)"ARE YOU SURE";SPC(27);"YOU WANT TO END"
  37. 36 GETA$:IFA$="Y"THEN175
  38. 37 IFA$<>"N"THEN36
  39. 38 POKE214,20:PRINT:PRINTTAB(26)"            ";SPC(27);"               "
  40. 39 POKE53248,32+X*24:POKE53249,58+Y*24
  41. 40 SC=SC+1:IFSC=16THENSC=13
  42. 41 POKE2040,SC
  43. 42 IFFR=16THEN27
  44. 43 XY=Y*9+X:IFBO(XY)>0THEN27
  45. 44 POKECO+4,33:POKECO+1,10:FORJ=1TO50:NEXTJ
  46. 45 POKECO+4,32:FORJ=15TO0STEP-1:POKECO+1,T:NEXT
  47. 46 IFFL=0THEN54
  48. 47 POKE53269,0:POKE214,Y*3:PRINT
  49. 48 POKE646,TU-1:PRINTTAB(X*3+1);CHIP$
  50. 49 POKECO+4,33:POKECO+1,10:FORJ=1TO50:NEXTJ
  51. 50 POKECO+4,32:FORJ=15TO0STEP-1:POKECO+1,T:NEXT
  52. 51 IFPO(XY)=0THEN54
  53. 52 GOSUB151
  54. 53 IFCHIPS>0THENGOSUB162:BO(XY)=TU:GOTO66
  55. 54 POKE214,20:PRINT:PRINTTAB(26)"ILLEGAL MOVE";SPC(29);"END OF TURN"
  56. 55 POKECO+4,33:POKECO+1,5:FORJ=1TO300:NEXTJ:POKECO+4,32:POKECO+1,0
  57. 56 FORJ=1TO150:NEXTJ
  58. 57 IFFL=0THEN64
  59. 58 POKECO+4,33:POKECO+1,10:FORJ=1TO150:NEXTJ
  60. 59 POKECO+4,32:FORJ=15TO0STEP-1:POKECO+1,T:NEXT
  61. 60 POKE646,15:POKE214,Y*3:PRINT
  62. 61 PRINTTAB(3*X+1);CHIP$
  63. 62 POKECO+4,33:POKECO+1,10:FORJ=1TO50:NEXTJ
  64. 63 POKECO+4,32:FORJ=15TO0STEP-1:POKECO+1,T:NEXT
  65. 64 POKE214,20:PRINT:PRINTTAB(26)"            ";SPC(29);"           "
  66. 65 GOTO71
  67. 66 IFTU=1THENBC=BC+CHIPS+1:WC=WC-CHIPS:GOTO68
  68. 67 WC=WC+CHIPS+1:BC=BC-CHIPS
  69. 68 FORQ=1TO8
  70. 69 IFXY+OF(Q)>-1THENPO(XY+OF(Q))=1
  71. 70 NEXTQ
  72. 71 TU=3-TU
  73. 72 IFWC=0ORBC=0ORWC+BC=64THEN175
  74. 73 GOSUB76
  75. 74 IFXY=0ORXY=7ORXY=63ORXY=70THENGOSUB235
  76. 75 GOTO16
  77. 76 FORI=0TO71:TA(I)=0:NEXT:RETURN
  78. 77 PRINT"[147][144]":PRINTTAB(14)"REFLECTION"
  79. 78 PRINTTAB(10)"(W)HITE MOVES FIRST"
  80. 79 PRINTTAB(10)"(B)LACK MOVES FIRST"
  81. 80 GETA$:IFA$="W"THENTU=2:GOTO82
  82. 81 IFA$<>"B"THEN80
  83. 82 PRINTTAB(13)"(N)ORMAL BOARD"
  84. 83 PRINTTAB(8)"(D)ESIGN YOUR OWN BOARD"
  85. 84 GETA$:IFA$="D"THENDE=1:GOTO86
  86. 85 IFA$<>"N"THEN84
  87. 86 PRINTTAB(14)"(O)NE PLAYER"
  88. 87 PRINTTAB(13)"(T)WO PLAYERS"
  89. 88 GETA$:IFA$="T"THEN96
  90. 89 IFA$<>"O"THEN88
  91. 90 CM=1:PRINTTAB(11)"WHAT LEVEL?(1-2)"
  92. 91 GETA$:LE=VAL(A$):IFLE<1ORLE>2THEN91
  93. 92 PRINTTAB(9)"COMPUTER PLAYS (B)LACK"
  94. 93 PRINTTAB(9)"COMPUTER PLAYS (W)HITE"
  95. 94 GETA$:IFA$="W"THENPL=2:GOTO96
  96. 95 IFA$<>"B"THEN94
  97. 96 RETURN
  98. 97 A$="[176][192][192][178][192][192][178][192][192][178][192][192][178][192][192][178][192][192][178][192][192][178][192][192][174]"
  99. 98 B$="[221]  [221]  [221]  [221]  [221]  [221]  [221]  [221]  [221]"
  100. 99 C$="[171][192][192][219][192][192][219][192][192][219][192][192][219][192][192][219][192][192][219][192][192][219][192][192][179]"
  101. 100 D$="[173][195][195][177][195][195][177][195][195][177][195][195][177][195][195][177][195][195][177][195][195][177][195][195][189]"
  102. 101 PRINT"[147]":PRINTA$
  103. 102 FORI=1TO7
  104. 103 PRINTB$:PRINTB$:PRINTC$
  105. 104 NEXTI:PRINTB$:PRINTB$:PRINTD$;
  106. 105 RETURN
  107. 106 GOTO106
  108. 107 PRINTTAB(11)"LOADING IN SPRITES"
  109. 108 FORI=832TO1024
  110. 109 READA:POKEI,A
  111. 110 NEXTI
  112. 111 POKE2040,15:POKE53287,4
  113. 112 IFPEEK(14616)=63THEN116
  114. 113 POKE56334,PEEK(56334)AND254
  115. 114 POKE1,PEEK(1)AND251
  116. 115 FORI=0TO1023:POKEI+14336,PEEK(I+53248):NEXT
  117. 116 POKE1,PEEK(1)OR4
  118. 117 POKE56334,PEEK(56334)OR1
  119. 118 FORI=14336+280TO14336+311
  120. 119 READA:POKEI,A:NEXT
  121. 120 POKE53272,(PEEK(53272)AND240)+14
  122. 121 RETURN
  123. 122 POKE53248,32:POKE53249,58:POKE53269,1
  124. 123 PRINT"";TAB(26)"TYPE (B) FOR":PRINTTAB(27)"BLACK CHIP"
  125. 124 PRINTTAB(26)"TYPE (W) FOR":PRINTTAB(27)"WHITE CHIP"
  126. 125 PRINTTAB(25)"TYPE SPACE FOR":PRINTTAB(29)"NO CHIP"
  127. 126 FORY=0TO7:FORX=0TO7
  128. 127 POKE53248,32+X*24:POKE53249,58+Y*24
  129. 128 GETA$:XY=X+Y*9
  130. 129 IFA$="W"THENWC=WC+1:BO(XY)=2:GOTO136
  131. 130 IFA$="B"THENBC=BC+1:BO(XY)=1:GOTO136
  132. 131 IFA$=" "THENPOKECO+4,17:POKECO+1,25:FORI=1TO20:NEXTI:POKECO+4,16:GOTO146
  133. 132 U=U+1:IFU=6THENU=1
  134. 133 IFU=1THENSC=SC+1:IFSC=16THENSC=13
  135. 134 POKE2040,SC
  136. 135 GOTO128
  137. 136 POKE646,BO(XY)-1
  138. 137 POKECO+4,33:POKECO+1,10:FORJ=1TO50:NEXTJ
  139. 138 POKECO+4,32:FORJ=15TO0STEP-1:POKECO+1,T:NEXT
  140. 139 POKE214,Y*3:PRINT
  141. 140 PRINTTAB(X*3+1);CHIP$
  142. 141 POKECO+4,33:POKECO+1,10:FORJ=1TO50:NEXTJ
  143. 142 FORE=1TO8
  144. 143 POKECO+4,32:FORJ=15TO0STEP-1:POKECO+1,T:NEXT
  145. 144 IFXY+OF(E)>-1THENPO(XY+OF(E))=1
  146. 145 NEXTE
  147. 146 NEXTX:NEXTY
  148. 147 PRINT"";TAB(26)"            ":PRINTTAB(27)"          "
  149. 148 PRINTTAB(26)"            ":PRINTTAB(27)"          "
  150. 149 PRINTTAB(25)"              ":PRINTTAB(29)"       "
  151. 150 RETURN
  152. 151 CHIPS=0:FORI=1TO8:L=1:V=0:XX=0
  153. 152 V=V+OF(I):IFXY+V>70ORXY+V<0THEN156
  154. 153 IFBO(XY+V)=5THEN156
  155. 154 IFBO(XY+V)=3-TUTHENXX=1:L=L+1:GOTO152
  156. 155 IFXX=1ANDBO(XY+V)=TUTHENGOSUB158
  157. 156 NEXT
  158. 157 RETURN
  159. 158 W=1:V=0
  160. 159 V=V+OF(I):TA(XY+V)=TU
  161. 160 W=W+1:IFW<=L-1THEN159
  162. 161 CHIPS=CHIPS+W-1:RETURN
  163. 162 FORI=0TO71
  164. 163 IFTA(I)=0ORTA(I)=5THEN173
  165. 164 POKE646,TU-1:L=INT(I/9)
  166. 165 POKE214,L*3:PRINT
  167. 166 POKECO+4,33:POKECO+1,10:FORJ=1TO15:NEXTJ
  168. 167 POKECO+4,32:FORJ=15TO0STEP-1:POKECO+1,T:NEXTJ
  169. 168 PRINTTAB((I-9*L)*3+1);CHIP$
  170. 169 POKECO+4,33:POKECO+1,10:FORJ=1TO15:NEXTJ
  171. 170 POKECO+4,32:FORJ=15TO0STEP-1:POKECO+1,T:NEXTJ
  172. 171 BO(I)=TU
  173. 172 POKECO+4,32:FORJ=15TO0STEP-1:POKECO+1,T:NEXTJ
  174. 173 NEXTI
  175. 174 RETURN
  176. 175 PRINT"":FORI=3TO24:PRINTSPC(25)"               ";:NEXTI
  177. 176 IFBC>WCTHENM$="BLACK":HI=BC:LO=WC:GOTO179
  178. 177 IFBC<WCTHENM$="WHITE":HI=WC:LO=BC:GOTO179
  179. 178 T1=1:HI=BC:LO=WC
  180. 179 Z=INT(HI/6):FORY=0TOZ:FORX=26TO31
  181. 180 IFX+Y*6-26=HITHENX=31:GOTO185
  182. 181 POKECO+4,33:POKECO+1,X+Y*4:FORJ=1TO50:NEXTJ
  183. 182 POKECO+4,32:FORJ=15TO0STEP-1:POKECO+1,T:NEXT
  184. 183 IFX+6*Y-26<BCTHENPOKE1384+X+Y*40,81:POKE55656+X+Y*40,0
  185. 184 IFX+6*Y-26<WCTHENPOKE1384+X+7+Y*40,81:POKE55656+X+Y*40+7,1
  186. 185 NEXT:NEXT
  187. 186 PRINT"":IFT1=1THENPRINTTAB(28)"TIE GAME":GOTO188
  188. 187 PRINTTAB(27);M$;" WINS"
  189. 188 PRINTTAB(27)HI;" TO ";LO
  190. 189 PRINT"":PRINTTAB(25)"PLAY AGAIN Y/N"
  191. 190 GETA$:IFA$="N"THENSYS49708
  192. 191 IFA$<>"Y"THEN190
  193. 192 GOTO2
  194. 193 HY=-32000:POKE53269,0
  195. 194 HI=-32000:FORXY=0TO71
  196. 195 IFBO(XY)>0ORPO(XY)=0THENNEXT:GOTO204
  197. 196 GOSUB151:IFCHIPS=0THENNEXT:GOTO204
  198. 197 TT=WC+BC:QW=TT/8*CHIPS+PT(XY)*(65-TT)/8
  199. 198 IFLE=2ANDCHIPS=A1THENQW=10000
  200. 199 IFLE=2ANDREC=0THENGOSUB211:NEXT:GOTO204
  201. 200 IFQW>HITHENHI=QW:H1=XY:NEXT:GOTO204
  202. 201 IFHI=0THENNEXTXY:GOTO204
  203. 202 IFQW/HI>.85ANDQW/HI<1.15THENZZ=INT(RND(1)*2):IFZZ=1THENHI=QW:H1=XY
  204. 203 NEXT
  205. 204 IFLE=2ANDREC=1THENRETURN
  206. 205 IF(HI=-32000ANDLE=1)OR(HY=-32000ANDLE=2)THENFL=0:CHIPS=0
  207. 206 XY=H1
  208. 207 IFLE=2THENXY=H2
  209. 208 GOSUB76
  210. 209 Y=INT(XY/9):X=XY-Y*9
  211. 210 RETURN
  212. 211 A1=AL:FORE=0TO71
  213. 212 A(E)=BO(E)
  214. 213 IFTA(E)>0THENBO(E)=TA(E):A1=A1+1
  215. 214 NEXTE
  216. 215 FORQ=1TO8
  217. 216 IFXY+OF(Q)>-1THENPO(XY+OF(Q))=PO(XY+OF(Q))+1
  218. 217 NEXTQ
  219. 218 BO(XY)=TU
  220. 219 NW=QW:REC=1:Y1=XY
  221. 220 TU=3-TU:GOSUB194:REC=0
  222. 221 QY=NW-HI:TU=3-TU
  223. 222 IFQY>HYTHENHY=QY:H2=Y1
  224. 223 IFHY=0THEN225
  225. 224 IFQY/HY>.85ANDQY/HY<1.15THENZZ=INT(RND(1)*2):IFZZ=1THENHY=QY:H2=Y1
  226. 225 XY=Y1
  227. 226 FORE=0TO70
  228. 227 BO(E)=A(E):NEXT
  229. 228 GOSUB76
  230. 229 FORQ=1TO8
  231. 230 IFY1+OF(Q)<0THEN233
  232. 231 IFPO(Y1+OF(Q))=2THENPO(Y1+OF(Q))=1:GOTO233
  233. 232 PO(Y1+OF(Q))=0
  234. 233 NEXTQ
  235. 234 RETURN
  236. 235 IFXY=7THEN241
  237. 236 IFXY=63THEN244
  238. 237 IFXY=70THEN247
  239. 238 FORI=9TO13:PT(I)=15-I:NEXT
  240. 239 FORI=1TO37STEP9:PT(I)=6-INT(I/9):NEXT
  241. 240 RETURN
  242. 241 FORI=6TO42STEP9:PT(I)=6-INT(I/9):NEXT
  243. 242 FORI=16TO12STEP-1:PT(I)=I-10:NEXT
  244. 243 RETURN
  245. 244 FORI=54TO58:PT(I)=60-I:NEXT
  246. 245 FORI=64TO28STEP-9:PT(I)=INT(I/9)-1:NEXT
  247. 246 RETURN
  248. 247 FORI=61TO58STEP-1:PT(I)=I-55:NEXT
  249. 248