0 REM :othello:jt [71435,516]:04/29/84:with graphic scroll removed by Don Zeikel [75775,1430]:04/23/85 -:modifications by James Shelton [76656,2115]:6/24/87 in lines 1-2 1 REM Labeled the columns a through h, (keeping the no-scrool revision already added), eliminated the spaces between columns in the gameboard, added a continually updated scoreboard, modified forfeit routine 2 REM changed X-O game pieces to graphic block characters, eliminated need to press comma on input, added several beeps, added a poke to prevent label key from knocking out the bottom line of display and reformatted the command section 3 SCREEN,0:POKE64173,0:CLEAR:CLS:PRINT@87,"GREETINGS FROM OTHELLO":FORI=1TO200:NEXT:PRINT:INPUT"what is your name please";Z$(4):Z$(4)=LEFT$(Z$(4),7):IFZ$(4)=""THENZ$(4)="human" 4 IFZ$(4)<>"computr"THEN Z$(7)="computr"ELSEZ$(7)="OTHELLO" 5 ONKEY GOSUB200,,,,,,,200 6 KEY(1)ON:KEY(8)ON:GOSUB136:GOSUB126:GOTO44 7 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@20,Z$(9);:PRINT@60,Z$(9);:PRINT@140,"I FORFEIT MY MOVE ":BEEP:BEEP:PRINT@180,K$;:PRINT@220,Z$(9);:PRINT@260,Z$(9); 36 IFZ=1THEN72ELSEZ=1:GOTO44 38 I=I3:J=J3:U=1:GOSUB108:C1=C1+S1+1:H1=H1-S1:N1=N1+1:GOSUB126:Z=0:PRINT@20,"I MOVED TO "I3;C$(J3) 40 PRINT@60,"THAT GIVES ME "S1;:PRINT@100,"OF YOUR PIECES"; 42 IFH1=0THEN72ELSEIFN1=64THEN72 44 T1=H:T2=C:PRINT@180,"YOUR MOVE - ROW/COL":PRINT@300,"don't enter a comma";:PRINT@220,"";:INPUTX$:PRINT@300,Z$(9); 45 I$=LEFT$(X$,1):X$=RIGHT$(X$,1):IF(I$<"1"ORI$>"8")OR(X$<"a"ORX$>"h")THEN48ELSE56 48 PRINT@180,"DO YOU FORFEIT... ";:PRINT@260,K$;:PRINT@220,"g-game/ m-move";:INPUTX$ 50 IFX$="g"THEN72ELSEIFX$="m"THENPRINT@180,Z$(9);:PRINT@220,Z$(9);:PRINT@260,Z$(0);:GOTO7ELSEPRINT@180,Z$(9);:PRINT@220,Z$(9);:GOSUB126:GOTO44 56 I=VAL(I$):FORJ=1TO8:IFC$(J)=X$THEN60ELSENEXT 58 GOTO44 60 IFA(I,J)=0THEN62ELSEGOSUB105:PRINT@60,"SPOT OCCUPIED";:GOTO44 62 GOSUB102:IFF1=1THEN64ELSEGOSUB105:PRINT@60,"MUST BE NEXT TO";:PRINT@100,"ONE OF MY PIECES";:GOTO44 64 U=-1:GOSUB108:IFS1>0THEN66ELSEGOSUB105:PRINT@60,"DOESN'T FLANK A ROW ";:GOTO44 66 Z=0:U=1:GOSUB108:H1=H1+S1+1:C1=C1-S1:N1=N1+1:GOSUB126:PRINT@20,"Good Move ";Z$(4);:PRINT@60,"THAT GIVES YOU ";:PRINT@100,S1" OF MY PIECES";:PRINT@260,Z$(0); 68 IFC1=0THEN72ELSEIFN1=64THEN72ELSE7 70 REM END OF GAME WRAPUP 72 GOSUB126:PRINT@100,K$;:IFH1=C1THEN76ELSEIFH1>C1THEN78 74 PRINT@140,"SORRY, I WON.";Z$(6);: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,"WALKAWAY":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"THEN3ELSEPRINT@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 105 PRINT@60,Z$(9);:PRINT@100,Z$(9);:PRINT@20,"illegal move ";:BEEP: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 126 FORX=0TO5:PRINT@X*40+20,Z$(9);:NEXT:PRINT@260,Z$(9);:Z$(5)=STR$(H1)+CHR$(239):Z$(8)=STR$(C1)+CHR$(255):FORX=1TO8:PRINT:PRINT@(X-1)*40,X;:FORY=1TO8:PRINT""; 128 PRINTD$(Y,(A(X,Y)+1)); 130 NEXT:PRINT" ";Z$(X);:NEXT:RETURN 132 REM mod100 random subroutine 134 FORQR=1TOINT(((VAL(RIGHT$(TIME$,2))))*((VAL(MID$(TIME$,4,2)))/2)*(VAL(MID$(DATE$,4,2)))/100):UQ=RND(1):NEXT:RETURN 136 PRINT@160,SPACE$(7);"one moment please,";:REM init pgm 138 DEFINTA-Z:K$=CHR$(27)+CHR$(75):DIMA(9,9),I4(8),J4(8),C$(8),D$(9,2):Z$(0)="thinking...":Z$(1)="GAME OF":Z$(2)="OTHELLO":Z$(3)=STRING$(7,42):Z$(6)=SPACE$(7):Z$(9)=SPACE$(19):GOSUB132 140 F2=0:S2=2:B=-1:W=+1:FORY=1TO8:D$(Y,(B+1))=CHR$(239):D$(Y,(0+1))=CHR$(Y+96):D$(Y,(W+1))=CHR$(255):NEXT 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:CLS:RETURN 200 MENU