start tok64 othello.fre.game 1 PRINT"{clear}{142}{black}{space*4}N{cm y}M{space*2}{cm y*2}O{cm y} {cm n}{space*2}{cm h} {cm n}{cm y*2}{space*2}{cm h}{space*3}{cm h}{space*3}N{cm y}M":POKE53280,12:POKE53281,12 2 PRINT"{space*4}{cm h} {cm n}{space*4}{cm h}{space*2}{cm m}{sh asterisk*2}{cm h} {cm m}{sh asterisk}{space*3}{cm h}{space*3}{cm h}{space*3}{cm h} {cm n} 3 PRINT"{space*4}M{cm p}N{space*4}{cm h}{space*2}{cm m}{space*2}{cm h} {cm m}{cm p*2}{space*2}L{cm p}{space*2}L{cm p}{space*2}M{cm p}N 4 PRINT,"{down*5}{white}{left}commodore 64 version":PRINTTAB(18)"{down*2}by 5 PRINT,"{down*2}{black}{space*2}steven darnold 6 PRINT,"{down}{space*2}p.o. box 201 7 PRINT,"{down}{space*2}alexandra, new zealand{down*5}{white} 8 FORi=1TO39:e$=e$+" ":NEXT:FORj=1TO39:e$=e$+"{left}":NEXT:n$="12345678" 9 d$="{home}":FORi=1TO20:d$=d$+"{down}":NEXT:DIMa(9,9),i4(7),j4(7):f2=3:b=-1:w=1:m$="WVQ" 10 m$=" {black}Q{gray} {white}Q":FORk=0TO7:READi4(k),j4(k):NEXT 11 GOSUB251:GOSUB231:p=6:n$(b+1)="black":n$(w+1)="white 13 PRINT"{clear}{black}want to play against the computer? ";:GOSUB131 15 IFx$="n"THENPRINT"{white}no":GOTO37 17 IFx$<>"y"THENGOSUB131:GOTO15 19 PRINT"{white}yes":f2=3:PRINT"{down}{black}should i play my best? ";:GOSUB131 21 IFx$="n"THENPRINT"{white}no":GOTO27 23 IFx$<>"y"THENGOSUB131:GOTO21 25 PRINT"{white}yes":s2=2:s4=1:s5=-1.5 27 PRINT"{down*3}{black}black always goes first." 28 PRINT"{down}{white}do you want black or white? {black}";:GOSUB131 29 IFx$="b"THENPRINTn$(0):n$(2)="computer":GOTO35 31 IFx$<>"w"THENGOSUB131:GOTO29 33 PRINTn$(2):n$(0)="computer":f2=2 35 GOSUB329 37 PRINT"{clear}";:GOSUB107:IFf2=2THENPRINT"{white}ok, i am thinking.{black}" 39 t1=b:t2=w:ONf2GOSUB151,181,151 40 GOSUB225:IFz=1THEN43 41 bc=bc+s1+1:wc=wc-s1:n1=n1+1:GOSUB107 43 IFwc=0ORn1=64ORz<0THEN53 45 t1=w:t2=b:ON f2GOSUB151,151,181:GOSUB225:IFz=1THEN49 47 wc=wc+s1+1:bc=bc-s1:n1=n1+1:GOSUB107 49 IFbc=0ORn1=64ORz<0THEN53 51 GOTO39 53 sn=sm 55 PRINTd$;e$:PRINTe$:PRINTe$:PRINTd$;e$"{black}black has"bc"{space*5}{white}white has"wc"{down}{red}" 57 IFbc=wcTHENPRINT"a tie !!":GOTO77 59 IFbc>wcTHENPRINT"black";:GOTO63 61 PRINT"white"; 63 PRINT" wins.":cc=bc-wc:IFcc<0THENcc=-cc 65 cc=(64*cc)/n1:PRINT"{black}that was a "; 67 IFcc<11THENPRINT"close game.":GOTO77 69 IFcc<25THENPRINT"good game.":GOTO77 71 IFcc<39THENPRINT"big win.":GOTO77 73 IFcc<53THENPRINT"walkover.":GOTO77 75 PRINT"perfect score." 77 PRINT"{white}want to see replay of the game? ";:GOSUB131:IFx$="n"THENPRINT"{black}no";:END 79 PRINT"{black}yes";:GOSUB233:GOSUB237:GOSUB55 81 PRINTd$"{down*4}"e$"do you want to start the game ? "; 83 GOSUB131:IFx$="y"THENPRINT"{reverse on}yes";:GOSUB329:PRINT"{clear}";:GOTO11 85 PRINT"{reverse on}no";:END 87 f1=0:FORi1=-1TO1:FORj1=-1TO1:IFa(i+i1,j+j1)=t2THEN91 89 NEXTj1,i1:RETURN 91 f1=1:RETURN 93 s1=0:FORk=0TO7:i5=i4(k):j5=j4(k):i6=i+i5:j6=j+j5:s3=0:IFa(i6,j6)<>t2THEN105 95 s3=s3+1:i6=i6+i5:j6=j6+j5:IFa(i6,j6)=t1THEN101 97 IFa(i6,j6)=0 THEN105 99 GOTO95 101 s1=s1+s3:IFu<>1THEN105 103 i6=i:j6=j:FORk1=0TOs3:a(i6,j6)=t1:i6=i6+i5:j6=j6+j5:NEXTk1 105 NEXTk:RETURN 107 PRINT"{home}{red} 108 x$="{space*2}{cm q}{sh asterisk*3}{sh +}{sh asterisk*3}{sh +}{sh asterisk*3}{sh +}{sh asterisk*3}{sh +}{sh asterisk*3}{sh +}{sh asterisk*3}{sh +}{sh asterisk*3}{sh +}{sh asterisk*3}{cm w}" 109 PRINT"{space*4}a{space*3}b{space*3}c{space*3}d{space*3}e{space*3}f{space*3}g{space*3}h" 111 PRINT"{space*2}{cm a}{sh asterisk*3}{cm r}{sh asterisk*3}{cm r}{sh asterisk*3}{cm r}{sh asterisk*3}{cm r}{sh asterisk*3}{cm r}{sh asterisk*3}{cm r}{sh asterisk*3}{cm r}{sh asterisk*3}{cm s} 112 FORi=1TO8:PRINTMID$(n$,i,1)" {sh -} "; 113 FORj=1TO8:PRINTMID$(m$,(a(i,j)+2)*2,2)" {red}{sh -} ";:NEXTj:PRINT:IFi<>8THENPRINTx$ 115 NEXTi:PRINT"{space*2}{cm z}{sh asterisk*3}{cm e}{sh asterisk*3}{cm e}{sh asterisk*3}{cm e}{sh asterisk*3}{cm e}{sh asterisk*3}{cm e}{sh asterisk*3}{cm e}{sh asterisk*3}{cm e}{sh asterisk*3}{cm x}{down}{black}":RETURN 117 i=-1:j=i:FORk=1TO2:GOSUB131:g=ASC(x$):IF47""THENRETURN 137 IFl<20THEN135 139 PRINT" {left}"; 141 l=l+1:GETx$:IFx$<>""THENRETURN 143 IFl<40THEN141 145 GOTO133 147 PRINTd$"{down}"e$"{white}bad move{black} input row {white}0-8{black} and col {white}a-h{black}":PRINTe$; 149 GOSUB251:IFf1>1THENGOSUB107 151 REM move input subroutine 153 PRINTd$;e$"{white}input "n$(t1+1)"'s move {>*8} ";:GOSUB117 155 IFi<0ORj<0ORi>8ORj>8THEN147 157 IFi<>0THEN167 159 g2=s2:g4=s4:g5=s5:s2=0:s4=0:s5=0:GOSUB197:s2=g2:s4=g4:s5=g5:IFb1<0THEN163 161 PRINTd$"{down}"e$"no forfeit allowed. "n$(t1+1)"{reverse off} has a move.":GOTO177 163 IFz=1THENz=-z:RETURN 165 z=1:RETURN 167 IF a(i,j)=0THEN171 169 PRINTd$"{down}"e$"sorry{.*3}square occupied by "n$(a(i,j)+1):GOTO177 171 GOSUB87:IFf1=1THEN175 173 PRINTd$"{down}"e$"sorry{.*3}not next to "n$(t2+1):GOTO177 175 u=-1:GOSUB93:IFs1>0THEN179 176 PRINTd$"{down}"e$"sorry{.*3}does not contain "n$(t2+1) 177 PRINTe$:GOTO153 179 GOTO193 181 GOSUB197:IFb1>0THEN191 183 IFs5=0THEN187 185 s5=0:GOTO181 187 PRINTd$"{down}{red}"e$n$(t1+1)" forfeits move":IFz=1THENz=-z:RETURN 189 z=1:RETURN 191 i=i3:j=j3 193 FORl=1TO32:PRINTCHR$(20);:NEXT 194 PRINTd$"{down}{red}"e$;n$(t1+1)" moves to "CHR$(i+48)" "CHR$(j+64):GOSUB125:z=0:u=1 195 GOSUB93:PRINTd$"{black}{down*2}"e$;n$(t1+1)" takes"s1"of "n$(t2+1)"'s pieces":RETURN 197 b1=-1:i3=0:j3=0:FORi=1TO8:FORj=1TO8:IFa(i,j)<>0THEN223 199 GOSUB87:IFf1=0THEN223 201 u=-1:GOSUB93:IFs1=0THEN223 203 IF(i=1)OR(i=8)THENs1=s1+s2 205 IF(j=1)OR(j=8)THENs1=s1+s2 207 IF(i=2)OR(i=7)THENs1=s1+s5 209 IF(j=2)OR(j=7)THENs1=s1+s5 211 IF(i=3)OR(i=6)THENs1=s1+s4 213 IF(j=3)OR(j=6)THENs1=s1+s4 215 IFs1b1THEN221 219 IFRND(1)>0.5THEN223 221 b1=s1:i3=i:j3=j 223 NEXTj,i:RETURN 225 l=((t1+1)*64)AND128:IFz<>0THENl=lOR64:GOTO229 227 l=lOR((((i-1)*8)AND56)OR(j-1AND7)) 229 POKEsm,l:sm=sm+1:RETURN 231 bc=2:wc=bc:n1=4 233 FORi=0TO9:FORj=0TO9:a(i,j)=0:NEXTj,i:a(4,4)=w:a(5,5)=w:a(4,5)=b:a(5,4)=b 235 z=0:f2=1:s2=0:s4=0:s5=0:sm=826:RETURN 237 PRINT"{clear}{black}{space*3}replay"SPC(21)"replay":p=3:FORd=826TOsn-1:GOSUB107:l=PEEK(d) 239 i=1+(lAND56)/8:j=1+(lAND7):t1=b:t2=w:IFlAND128THENt1=w:t2=b 241 IF(lAND64)=0THEN245 243 PRINTd$e$:PRINTe$:PRINTe$:PRINTd$"{down}"n$(t1+1)"{reverse off} forfeits a move":FORl=1TO2000:NEXT:GOTO247 245 GOSUB193 247 NEXT 249 GOTO107 251 f1=0:PRINT"do you want instructions? ";:GOSUB131 253 IFx$="n"THENPRINT"{black}no";:RETURN 255 IFx$<>"y"THENGOSUB131:GOTO253 257 PRINT"{black}yes";:FORf1=1TO1000:NEXT 259 PRINT"{clear}{white}othello{black} is played on an 8 x 8 grid with 261 PRINT"{down}rows {white}1{black} to {white}8{black} and columns {white}a{black} to {white}h{black}. 263 PRINT"{down}the object of the game is to capture as" 265 PRINT"{down}many of the opponent's pieces as" 267 PRINT"{down}possible.{space*2}to capture pieces, place your 269 PRINT"piece so that a horizontal, vertical 271 PRINT"{down}or diagonal line of your opponent's 273 PRINT"{down}pieces is contained by your's. 277 PRINT"{red}{down}{space*3}{sh asterisk*3}{sh +}{sh asterisk*3}{sh +}{sh asterisk*3}{sh +}{sh asterisk*3}{sh +}{sh asterisk*3}{sh +}{sh asterisk*3}" 279 PRINT"{space*6}{sh -} {black}Q{red} {sh -} {black}Q{red} {sh -} {black}Q{red} {sh -} {black}Q{red} {sh -} {white}Q{red}" 281 PRINT"{space*3}{sh asterisk*3}{sh +}{sh asterisk*3}{sh +}{sh asterisk*3}{sh +}{sh asterisk*3}{sh +}{sh asterisk*3}{sh +}{sh asterisk*3}" 282 PRINT"{down}{white}press {reverse on}shift{reverse off}{up}{left*5}{cm @*5}{down} to continue.{up*2}":WAIT653,1 283 PRINT"{space*40}"; 284 PRINT"{white}{black}white contains black and captures four 285 PRINT"of black's pieces." 287 PRINT"{down}{white}press {reverse on}shift{reverse off}{up}{left*5}{cm @*5}{down} to continue.{up}" 289 PRINT"{up*6}{right*4}"; 291 i=1:WAIT653,1,1 293 PRINT"Q{left}";:FORl=1TO30:IFPEEK(653)=1THENi=0 295 NEXT:PRINT" {left}";:FORl=1TO30:IFPEEK(653)=1THENi=0 297 NEXT:IFiTHEN293 299 PRINT"Q {red}{sh -}{sh space}{white}Q {red}{sh -} {white}Q {red}{sh -} {white}Q {red}{sh -} {white}Q{down*4}" 300 WAIT653,1,1:WAIT653,1 301 PRINT"{clear}{black}make your move by entering a number {white}1-8 303 PRINT"{down}{black}for the row and a letter {white}a-h{black} for the{space*4}{down}column. 307 PRINT"{down*3}you must capture at least one piece per 311 PRINT"{down}turn.{space*2}if this is not possible, you 313 PRINT"{down}forfeit your turn (enter {white}0{right}a{black} for your 315 PRINT"{down}move). 317 PRINT"{down*3}{white}press {reverse on}shift{reverse off}{up}{left*5}{cm @*5}{down} to continue.{up}" 321 WAIT653,1,1:WAIT653,1 323 PRINT"{clear}";:RETURN 325 RETURN 327 DATA 0,1,-1,1,-1,0,-1,-1,0,-1,1,-1,1,0,1,1 329 FORl=1TO1000:NEXT:RETURN stop tok64 (bastext 1.2)