30 'BOB KIMBALL WOODWARD OK 50 'WRITTEN FOR TRS-80 MC-10 DEC.27,1985 70 'ADAPTED FOR TRS-80 COLOR COMPUTER MAR. 27,1986 100 DIMA(2,10,10),GL(2,10,10),D$(2,5) 120 N=0:O=0 140 DIM D(2,5) 160 FORX=1TO2:FORY=1TO5:D(X,Y)=0:NEXTY,X 180 B$=CHR$(128):C$=CHR$(143+48) 185 FORW=1TO2:FORX=1TO10:FORY=1TO10:A(W,X,Y)=0:NEXTY,X,W 200 H$=CHR$(143+64) 210 U=0 360 FORW=1TO2:FORX=1TO10:FORY=1TO10 380 READ GL(W,X,Y) 400 NEXT Y,X,W 420 CLS 440 GOSUB4000 450 GOSUB5000 460 PRINT@384,"HI! I'M THE COLOR COMPUTER 2":SOUND200,3:PRINT@416,"LETS PLAY SEABATTLE" 470 GOSUB19540 480 GOSUB19540:GOSUB19560 520 PRINT@352,"EACH PLAYER HAS 5 SHIPS":PRINT"CARRIER WORTH 5 ";D$(1,1) 540 PRINT"BATTLESHIP WORTH 4 ";D$(1,2):PRINT"CRUISER&SUB WORTH 3 ";D$(1,3);" ";D$(1,4) 560 PRINT"DESTROYER WORTH 2 ";D$(1,5); 580 GOSUB19540:GOSUB19540:GOSUB19560 600 PRINT@352,"":PRINT"ENTER STARTING COORDINATES":PRINT"WHERE YOU WOULD LIKE YOUR SHIPS" 610 GOSUB19540:GOSUB19560:PRINT@352,"" 620 PRINT"NUMBER COORDINATE+VALUE OF SHIP":PRINT"MUST NOT EXCEED 10";:INPUT Q$,F 630 E=ASC(Q$)-64 635 IF E<1 OR E>10 OR F<1 OR F>10 THEN610 640 GOSUB19560 660 PRINT@352,""; 670 PRINT"ENTER 1)CARRIER,2)BTLSHIP":PRINT"3)CRUISER,4)SUB,5)DESTROYER" 700 INPUT"ENTER SHIP";G 710 IF G<1 OR G>5 THEN700 720 IF D(1,G)<>0 THEN700 760 IF F+LEN(D$(1,G))>10 THEN GOSUB19520:GOTO610 800 FORX=F TO F+LEN(D$(1,G)) 820 IF A(1,E,X)=-1 THEN610 840 NEXT 850 D(1,G)=1 860 FORX=F TO F+(LEN(D$(1,G))-1) 880 A(1,E,X)=-1 900 NEXT 920 PRINT@GL(1,E,F),D$(1,G); 940 FORX=1TO5:IF D(1,X)=0 THEN610 960 NEXT 980 GOSUB19560 990 PRINT@352,"" 1000 PRINT@352,"YOU";:PRINT@374,"CO CO"; 1020 PRINT@384,"COMPUTER PLACING SHIPS" 1030 G=1 1040 E=RND(10):F=RND(10) 1050 IF F+LEN(D$(2,G))>10 THEN 1040 1060 FORX=F TO F+LEN(D$(2,G)) 1080 IF A(2,E,X)=-1 THEN 1040 1100 NEXT 1140 FORX=F TO F+(LEN(D$(2,G))-1) 1160 A(2,E,X)=-1 1180 NEXT 1200 G=G+1:IF G<6 THEN1040 1220 GOSUB19560 1240 PRINT@384,"PRESS ANY KEY TO MOVE FIRST":PRINT"PRESS C FOR COMPUTER FIRST MOVE" 1260 A$=INKEY$:IF A$="" THEN1260 1280 IF A$="C" THEN10000 1300 GOSUB19560:'HUMAN MOVE 1320 PRINT@384,"ENTER FIRE COORDINATES":INPUT E$,F 1340 E=ASC(E$)-64 1350 IF E<1 OR E>10 OR F<1 OR F>10 THEN1300 1360 IFA(2,E,F)=1ORA(2,E,F)=2THENSOUND1,3:GOSUB19560:PRINT@384,"ALREADY SELECTED":GOSUB19520:GOTO1300 1380 IF A(2,E,F)=0 THENPRINT@GL(2,E,F),H$;:GOSUB19560:PRINT@384,"M I S S E D":SOUND50,2:A(2,E,F)=1:GOSUB19510:GOTO10000 1400 PRINT@GL(2,E,F),C$; 1420 GOSUB19560:SOUND150,2:PRINT@384,"H I T !" 1440 A(2,E,F)=2 1450 K=0 1460 FORX=1TO10:FORY=1TO10 1480 IF A(2,X,Y)=2 THENK=K+1 1500 NEXTY,X 1520 IF K=17 THEN GOSUB15000 1560 GOTO10000 2000 'COMPUTER LOGIC SEQUENCE 2010 IF O=1 THEN3000 2020 E=L:IF M=1 THEN O=1:GOTO3000 2040 F=M-1 2060 IF A(1,E,F)=1 OR A(1,E,F)=2 THEN O=1:GOTO2010 2080 IF A(1,E,F)=0 THEN PRINT@GL(1,E,F),H$;:SOUND50,2:GOSUB19560:PRINT@384,"M I S S E D":A(1,E,F)=1:GOSUB19520:O=1:GOTO1300 2100 A(1,E,F)=2 2120 PRINT@GL(1,E,F),C$; 2130 SOUND150,2 2140 GOSUB19560:PRINT@384,"H I T !" 2150 K=0 2160 FORX=1TO10:FORY=1TO10 2180 IF A(1,X,Y)=2 THEN K=K+1 2200 NEXTY,X 2220 IF K=17 THENGOTO16000 2240 M=F 2260 GOTO1300 3000 'POSITIVE LOGIC SEQUENCE 3020 E=L:F=P 3040 IF F=10 THEN N=0:O=0:GOTO10000 3060 F=F+1 3080 IF A(1,E,F)=1 OR A(1,E,F)=2 THEN 3040 3100 IF A(1,E,F)=0 THEN A(1,E,F)=1:GOSUB19560:PRINT@GL(1,E,F),H$;:SOUND50,2:PRINT@384,"M I S S E D":GOSUB19520:N=0:O=0:GOTO1300 3120 PRINT@GL(1,E,F),C$; 3130 SOUND150,2 3140 GOSUB19560:PRINT@384,"H I T !" 3160 A(1,E,F)=2 3180 K=0 3200 FORX=1TO10:FORY=1TO10 3220 IF A(1,X,Y)=2 THENK=K+1 3240 NEXTY,X 3260 IF K=17 THEN 16000 3280 P=F:GOTO1300 4000 FORI=1TO5 4020 A$=A$+CHR$(143+32) 4040 A$=A$+CHR$(143+80) 4060 NEXT 4080 CLS 4100 J=65 4120 FORI=32TO320STEP32 4140 PRINT@I,CHR$(J); 4160 J=J+1 4180 NEXT 4200 J=65 4220 FORI=51TO339STEP32 4240 PRINT@I,CHR$(J); 4260 J=J+1 4280 NEXT 4300 X$="12345678910" 4320 PRINT@1,X$;:PRINT@20,X$; 4340 FORI=33TO321STEP32 4360 PRINT@I,A$; 4380 NEXT 4400 FORI=52TO340STEP32 4420 PRINT@I,A$; 4440 NEXT 4460 RETURN 5000 REM SHIP,SYMBOL SUBR. 5020 FORA=1TO2 5040 D$(A,1)=CHR$(128+12)+CHR$(128+12)+CHR$(128)+CHR$(128+12)+CHR$(128+12) 5060 NEXT 5080 FORI=1TO2 5100 D$(I,2)=CHR$(128+8)+CHR$(128+4)+CHR$(128+8)+CHR$(128+4) 5140 NEXT 5160 FOR I=1 TO 2 5180 D$(I,3)=CHR$(128+12)+CHR$(128)+CHR$(128+12) 5200 NEXT 5220 FOR I=1 TO 2 5240 D$(I,4)=CHR$(128+12)+CHR$(128+8)+CHR$(128+12) 5260 NEXT 5280 FOR I=1TO2 5300 D$(I,5)=CHR$(128+8)+CHR$(128+4) 5320 NEXT 5340 RETURN 10000 'COMPUTER FIRE SEQUENCE 10005 GOSUB19560:PRINT@384,"COLOR COMPUTER'S TURN":GOSUB19520:IF N=1 THEN2000 10020 E=RND(10):F=RND(10) 10025 IF A(1,E,F)=1 OR A(1,E,F)=2 THEN10020 10030 IF F=1 AND A(1,E,2)=1 OR F=10 AND A(1,E,9)=1 THEN10020 10035 IF F=1 OR F=10 THEN10060 10040 IF A(1,E,F-1)=1 AND A(1,E,F+1)=1 THEN 10020 10060 IF A(1,E,F)=0 THEN A(1,E,F)=1:PRINT@GL(1,E,F),H$;:GOSUB19560:PRINT@384,"M I S S E D":SOUND50,2:GOSUB19520:GOTO1300 10080 GOSUB19560:PRINT@384,"H I T !" 10090 PRINT@GL(1,E,F),C$; 10100 SOUND150,2 10120 A(1,E,F)=2 10140 K=0 10160 FORX=1TO10:FORY=1TO10 10180 IF A(1,X,Y)=2 THENK=K+1 10220 NEXTY,X 10240 IF K=17 THEN16000 10260 L=E:M=F:N=1 10280 P=F:GOTO1300 15000 'HUMAN WIN SUBR. 15010 CLS 15020 FORX=1TO5 15040 SOUND50,1:SOUND150,2 15060 NEXT 15080 PRINT@103,"CONGRAULATIONS HUMAN":PRINT@135,"YOU WIN":PRINT@165,"IT WAS SHEER LUCK" 15100 PRINT@197,"PRESS ANY KEY FOR BASIC" 15110 PRINT@229,"PRESS R TO PLAY AGAIN" 15120 A$=INKEY$:IFA$=""THEN15120 15130 IFA$="R"THENRUN 15140 END 16000 'COMPUTER WINNER SUBR. 16020 CLS 16040 FORX=1TO5 16060 SOUND100,1:SOUND200,2 16080 NEXT 16100 PRINT@103,"I WIN THE GAME":PRINT@128,"IT WAS PURE SKILL" 16120 PRINT@160,"PRESS R TO PLAY AGAIN":PRINT@192,"PRESS ANY KEY TO GO TO BASIC" 16140 A$=INKEY$ 16160 IF A$="R" THEN RUN 16180 IF A$="" THEN16140 16200 END 19500 'DELAY CONSTANTS 19510 FORX=1TO1000:NEXT:RETURN 19520 FORX=1TO2000:NEXT:RETURN 19540 FORX=1TO3000:NEXT:RETURN 19560 'BLANK SEQUENCE 19580 FORX=384TO448STEP32 19600 PRINT@X,"" 19620 NEXT 19640 PRINT@480," "; 19660 RETURN 20000 'DATA 20020 DATA 33,34,35,36,37,38,39,40,41,42,65,66,67,68,69,70,71,72,73,74,97,98,99,100,101,102,103,104,105,106 20060 DATA 129,130,131,132,133,134,135,136,137,138,161,162,163,164,165,166,167,168,169,170 20080 DATA 193,194,195,196,197,198,199,200,201,202,225,226,227,228,229,230,231,232,233,234 20100 DATA 257,258,259,260,261,262,263,264,265,266,289,290,291,292,293,294,295,296,297,298 20120 DATA 321,322,323,324,325,326,327,328,329,330 20140 DATA 52,53,54,55,56,57,58,59,60,61,84,85,86,87,88,89,90,91,92,93,116,117,118,119,120,121,122,123,124,125 20160 DATA 148,149,150,151,152,153,154,155,156,157,180,181,182,183,184,185,186,187,188,189 20180 DATA 212,213,214,215,216,217,218,219,220,221,244,245,246,247,248,249,250,251,252,253 20200 DATA 276,277,278,279,280,281,282,283,284,285,308,309,310,311,312,313,314,315,316,317 20220 DATA 340,341,342,343,344,345,346,347,348,349