1 'Othello for the Tandy 200. 2 'Modified from the version in 3 'GameSig's DL7; this version makes 4 'use of the 200's graphics. 5 'Make sure the 'CAPS LOCK' key is 6 'down. 7 'Modified by John Menichelli 8 '[72226,1652] 10 CLS:PRINT@92,"*** OTHELLO ***":PRINT@367,"Modified for the Tandy 200":PRINT@419,"by":PRINT@452,"John Menichelli":PRINT@494,"[72226,1652]" 20 FOR K=1 TO 1500:NEXT 25 DIM A(9,9),I4(8),J4(8),C$(8),D$(2),X(9), Y(9) 30 GOSUB 3000 32 FOR I=0 TO 9:FOR J=0 TO 9:A(I,J)=0:NEXT J:NEXT I 34 A(4,4)=W:A(5,5)=W:A(4,5)=B:A(5,4)=B 36 C1=2:H1=2:N1=4:Z=0 40 CLS 50 PRINT@0,"Should I play my best strategy"; 70 S2=0 80 INPUT X$ 90 IF LEFT$(X$,1)="N" THEN 420 100 IF LEFT$(X$,1)<>"Y" THEN 50 110 S2=2 420 PRINT@80,"Do you want to have Black or White "; 430 C=W:H=B 450 INPUT X$ 460 IF LEFT$(X$,1)="B" THEN 500 470 IF LEFT$(X$,1)<> "W" THEN 420 480 C=B:H=W 500 PRINT@160,"Do you want to go first"; 510 INPUT X$ 520 IF LEFT$(X$,1)="N" THEN 575 530 IF LEFT$(X$,1)<>"Y" THEN 500 535 GOSUB 2500 540 GOSUB 2230 550 GOTO 1080 560 IF F2=0 THEN 580 570 INPUT X$ 575 GOSUB2500:GOSUB 2230 580 GOSUB2800:PRINT@560,"(I'm thinking....)":B1=-1 590 I3=0:J3=0:T1=C:T2=H 630 FOR I=1 TO 8 640 FOR J=1 TO 8 650 IF A(I,J)<>0 THEN 820 660 GOSUB 1890 670 IF F1=0 THEN 820 680 U=-1 690 GOSUB 1980 700 IF S1=0 THEN 820 710 IF (I-1)*(I-8)<>0 THEN 730 720 S1=S1+S2 730 IF (J-1)*(J-8)<>0 THEN 750 740 S1=S1+S2 750 IF S1B1 THEN 790 770 R=RND(1) 780 IF R>.5 THEN 820 790 B1=S1:I3=I:J3=J 820 NEXT J 830 NEXT I 840 IF B1>0 THEN 890 850 GOSUB2800:PRINT@560, "I have to forfeit my move":GOSUB 2400 860 IF Z=1 THEN 1510 870 Z=1 880 GOTO 1080 890 Z=0 900 GOSUB2800:PRINT@560,"I will move to "; 910 PRINT J3; 920 PRINT ", "; 930 PRINT C$(I3); 950 I=I3 960 J=J3 970 U=1 980 GOSUB 1980 990 C1=C1+S1+1 1000 H1=H1-S1 1010 N1=N1+1 1020 GOSUB2800:PRINT@560,"That gives me "; 1030 PRINT S1; 1040 PRINT " of your pieces":GOSUB 2400 1050 GOSUB 2230 1060 IF H1=0 THEN 1510 1070 IF N1=64 THEN 1510 1080 T1=H 1090 T2=C 1100 GOSUB2800:PRINT@560, "Your move -- (Row,Col) "; 1110 INPUT J,X$ 1120 IF J<0 THEN 1110 1130 IF J>8 THEN 1110 1140 IF J<>0 THEN 1210 1150 GOSUB2800:PRINT@560,"Are you forfeiting your turn"; 1160 INPUT X$ 1170 IF LEFT$(X$,1)<>"Y" THEN 1100 1180 IF Z=1 THEN 1510 1190 Z=1 1200 GOTO 560 1210 FOR I=1 TO 8 1220 IF C$(I)=X$ THEN 1250 1230 NEXT I 1240 GOTO 1100 1250 IF A(I,J)=0 THEN 1280 1260 GOSUB2800:PRINT@560, "That square is occupied; try again";:GOSUB 2400 1270 GOTO 1100 1280 GOSUB 1890 1290 IF F1=1 THEN 1330 1300 GOSUB 2800:PRINT@560, "You are not next to one of my pieces;";:GOSUB2400 1310 GOSUB2800:PRINT@560, "Try again":GOSUB 2400 1320 GOTO 1100 1330 U=-1 1340 GOSUB 1980 1350 IF S1>0 THEN 1380 1360 GOSUB2800:PRINT@560,"That doesn't flank a row; try again";:GOSUB2400 1370 GOTO 1100 1380 Z=0 1390 GOSUB2800:PRINT@560,"That gives you "; 1400 PRINT S1; 1410 PRINT" of my pieces";:GOSUB2400 1420 U=1 1430 GOSUB 1980 1440 H1=H1+S1+1 1450 C1=C1-S1 1460 N1=N1+1 1470 GOSUB 2230 1480 IF C1=0 THEN 1510 1490 IF N1=64 THEN 1510 1500 GOTO 560 1510 CLS 1520 PRINT "You have "; 1530 PRINTH1; 1540 PRINT"pieces and I have "; 1550 PRINTC1; 1560 PRINT"pieces--"; 1570 IF H1=C1 THEN 1610 1580 IF H1>C1 THEN 1630 1590 PRINT "Sorry, I won that one." 1600 GOTO 1640 1610 PRINT" A TIE !!" 1620 GOTO 1820 1630 PRINT"You won !" 1640 C1=C1-H1 1650 IF C1>0 THEN 1670 1660 C1=-C1 1670 C1=(64*C1)/N1 1680 PRINT"That was a "; 1690 IF C1<11 THEN 1810 1700 IF C1<25 THEN 1790 1710 IF C1<39 THEN 1770 1720 IF C1<53 THEN 1750 1730 PRINT "Perfect game!!!" 1740 GOTO 1820 1750 PRINT"Walkaway" 1760 GOTO 1820 1770 PRINT"Fight." 1780 GOTO 1820 1790 PRINT"Hot game!" 1800 GOTO 1820 1810 PRINT"Squeaker ! !" 1820 PRINT 1830 PRINT "Do you want to play another game"; 1840 INPUT X$ 1850 IF LEFT$(X$,1)="Y" THEN 32 1860 IF LEFT$(X$,1)<>"N" THEN 1840 1870 PRINT "Thanks for playing 1880 GOTO 2390 1890 FOR I1=-1 TO 1 1900 FOR J1=-1 TO 1 1910 IF A(I+I1,J+J1)=T2 THEN 1960 1920 NEXT J1 1930 NEXT I1 1940 F1=0 1950 RETURN 1960 F1=1 1970 RETURN 1980 S1=0 1990 FOR K=1 TO 8 2000 I5=I4(K) 2010 J5=J4(K) 2020 I6=I+I5 2030 J6=J+J5 2040 S3=0 2050 IF A(I6,J6)<>T2 THEN 2210 2060 S3=S3+1 2070 I6=I6+I5 2080 J6=J6+J5 2090 IF A(I6,J6)=T1 THEN 2120 2100 IF A(I6,J6)=0 THEN 2210 2110 GOTO 2060 2120 S1=S1+S3 2130 IF U<>1 THEN 2210 2140 I6=I 2150 J6=J 2160 FOR K1=0 TO S3 2170 A(I6,J6)=T1 2180 I6=I6+I5 2190 J6=J6+J5 2200 NEXT K1 2210 NEXT K 2220 RETURN 2230 FOR I=1 TO 8:FOR J=1 TO 8 2240 IF D$(A(I,J)+1)="X" THEN GOSUB 2280 2250 IF D$(A(I,J)+1)="O" THEN GOSUB 2290 2260 NEXT J:NEXT I 2265 PRINT@110,N1-3:PRINT@190,C1;:PRINT@270,H1; 2270 RETURN 2280 LINE (X(I),Y(J))-(X(I)+8,Y(J)+8),1,BF:RETURN 2290 LINE(X(I)+1,Y(J)+1)-(X(I)+7,Y(J)+7),0,BF 2300 LINE(X(I),Y(J))-(X(I)+8,Y(J)+8),1,B:RETURN 2390 END 2399 'Delay loop 2400 FOR K=1 TO 1000:NEXT:RETURN 2499 'Board drawing routine 2500 CLS:PRINT@3,"A B C D E F G H" 2510 LINE (9,14)-(11,12):LINE-(11,18):LINE(9,18)-(13,18):' '1' 2520 PSET (9,25):LINE(10,24)-(12,24):LINE(13,25)-(13,26):LINE-(11,28):LINE-(10,28):LINE-(9,29):LINE-(9,30):LINE-(13,30):' '2' 2530 PSET (9,37):LINE(10,36)-(12,36):LINE(13,37)-(13,38):LINE(11,39)-(12,39):LINE(13,40)-(13,41):LINE(12,42)-(10,42):PSET(9,41):' '3' 2540 LINE(12,48)-(12,54):LINE(9,51)-(12,48):LINE(9,52)-(13,52):' '4' 2550 LINE(13,60)-(9,60):LINE-(9,62):LINE-(11,62):LINE-(13,64):LINE-(11,66):LINE-(9,66):' '5' 2560 LINE(12,72)-(11,72):LINE-(9,74):LINE-(9,77):LINE(10,78)-(12,78):LINE(13,77)-(13,76):LINE(12,75)-(10,75):' '6' 2570 LINE(9,85)-(9,84):LINE-(13,84):LINE-(13,85):LINE-(11,87):LINE-(11,90):' '7' 2580 LINE(10,96)-(12,96):LINE (10,99)-(12,99):LINE(10,102)-(12,102):LINE(9,97)-(9,98):LINE(9,100)-(9,101):LINE(13,97)-(13,98):LINE(13,100)-(13,101):' '8' 2590 LINE(15,9)-(111,105),1,B 2600 FOR X=27 TO 109 STEP 12:LINE(X,9)-(X,105):NEXT 2610 FOR X=21 TO 109STEP12:LINE(15,X)-(111,X):NEXT 2620 PRINT@100,"Move:":PRINT@180,"Computer:":PRINT@260,"Human:" 2799 'Line-blanking routine 2800 PRINT@560,CHR$(27)"K":RETURN 2999 'Initialization 3000 B=-1:W=1:D$(B+1)="X":D$(O+1)=".":D$(W+1)="O" 3010 FOR K=1 TO 8:READ I4(K):NEXT K 3020 DATA 0,-1,-1,-1,0,1,1,1 3030 FOR K=1 TO 8:READ J4(K):NEXT K 3040 DATA 1,1,0,-1,-1,-1,0,1 3050 FOR K=1 TO 8:READ C$(K):NEXT K 3060 DATA A,B,C,D,E,F,G,H 3070 FOR K=1 TO 8:READ X(K):NEXT K 3080 DATA 17,29,41,53,65,77,89,101 3090 FOR K=1 TO 8:READ Y(K):NEXT K 3100 DATA 11,23,35,47,59,71,83,95 3110 RETURN