0 'NEWOTH.BA... a rewrite of OTHELO.BA J.T. April/84 1 'CLUB 100 Library - 415/939-1246 BBS, 937-5039 NEWSLETTER, 932-8856 VOICE 2 'With graphic scroll removed by Don Zeikel revised 04/23/85 3 CLS:POKE63038,191:CALL17001:PRINT@120,SPACE$(9)"GREETINGS FROM OTHELLO"SPACE$(9):CALL17006:FORI=1TO700:NEXT:CLS 4 CLEAR:ONKEYGOSUB58,,,,,,,58:KEY(1)ON:KEY(8)ON:GOSUB55:GOSUB52:GOTO19 5 B1=-1:I3=0:J3=0:T1=C:T2=H:I=1 6 FORJ=1TO8:IFA(I,J)<>0THEN15:GOSUB44 7 IFF1=0THEN15 8 U=-1:GOSUB46:IFS1=0THEN15 9 IF(I-1)*(I-8)<>0THEN10ELSES1=S1+S2 10 IF(J-1)*(J-8)<>0THEN11ELSES1=S1+S2 11 IFS1B1THEN14 13 GOSUB53:IFR!>0.5THEN15 14 B1=S1:I3=I:J3=J 15 NEXT:I=I+1:IFI>8THEN16ELSE6 16 IFB1>0THEN18ELSEPRINT@140,"I FORFEIT MY MOVE ":PRINT@180,K$ 17 IFZ=1THEN30ELSEZ=1:GOTO19 18 I=I3:J=J3:U=1:GOSUB46:C1=C1+S1+1:H1=H1-S1:N1=N1+1:GOSUB52:Z=0:PRINT@140,"I MOVED TO "I3","C$(J3):PRINT@220,"THAT GIVES ME "S1;:PRINT@260,"OF YOUR PIECES":IFH1=0THEN30ELSEIFN1=64THEN30 19 T1=H:T2=C:PRINT@20,"YOUR MOVE - ROW,COL:":PRINT@60,;:INPUTI,X$:IFI<0THEN19ELSEIFI>8THEN19ELSEIFI<>0THEN23 20 PRINT@220,"DO YOU FORFEIT? ";:PRINT@260,K$;:PRINT@260," (Y N)";:INPUTX$:IFX$<>"y"THEN19 21 IFZ=1THEN30 22 Z=1:GOTO5 23 FORJ=1TO8:IFC$(J)=X$THEN25ELSENEXT 24 GOTO19 25 IFA(I,J)=0THEN26ELSEPRINT@100,"SORRY SPOT OCCUPIED":GOTO19 26 GOSUB44:IFF1=1THEN27ELSEPRINT@100,"SORRY MUST BE NEXT";:PRINT@140,"TO ONE OF MY PIECES";:GOTO19 27 U=-1:GOSUB46:IFS1>0THEN28ELSEPRINT@100,"DOESN'T FLANK A ROW ":GOTO19 28 Z=0:U=1:GOSUB46:H1=H1+S1+1:C1=C1-S1:N1=N1+1:GOSUB52:PRINT@20,"THAT GIVES YOU ";:PRINT@60,S1" OF MY PIECES";:PRINT@140,"YOU HAVE"H1" PIECES":PRINT@180,"I HAVE "C1" PIECES":IFC1=0THEN30ELSEIFN1=64THEN30ELSE5 29 'END OF GAME WRAPUP 30 FORX=1TO2000:NEXT:GOSUB52:PRINT@20,"YOU HAVE"H1" PIECES";:PRINT@60,"I HAVE "C1" PIECES";:PRINT@100,K$;:IFH1=C1THEN32ELSEIFH1>C1THEN33 31 PRINT@140,"SORRY, I WON. ":GOTO34 32 PRINT@140,"A TIE!!!":GOTO42 33 PRINT@140,"YOU WON !!!" 34 C1=C1-H1:IFC1>0THEN35ELSEC1=-C1 35 C1=(64*C1)/N1:PRINT@180,"THAT WAS A ";:IFC1<11THEN41ELSEIFC1<25THEN40ELSEIFC1<39THEN39 36 IFC1<53THEN38 37 PRINT@220,"PERFECT GAME":GOTO42 38 PRINT@220,"WALKAWAY":GOTO42 39 PRINT@220,"FIGHT":GOTO42 40 PRINT@220,"HOT GAME":GOTO42 41 PRINT@220,"SQUEAKER !!":GOTO42 42 PRINT@260,"";:INPUT"PLAY AGAIN ";X$:IFX$="y"THEN4ELSECALL17001:PRINT@300," THANKS FOR PLAYING "; 43 FORI1=1TO50:NEXT:MENU 44 FORI1=-1TO1:FORJ1=-1TO1:IFA(I+I1,J+J1)=T2THENF1=1:RETURNELSENEXT:NEXT 45 F1=0:RETURN:'SUB SCORE & UPDATE 46 S1=0:FORK=1TO8:I5=I4(K):J5=J4(K):I6=I+I5:J6=J+J5:S3=0:IFA(I6,J6)<>T2THEN51 47 S3=S3+1:I6=I6+I5:J6=J6+J5:IFA(I6,J6)=T1THEN49 48 IFA(I6,J6)=0THEN51ELSE47 49 S1=S1+S3:IFU<>1THEN51ELSEI6=I:J6=J 50 FORK1=0TOS3:A(I6,J6)=T1:I6=I6+I5:J6=J6+J5:NEXT 51 NEXT:RETURN:'SUB PRINT BOARD 52 FORX=0TO5:PRINT@X*40+20,SPACE$(20);:NEXT:PRINT@260,SPACE$(19);:FORX=1TO8:PRINT:PRINT@(X-1)*40,X;:FORY=1TO8:PRINT" ";:PRINTD$(A(X,Y)+1);:NEXT:NEXT:RETURN 53 'mod100 random subroutine 54 FORQR=1TOINT(((VAL(RIGHT$(TIME$,2))))*((VAL(MID$(TIME$,4,2)))/2)*(VAL(MID$(DATE$,4,2)))/100):UQ=RND(1):NEXT:RETURN 55 'init pgm 56 CLS:DEFINTA-Z:K$=CHR$(27)+CHR$(75):DIMA(9,9),I4(8),J4(8),C$(8),D$(2):GOSUB53:F2=0:S2=2:B=-1:W=+1:D$(B+1)="X":D$(0+1)=".":D$(W+1)="O":FORK=1TO8:READI4(K):NEXT:DATA0,-1,-1,-1,0,1,1,1:FORK=1TO8:READJ4(K):NEXT:DATA1,1,0,-1,-1,-1,0,1 57 FORK=1TO8:READC$(K):NEXT:DATAa,b,c,d,e,f,g,h:FORP=0TO9:FORQ=0TO9:A(P,Q)=0:NEXT:NEXT: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 58 MENU