27 lines
1.2 KiB
QBasic
27 lines
1.2 KiB
QBasic
10 PRINT CHR$(147):PRINT " SUBMARINE HUNT":PRINT
|
|
20 PRINT "THREE SUBS HIDE IN AN 8 BY 8 SEA.":PRINT "ENTER ROW,COLUMN. YOU HAVE 15 SHOTS.":PRINT
|
|
25 R=RND(-TI)
|
|
30 DIM S(8,8),F(8,8):FOR I=1 TO 3
|
|
40 R=INT(RND(1)*8)+1:C=INT(RND(1)*8)+1:IF S(R,C) THEN 40
|
|
50 S(R,C)=1:NEXT:H=0
|
|
60 FOR T=1 TO 15:GOSUB 150:PRINT "SHOT";T;" ROW,COLUMN (0,0 QUITS)";:INPUT R,C
|
|
70 IF R=0 AND C=0 THEN 210
|
|
80 IF R<1 OR R>8 OR C<1 OR C>8 THEN PRINT "OUTSIDE THE SEA.":GOTO 60
|
|
90 IF F(R,C) THEN PRINT "ALREADY CHECKED.":GOTO 60
|
|
100 F(R,C)=1:IF S(R,C) THEN H=H+1:PRINT "DIRECT HIT!":GOTO 120
|
|
110 PRINT "MISS. SONAR RANGE";:GOSUB 190:PRINT D
|
|
120 IF H=3 THEN PRINT "ALL SUBMARINES FOUND!":GOTO 200
|
|
130 NEXT:PRINT "OUT OF SHOTS. THE FLEET ESCAPED."
|
|
140 GOTO 200
|
|
150 PRINT CHR$(147):PRINT " 1 2 3 4 5 6 7 8":FOR Y=1 TO 8:PRINT Y;" ";
|
|
160 FOR X=1 TO 8:IF F(Y,X)=0 THEN PRINT ". ";
|
|
170 IF F(Y,X)=1 AND S(Y,X)=0 THEN PRINT "O ";
|
|
180 IF F(Y,X)=1 AND S(Y,X)=1 THEN PRINT "X ";
|
|
185 NEXT:PRINT:NEXT:PRINT "SUBS";H;"/3":RETURN
|
|
190 D=9:FOR Y=1 TO 8:FOR X=1 TO 8:IF S(Y,X)=1 AND F(Y,X)=0 THEN Q=ABS(Y-R)+ABS(X-C):IF Q<D THEN D=Q
|
|
195 NEXT X,Y:RETURN
|
|
200 PRINT:PRINT "R=REPLAY Q=QUIT"
|
|
210 GET A$:IF A$="R" THEN RUN
|
|
220 IF A$<>"Q" THEN 210
|
|
230 PRINT CHR$(147):END
|
|
|