10 VDU26,12,20,23,1,0;0;0;0; 20 C%=OPENIN("BFILE") 30 DIM P1 100,P2 100 40 DIM x%(2),y%(2),f%(2),h%(2) 50 x%(1)=1:x%(2)=3:y%(1)=2:y%(2)=4 60 f%(1)=1:f%(2)=2:h%(1)=0:h%(2)=0 70 FORI%=0TO99:P1?I%=BGET#C%:NEXT 80 FORI%=0TO99:P2?I%=BGET#C%:NEXT 90 CLOSE#C% 100 P%=1:Z%=2:joy%=J%:GCOL3,3 110 PROCGRID:PROCLABEL 120 GCOL3,3 130 VDU29,640;0;:PROCGRID:PROCLABEL 140 VDU4,17,3,28,0,12,39,0 150 IFP%=1VDU29,0;0; ELSE VDU29,640;0; 160 VDU23,1,0;0;0;0; 170 IFjoy%=1GOTO280 180 CLS:PRINT''"Player ";P%;", please type the grid"''"letters of your shot."''"X is ?"; 190 REPEAT:X$=GET$:UNTIL X$<"K" AND X$>"@":PRINTX$''"Y is ?"; 200 REPEAT:Y$=GET$:UNTIL Y$<"K" AND Y$>"@":PRINTY$ 210 CLS:PRINT''"Player ";P%;", you have entered grid"''"letters ";X$;",";Y$;" for your shot."''"If this is correct please press RETURN"''"otherwise press TAB." 220 REPEAT:V$=GET$:UNTILV$=CHR$13 OR V$=CHR$9 230 IF V$=CHR$9 THEN GOTO 180 240 q%=ASC(X$)-65:r%=ASC(Y$)-65 250 fsqr=FNSQR(Z%,q%,r%) 260 IF fsqr>1 VDU7:GOTO 180 270 GOTO390 280 CLS:PRINT''"Player ";P%;", please fire your shot using"''"joystick number ";P%;"." 290 JX=1024-ADVAL(x%(P%))/64 300 JY=ADVAL(y%(P%))/64 310 PROCCRSR 320 A%=ADVAL(0)AND3 330 IF A%<>f%(P%) OSCLI("FX19"): PROCCRSR:GOTO290 340 q%=JX/48:r%=JY/48 350 IF q%<0 OR q%>9 OR r%<0 OR r%>9 OSCLI("FX19"):PROCCRSR:SOUND1,-5,200,5:GOTO290 360 fsqr=FNSQR(Z%,q%,r%) 370 IF fsqr>1 VDU7:PROCCRSR:GOTO290 380 PROCCRSR 390 GCOL3,1:PROCFL_SQ(q%,r%) 400 FORI%=200TO150STEP-4 410 SOUND1,-15,I%,1:NEXT 420 IF fsqr=1 PROCHIT(Z%,q%,r%) 430 IF fsqr=0 PROCSET(Z%,q%,r%,128): PROCFL_SQ(q%,r%):PROCFL_SQ(q%,r%) 440 IF h%(P%)<16 THEN 450 ELSE 490 450 IF P%=1 P%=2 ELSE P%=1 460 IF Z%=1 Z%=2 ELSE Z%=1 470 CLS:COLOUR3 480 GOTO150 490 PROCWINNER 500 CALL !-4 510 END 520 REM CONTROL SHOULD NEVER COME HERE 530 DEFPROCHIT(Z%,q%,r%):GCOL3,1 540 PROCFL_SQ(q%,r%):GCOL3,2 550 PROCFL_SQ(q%,r%) 560 REPEAT:UNTIL ADVAL(-6)>0 570 SOUND0,-15,100,10 580 REPEAT:UNTIL ADVAL(-6)>0 590 PROCSET(Z%,q%,r%,255) 600 h%(P%)=h%(P%)+1 610 ENDPROC 620 END 630 DEFFNSQR(J%,X%,Y%) 640 IF J%=1 =?(P1+(Y%*10)+X%) ELSE =?(P2+(Y%*10)+X%) 650 DEFPROCWIPE 660 LOCAL I:FORI=0 TO 99 670 P1?I=0:P2?I=0:NEXT:ENDPROC 680 DEFPROCSET(J,X,Y,I) 690 IF J=1 ?(P1+(Y*10)+X)=I 700 IF J=2 ?(P2+(Y*10)+X)=I 710 ENDPROC 720 DEFPROCGRID:LOCAL I 730 FOR I=0 TO 480 STEP 48 740 MOVE 0,I:DRAW 480,I 750 MOVE I,0:DRAW I,480:NEXT 760 ENDPROC 770 DEFPROCFL_SQ(X%,Y%) 780 LOCAL X1%,Y1%,I% 790 X1%=X%*48:Y1%=Y%*48 800 FORI%=X1%+4 TO X1%+44 STEP 4:MOVE I%,Y1%+4:DRAW I%,Y1%+44:NEXT:ENDPROC 810 DEFPROCLABEL 820 LOCAL I:GCOL0,1:VDU5 830 FORI=0 TO 9*48 STEP 48 840 MOVEI,528:PRINTCHR$((I/48)+65) 850 MOVE496,I+32:PRINTCHR$((I/48)+65) 860 NEXT:ENDPROC 870 DEFPROCCRSR:GCOL3,2 880 IFJX<0JX=0 890 IFJY<0JY=0 900 IFJX>48*19 JX=48*19 910 IFJY>48*19 JY=48*19 920 MOVEJX-48,JY:DRAWJX+48,JY:MOVEJX,JY-48:DRAWJX,JY+48:ENDPROC 930 DEFPROCWINNER 940 CLS:PRINT 950 PRINT"The Winner is Admiral Player ";P%;"." 960 PRINT'"Congratulations on your excellent" 970 rnd%=RND(5) 980 ON rnd% GOTO 990,1000,1010,1020,1040 990 PRINT'"strategy.":GOTO 1060 1000 PRINT'"gameplay.":GOTO 1060 1010 PRINT'"foresight.":GOTO 1060 1020 PRINT'"tatics.":GOTO 1060 1030 PRINT'"strategy.":GOTO1050 1040 PRINT'"LUCK!!" 1050 pause=INKEY(200) 1060 PROCov:PROCov:PROCov 1070 pause%=INKEY(200) 1080 PRINT'"Would you like to play another game ?"; 1090 A%=5 1100 REPEAT:A$=INKEY$(0) 1110 A%=A%+4:SOUND1,-5,A%,1 1120 IFA%=253 A%=5 1130 UNTIL A$="Y" OR A$="N" 1140 IF A$="Y" CHAIN "BATTLE" 1150 CLS:PRINT'"Goodbye, thank you for playing the game"''"of ..... BATTLESHIPS!!" 1160 PAUSE=INKEY(500) 1170 ENDPROC 1180 DEFPROCov:ENVELOPE1,3,0,0,0,1,1,1,126,-4,0,-4,126,80:Q%=0:R%=0:FORN%=0TO60STEP4:P%=48+(N%+(N%MOD12=8))MOD16*4:SOUND1,1,P%,5:SOUND2,1,Q%,5:SOUND3,1,R%,5:R%=Q%:Q%=P%:NEXT:XA%=TIME:REPEATUNTILTIME-XA%>150:ENDPROC