2 REM :othello:jt:04/29/84:v(0.0) 4 CLEAR:GOSUB136:GOSUB124:GOTO44 6 B1=-1:I3=0:J3=0:T1=C:T2=H:I=1 8 FORJ=1TO8 10 IFA(I,J)<>0THEN30:GOSUB102 12 IFF1=0THEN30 14 U=-1:GOSUB108 16 IFS1=0THEN30 18 IF(I-1)*(I-8)<>0THEN20ELSES1=S1+S2 20 IF(J-1)*(J-8)<>0THEN22ELSES1=S1+S2 22 IFS1B1THEN28 26 GOSUB132:IFR!>0.5THEN30 28 B1=S1:I3=I:J3=J 30 NEXT 32 I=I+1:IFI>8THEN34ELSE8 34 IFB1>0THEN38ELSEPRINT@140,"I FORFEIT MY MOVE ":PRINT@180,K$ 36 IFZ=1THEN72ELSEZ=1:GOTO44 38 I=I3:J=J3:U=1:GOSUB108:C1=C1+S1+1:H1=H1-S1:N1=N1+1:GOSUB124:Z=0:PRINT@140,"I MOVED TO "I3","C$(J3) 40 PRINT@220,"THAT GIVES ME "S1;:PRINT@260,"OF YOUR PIECES" 42 IFH1=0THEN72ELSEIFN1=64THEN72 44 T1=H:T2=C:PRINT@20,"YOUR MOVE - ROW,COL:":PRINT@60,;:INPUTI,X$ 46 IFI<0THEN44ELSEIFI>8THEN44ELSEIFI<>0THEN56 48 PRINT@220,"DO YOU FORFEIT? ";:PRINT@260,K$;:PRINT@260," (Y N)";:INPUTX$ 50 IFX$<>"y"THEN44 52 IFZ=1THEN72 54 Z=1:GOTO6 56 FORJ=1TO8:IFC$(J)=X$THEN60ELSENEXT 58 GOTO44 60 IFA(I,J)=0THEN62ELSEPRINT@100,"SORRY SPOT OCCUPIED":GOTO44 62 GOSUB102:IFF1=1THEN64ELSEPRINT@100,"SORRY MUST BE NEXT";:PRINT@140,"TO ONE OF MY PIECES";:GOTO44 64 U=-1:GOSUB108:IFS1>0THEN66ELSEPRINT@100,"DOESN'T FLANK A ROW ":GOTO44 66 Z=0:U=1:GOSUB108:H1=H1+S1+1:C1=C1-S1:N1=N1+1:GOSUB124:PRINT@20,"THAT GIVES YOU ";:PRINT@60,S1" OF MY PIECES"; 67 PRINT@140,"YOU HAVE"H1" PIECES":PRINT@180,"I HAVE "C1" PIECES" 68 IFC1=0THEN72ELSEIFN1=64THEN72ELSE6 70 REM END OF GAME WRAPUP 72 GOSUB124:PRINT@20,"YOU HAVE"H1" PIECES";:PRINT@60,"I HAVE "C1" PIECES"; 73 PRINT@100,K$;:IFH1=C1THEN76ELSEIFH1>C1THEN78 74 PRINT@140,"SORRY, I WON. ":GOTO80 76 PRINT@140,"A TIE!!!":GOTO98 78 PRINT@140,"YOU WON !!!" 80 C1=C1-H1:IFC1>0THEN82ELSEC1=-C1 82 C1=(64*C1)/N1:PRINT@180,"THAT WAS A "; 84 IFC1<11THEN96ELSEIFC1<25THEN94ELSEIFC1<39THEN92 86 IFC1<53THEN90 88 PRINT@220,"PERFECT GAME":GOTO98 90 PRINT@220,"WALKWAY":GOTO98 92 PRINT@220,"FIGHT":GOTO98 94 PRINT@220,"HOT GAME":GOTO98 96 PRINT@220,"SQUEAKER !!":GOTO98 98 PRINT@260,"";:INPUT"PLAY AGAIN ";X$:IFX$="y"THEN4ELSEPRINT@300,"THANKS FOR PLAYING": 100 FORI1=1TO50:NEXT:MENU 102 FORI1=-1TO1:FORJ1=-1TO1:IFA(I+I1,J+J1)=T2THENF1=1:RETURNELSENEXT:NEXT 104 F1=0:RETURN 106 REM SUB SCORE & UPDATE 108 S1=0:FORK=1TO8:I5=I4(K):J5=J4(K):I6=I+I5:J6=J+J5 110 S3=0:IFA(I6,J6)<>T2THEN120 112 S3=S3+1:I6=I6+I5:J6=J6+J5:IFA(I6,J6)=T1THEN116 114 IFA(I6,J6)=0THEN120ELSE112 116 S1=S1+S3:IFU<>1THEN120ELSEI6=I:J6=J 118 FORK1=0TOS3:A(I6,J6)=T1:I6=I6+I5:J6=J6+J5:NEXT 120 NEXT:RETURN 122 REM SUB PRINT BOARD 124 CLS:PRINT" A B C D E F G H"; 126 FORX=1TO8:PRINT:PRINTX;:FORY=1TO8:PRINT" "; 128 PRINTD$(A(X,Y)+1); 130 NEXT:NEXT:RETURN 132 REM mod100 random subroutine 134 FORRN=1TOVAL(RIGHT$(TIME$,2)):R!=RND(0):NEXT:RETURN 136 REM init pgm 138 CLS:DEFINTA-Z:K$=CHR$(27)+CHR$(75):DIMA(9,9),I4(8),J4(8),C$(8),D$(2):PRINT"GREETINGS FROM OTHELLO":GOSUB132 140 F2=0:S2=2:B=-1:W=+1:D$(B+1)="X":D$(0+1)=".":D$(W+1)="O" 142 FORK=1TO8:READI4(K):NEXT 144 DATA0,-1,-1,-1,0,1,1,1 146 FORK=1TO8:READJ4(K):NEXT 148 DATA1,1,0,-1,-1,-1,0,1 150 FORK=1TO8:READC$(K):NEXT 152 DATAa,b,c,d,e,f,g,h 154 FORP=0TO9:FORQ=0TO9:A(P,Q)=0:NEXT:NEXT 156 A(4,4)=W:A(5,5)=W:A(4,5)=B:A(5,4)=B:C1=2:H1=2:N1=4:Z=0:C=W:H=B:RETURN