0 REM :othello:jt [CIS 71435,516]:04/29/84:with graphic scroll removed by Don Zeikel [CIS 75775,1430 Delphi ZEIKEL]:revised 04/23/85 1 'NEC 8201A adaptation for GEnie's Laptops RoundTable by Dave Thomas 7/26/87 2 'Remember: CAPS LOCK OFF! Enter moves as two characters -> 1f or 3g or 7a etc. 3 SCREEN,0:CLS:PRINT:PRINT" Greetings from OTHELLO":FORI=1TO1500:NEXT:CLS 4 CLEAR:GOSUB136:GOSUB126: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!>.5THEN30 28 B1=S1:I3=I:J3=J 30 NEXT 32 I=I+1:IFI>8THEN34ELSE8 34 IFB1>0THEN38ELSELOCATE20,3:PRINT"I forfeit my move ":LOCATE20,4:PRINTK$ 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:LOCATE20,3:PRINT"I moved to "I3","C$(J3) 40 LOCATE20,5:PRINT"That gives me "S1;:LOCATE20,6:PRINT"of your pieces" 42 IFH1=0THEN72ELSEIFN1=64THEN72 44 T1=H:T2=C:LOCATE20,0:PRINT"Your move - Row,Col:":LOCATE20,1:PRINT"(1a to 8h)";:A$=INPUT$(2):I=VAL(LEFT$(A$,1)):A$=RIGHT$(A$,1) 46 IFI<0THEN44ELSEIFI>8THEN44ELSEIFI<>0THEN56 48 LOCATE20,5:PRINT"Do you forfeit? ";:LOCATE20,6:PRINTK$;:LOCATE20,6:PRINT" (y/n)";:X$=INPUT$(1) 50 IFX$<>"y"THEN44 51 STOP 52 IFZ=1THEN72 54 Z=1:GOTO6 56 FORJ=1TO8:IFC$(J)=A$THEN60ELSENEXT 58 GOTO44 60 IFA(I,J)=0THEN62ELSELOCATE20,2:PRINT"Sorry spot OCCUPIED":GOTO44 62 GOSUB102:IFF1=1THEN64ELSELOCATE20,2:PRINT"Sorry must be next";:LOCATE20,3:PRINT"to one of my pieces";:GOTO44 64 U=-1:GOSUB108:IFS1>0THEN66ELSELOCATE20,2:PRINT"Doesn't flank a row ":GOTO44 66 Z=0:U=1:GOSUB108:H1=H1+S1+1:C1=C1-S1:N1=N1+1:GOSUB126:LOCATE20,0:PRINT"That gives you ";:LOCATE20,1:PRINTS1"of my pieces"; 67 LOCATE20,3:PRINT"You have"H1"pieces":LOCATE20,4:PRINT"I have"C1"pieces" 68 IFC1=0THEN72ELSEIFN1=64THEN72ELSE6 70 REM END OF GAME WRAPUP 72 GOSUB126:LOCATE20,0:PRINT"You have"H1"pieces";:LOCATE20,1:PRINT"I have"C1"pieces"; 73 LOCATE20,2:PRINTK$;:IFH1=C1THEN76ELSEIFH1>C1THEN78 74 LOCATE20,3:PRINT"Sorry, I won. ":GOTO80 76 LOCATE20,3:PRINT"A TIE!!!":GOTO98 78 LOCATE20,3:PRINT"You WON !!!" 80 C1=C1-H1:IFC1>0THEN82ELSEC1=-C1 82 C1=(64*C1)/N1:LOCATE20,4:PRINT"That was a "; 84 IFC1<11THEN96ELSEIFC1<25THEN94ELSEIFC1<39THEN92 86 IFC1<53THEN90 88 LOCATE20,5:PRINT"PERFECT game":GOTO98 90 LOCATE20,5:PRINT"WALKAWAY":GOTO98 92 LOCATE20,5:PRINT"FIGHT":GOTO98 94 LOCATE20,5:PRINT"HOT game":GOTO98 96 LOCATE20,5:PRINT"SQUEAKER !!":GOTO98 98 LOCATE20,6:PRINT"Play again ";:X$=INPUT$(1):IFX$="y"THEN4ELSELOCATE20,7:PRINT"Thanks for playing"; 100 FORI1=1TO1000: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 126 FORX=0TO5:LOCATE20,X:PRINTSPACE$(20);:NEXT:LOCATE20,6:PRINTSPACE$(19);:FORX=1TO8:PRINT:LOCATE0,X-1:PRINTX;:FORY=1TO8:PRINT" "; 128 PRINTD$(A(X,Y)+1); 130 NEXT:NEXT:RETURN 132 REM Randomize 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 REM init pgm 138 CLS:DEFINTA-Z:K$=CHR$(27)+CHR$(75):DIMA(9,9),I4(8),J4(8),C$(8),D$(2):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