'===========================================================================
' Subject: SEA BATTLE (LIKE BATTLESHIP)       Date: 11-08-97 (20:42)       
'  Author: Andrey Berezansky                  Code: QB, QBasic, PDS        
'  Origin: nikolai@nsi.co.il                Packet: GAMES.ABC
'===========================================================================
' fixed things:
' 1) controls (now ARROW keys -to move ,SPACE -to switche
' vertical/horizontal ,ENTER -to place the ship) ;
' 2) computer (better orientation) ;
' 3) loses (ships that you didnt shot are shown in blue color
' at the end when you lose to computer)
'
' IMPORTANT     FOR NUBER 10 - (IN THE GAME) PRESS "0"   
' IMPORTANT     PRESS ANY KEY BETWEEN TURNS             
'
'programmer is BEREZANSKY ANDREY  email - nikol@cs.bgu.ac.il



DECLARE SUB loos ()
DECLARE SUB win ()
DECLARE SUB compush ()
DECLARE SUB mturn ()
DECLARE SUB cturn ()
DECLARE SUB shipgrp ()
DECLARE SUB risunok ()
RANDOMIZE TIMER
SCREEN 0
CLS
DIM SHARED moy1(10, 10)
DIM SHARED moy2(10, 10)


10

FOR i = 1 TO 10
ships = ships + 1
CALL shipgrp
NEXT i

FOR iii = 1 TO 10
FOR iiii = 1 TO 10
COLOR 1, 11
IF moy1(iii, iiii) = 1 THEN LOCATE (iiii + 5), (iii + 4) * 2 + 1: PRINT "*"
NEXT iiii
NEXT iii


CALL compush

DO WHILE endgame = 0
CALL mturn
IF endgame = 0 THEN CALL cturn
LOOP

SUB compush
a = 1

2000
y11 = 0: y12 = 0: x11 = 0: x12 = 0: m = 0
hrv = INT(RND * 3)
IF hrv = 0 THEN 2000
x = INT(RND * 10)
IF x = 0 THEN 2000
y = INT(RND * 10)
IF y = 0 THEN 2000

IF a = 1 THEN b = 3
IF a = 2 THEN b = 2
IF a = 4 THEN b = 1
IF a = 7 THEN b = 0
IF hrv = 1 AND y + b > 10 THEN 2000
IF hrv = 2 AND x + b > 10 THEN 2000


IF hrv = 1 THEN
      IF y > 1 THEN y11 = y - 1
      IF y = 1 THEN y11 = y
      IF y + b < 10 THEN y12 = y + b + 1
      IF y + b = 10 THEN y12 = y + b
     FOR i = y11 TO y12
       IF x > 1 THEN
       IF moy2(x - 1, i) = 1 THEN m = m + 1
       END IF
       IF moy2(x, i) = 1 THEN m = m + 1
       IF x < 10 THEN
       IF moy2(x + 1, i) = 1 THEN m = m + 1
       END IF
     NEXT
   IF m = 0 THEN
     FOR i = y TO y + b
       moy2(x, i) = 1
     NEXT
     a = a + 1
   END IF
END IF


IF hrv = 2 THEN
      IF x > 1 THEN x11 = x - 1
      IF x = 1 THEN x11 = x
      IF x + b < 10 THEN x12 = x + b + 1
      IF x + b = 10 THEN x12 = x + b
     FOR i = x11 TO x12
       IF y > 1 THEN
       IF moy2(i, y - 1) = 1 THEN m = m + 1
       END IF
       IF moy2(i, y) = 1 THEN m = m + 1
       IF y < 10 THEN
       IF moy2(i, y + 1) = 1 THEN m = m + 1
       END IF
     NEXT
   IF m = 0 THEN
     FOR i = x TO x + b
       moy2(i, y) = 1
     NEXT
     a = a + 1
   END IF
END IF



IF a < 11 THEN 2000




END SUB

SUB cturn
SHARED endgame, lsp, heat, xx, yy


x = xx: y = yy

3000
IF heat = 1 THEN
yy = y: xx = x

      IF x < 10 THEN
           
            IF moy1(x + 1, y) = 1 OR moy1(x + 1, y) = 0 THEN
              IF y < 10 THEN moy1(x + 1, y + 1) = 2
              IF y > 1 THEN moy1(x + 1, y - 1) = 2
                x = x + 1
                GOTO 3001
            END IF
           
            IF moy1(x + 1, y) = 3 THEN
              IF y < 10 THEN moy1(x + 2, y + 1) = 2
              IF y > 1 THEN moy1(x + 2, y - 1) = 2
           
            IF moy1(x + 2, y) = 3 THEN
              IF y < 10 THEN moy1(x + 3, y + 1) = 2
              IF y > 1 THEN moy1(x + 3, y - 1) = 2
              x = x + 3: GOTO 3001
            END IF
            IF moy1(x + 2, y) = 1 THEN
                x = x + 2: GOTO 3001
            END IF
           
            END IF

      END IF
     
     
      IF y < 10 THEN
            IF moy1(x, y + 1) = 1 OR moy1(x, y + 1) = 0 THEN
              IF x < 10 THEN moy1(x + 1, y + 1) = 2
              IF x > 1 THEN moy1(x - 1, y + 1) = 2
                y = y + 1
                GOTO 3001
            END IF
            IF moy1(x, y + 1) = 3 THEN
              IF x < 10 THEN moy1(x + 1, y + 2) = 2
              IF x > 1 THEN moy1(x - 1, y + 2) = 2
            IF moy1(x, y + 2) = 3 THEN
              IF x < 10 THEN moy1(x + 1, y + 3) = 2
              IF x > 1 THEN moy1(x - 1, y + 3) = 2
               y = y + 3: GOTO 3001
            END IF
            IF moy1(x, y + 2) = 1 THEN
                y = y + 2: GOTO 3001
            END IF
           
            END IF
           
      END IF
     
      IF x > 1 THEN
            IF moy1(x - 1, y) = 1 OR moy1(x - 1, y) = 0 THEN
                
              IF y < 10 THEN moy1(x - 1, y + 1) = 2
              IF y > 1 THEN moy1(x - 1, y - 1) = 2
                 x = x - 1
                 GOTO 3001
           
            END IF
            IF moy1(x - 1, y) = 3 THEN
              IF y < 10 THEN moy1(x - 2, y + 1) = 2
              IF y > 1 THEN moy1(x - 2, y - 1) = 2
          
            IF moy1(x - 2, y) = 3 THEN
              IF y < 10 THEN moy1(x - 3, y + 1) = 2
              IF y > 1 THEN moy1(x - 3, y - 1) = 2

                x = x - 3: GOTO 3001
            END IF
            IF moy1(x - 2, y) = 1 THEN
                x = x - 2: GOTO 3001
            END IF
          
            END IF

      END IF

      IF y > 1 THEN
            IF moy1(x, y - 1) = 1 OR moy1(x, y - 1) = 0 THEN
              IF x < 10 THEN moy1(x + 1, y - 1) = 2
              IF x > 1 THEN moy1(x - 1, y - 1) = 2
                y = y - 1
                GOTO 3001
           
            END IF
            IF moy1(x, y - 1) = 3 THEN
              IF x < 10 THEN moy1(x + 1, y - 2) = 2
              IF x > 1 THEN moy1(x - 1, y - 2) = 2
           
            IF moy1(x, y - 2) = 3 THEN
              IF x < 10 THEN moy1(x + 1, y - 3) = 2
              IF x > 1 THEN moy1(x - 1, y - 3) = 2

                y = y - 3: GOTO 3001
            END IF
            IF moy1(x, y - 2) = 1 THEN
                y = y - 2: GOTO 3001
            END IF
           
            END IF

      END IF

END IF


x = INT(RND * 10) + 1
y = INT(RND * 10) + 1
IF x = 11 OR y = 11 THEN 3000
IF moy1(x, y) = 2 OR moy1(x, y) = 3 THEN 3000

3001


COLOR 15, 0
LOCATE 18, 40: PRINT "COMPUTER"
FOR nn = 1 TO 20000: NEXT


COLOR 15, 0
LOCATE 21, 63: PRINT y
IF x = 1 THEN
LOCATE 21, 41: PRINT "A"
END IF
IF x = 2 THEN
LOCATE 21, 41: PRINT "B"
END IF
IF x = 3 THEN
LOCATE 21, 41: PRINT "C"
END IF
IF x = 4 THEN
LOCATE 21, 41: PRINT "D"
END IF
IF x = 5 THEN
LOCATE 21, 41: PRINT "E"
END IF
IF x = 6 THEN
LOCATE 21, 41: PRINT "F"
END IF
IF x = 7 THEN
LOCATE 21, 41: PRINT "G"
END IF
IF x = 8 THEN
LOCATE 21, 41: PRINT "H"
END IF
IF x = 9 THEN
LOCATE 21, 41: PRINT "I"
END IF
IF x = 10 THEN
LOCATE 21, 41: PRINT "J"
END IF


IF moy1(x, y) = 1 THEN
     IF x < 10 THEN
      IF moy1(x + 1, y) = 1 THEN
      COLOR 4, 11
      LOCATE 18, 40: PRINT " HIT !!!  "
      LOCATE y + 5, (x + 4) * 2 + 1: PRINT "*"
      heat = 1
    
      IF x > 1 THEN
      IF moy1(x - 1, y) = 1 OR moy1(x - 1, y) = 3 THEN
      moy1(x, y) = 3
      ELSE moy1(x, y) = 2
      END IF
      ELSE moy1(x, y) = 2
      END IF
    
      DO WHILE INKEY$ = "": LOOP
      exitt = 0: exitt2 = 0: GOTO 3000
      END IF
    
      IF moy1(x + 1, y) = 3 THEN
      IF moy1(x + 2, y) = 1 THEN
      COLOR 4, 11
      LOCATE 18, 40: PRINT " HIT !!!  "
      LOCATE y + 5, (x + 4) * 2 + 1: PRINT "*"
      heat = 1
      moy1(x, y) = 2
       IF x > 1 THEN
       IF moy1(x - 1, y) = 1 THEN moy1(x, y) = 3
       END IF
      DO WHILE INKEY$ = "": LOOP
      exitt = 0: exitt2 = 0: GOTO 3000
      END IF
      END IF

      IF moy1(x + 1, y) = 3 THEN
      IF moy1(x + 2, y) = 3 THEN
      IF moy1(x + 3, y) = 1 THEN
      COLOR 4, 11
      LOCATE 18, 40: PRINT " HIT !!!  "
      LOCATE y + 5, (x + 4) * 2 + 1: PRINT "*"
      heat = 1
      moy1(x, y) = 2
      DO WHILE INKEY$ = "": LOOP
      exitt = 0: exitt2 = 0: GOTO 3000
      END IF
      END IF
      END IF

     END IF


     IF x > 1 THEN
      IF moy1(x - 1, y) = 1 THEN
      COLOR 4, 11
      LOCATE 18, 40: PRINT " HIT !!!  "
      LOCATE y + 5, (x + 4) * 2 + 1: PRINT "*"
      heat = 1
    
      IF x < 10 THEN
      IF moy1(x + 1, y) = 1 OR moy1(x + 1, y) = 3 THEN
      moy1(x, y) = 3
      ELSE moy1(x, y) = 2
      END IF
      ELSE moy1(x, y) = 2
      END IF
    
      DO WHILE INKEY$ = "": LOOP
      exitt = 0: exitt2 = 0: GOTO 3000
      END IF
    
      IF moy1(x - 1, y) = 3 THEN
      IF moy1(x - 2, y) = 1 THEN
      COLOR 4, 11
      LOCATE 18, 40: PRINT " HIT !!!  "
      LOCATE y + 5, (x + 4) * 2 + 1: PRINT "*"
      heat = 1
      moy1(x, y) = 2
       IF x < 10 THEN
       IF moy1(x + 1, y) = 1 THEN moy1(x, y) = 3
       END IF
     
      DO WHILE INKEY$ = "": LOOP
      exitt = 0: exitt2 = 0: GOTO 3000
      END IF
      END IF

      IF moy1(x - 1, y) = 3 THEN
      IF moy1(x - 2, y) = 3 THEN
      IF moy1(x - 3, y) = 1 THEN
      COLOR 4, 11
      LOCATE 18, 40: PRINT " HIT !!!  "
      LOCATE y + 5, (x + 4) * 2 + 1: PRINT "*"
      heat = 1
      moy1(x, y) = 2
      DO WHILE INKEY$ = "": LOOP
      exitt = 0: exitt2 = 0: GOTO 3000
      END IF
      END IF
      END IF

    
     END IF

     IF y < 10 THEN
      IF moy1(x, y + 1) = 1 THEN
      COLOR 4, 11
      LOCATE 18, 40: PRINT " HIT !!!  "
      LOCATE y + 5, (x + 4) * 2 + 1: PRINT "*"
      heat = 1
    
      IF y > 1 THEN
      IF moy1(x, y - 1) = 1 OR moy1(x, y - 1) = 3 THEN
      moy1(x, y) = 3
      ELSE moy1(x, y) = 2
      END IF
      ELSE moy1(x, y) = 2
      END IF
    
      DO WHILE INKEY$ = "": LOOP
      exitt = 0: exitt2 = 0: GOTO 3000
      END IF
   
      IF moy1(x, y + 1) = 3 THEN
      IF moy1(x, y + 2) = 1 THEN
      COLOR 4, 11
      LOCATE 18, 40: PRINT " HIT !!!  "
      LOCATE y + 5, (x + 4) * 2 + 1: PRINT "*"
      heat = 1
      moy1(x, y) = 2
       IF y > 1 THEN
       IF moy1(x, y - 1) = 1 THEN moy1(x, y) = 3
       END IF
      DO WHILE INKEY$ = "": LOOP
      exitt = 0: exitt2 = 0: GOTO 3000
      END IF
      END IF

      IF moy1(x, y + 1) = 3 THEN
      IF moy1(x, y + 2) = 3 THEN
      IF moy1(x, y + 3) = 1 THEN
      COLOR 4, 11
      LOCATE 18, 40: PRINT " HIT !!!  "
      LOCATE y + 5, (x + 4) * 2 + 1: PRINT "*"
      heat = 1
      moy1(x, y) = 2
      DO WHILE INKEY$ = "": LOOP
      exitt = 0: exitt2 = 0: GOTO 3000
      END IF
      END IF
      END IF
   
     END IF

     IF y > 1 THEN
      IF moy1(x, y - 1) = 1 THEN
      COLOR 4, 11
      LOCATE 18, 40: PRINT " HIT !!!  "
      LOCATE y + 5, (x + 4) * 2 + 1: PRINT "*"
      heat = 1
    
      IF y < 10 THEN
      IF moy1(x, y + 1) = 1 OR moy1(x, y + 1) = 3 THEN
      moy1(x, y) = 3
      ELSE moy1(x, y) = 2
      END IF
      ELSE moy1(x, y) = 2
      END IF
    
      DO WHILE INKEY$ = "": LOOP
      exitt = 0: exitt2 = 0: GOTO 3000
      END IF
   
      IF moy1(x, y - 1) = 3 THEN
      IF moy1(x, y - 2) = 1 THEN
      COLOR 4, 11
      LOCATE 18, 40: PRINT " HIT !!!  "
      LOCATE y + 5, (x + 4) * 2 + 1: PRINT "*"
      heat = 1
      moy1(x, y) = 2
       IF y < 10 THEN
       IF moy1(x, y + 1) = 1 THEN moy1(x, y) = 3
       END IF
      DO WHILE INKEY$ = "": LOOP
      exitt = 0: exitt2 = 0: GOTO 3000
      END IF
      END IF

      IF moy1(x, y - 1) = 3 THEN
      IF moy1(x, y - 2) = 3 THEN
      IF moy1(x, y - 3) = 1 THEN
      COLOR 4, 11
      LOCATE 18, 40: PRINT " HIT !!!  "
      LOCATE y + 5, (x + 4) * 2 + 1: PRINT "*"
      heat = 1
      moy1(x, y) = 2
      DO WHILE INKEY$ = "": LOOP
      exitt = 0: exitt2 = 0: GOTO 3000
      END IF
      END IF
      END IF

     END IF

    
COLOR 4, 11
LOCATE 18, 40: PRINT " KILLED ! "
LOCATE y + 5, (x + 4) * 2 + 1: PRINT "o"
moy1(x, y) = 2

'******************************************************************


IF x < 10 THEN

IF moy1(x + 1, y) = 3 THEN

   IF moy1(x + 2, y) = 3 THEN

   IF x + 4 < 11 THEN
   IF y < 10 THEN moy1(x + 4, y + 1) = 2
   IF y > 1 THEN moy1(x + 4, y - 1) = 2
   moy1(x + 4, y) = 2
   END IF

   IF y < 10 THEN moy1(x + 3, y + 1) = 2
   IF y > 1 THEN moy1(x + 3, y - 1) = 2
   moy1(x + 3, y) = 2
   END IF

IF y < 10 THEN moy1(x + 2, y + 1) = 2
IF y > 1 THEN moy1(x + 2, y - 1) = 2
moy1(x + 2, y) = 2
IF y < 10 AND x + 3 < 11 THEN moy1(x + 3, y + 1) = 2
IF y > 1 AND x + 3 < 11 THEN moy1(x + 3, y - 1) = 2
IF x + 3 < 11 THEN moy1(x + 3, y) = 2

END IF

IF y > 1 THEN moy1(x + 1, y - 1) = 2
IF y < 10 THEN moy1(x + 1, y + 1) = 2
moy1(x + 1, y) = 2
END IF

'******************************************************************

IF x > 1 THEN

IF moy1(x - 1, y) = 3 THEN

   IF moy1(x - 2, y) = 3 THEN

   IF x - 4 > 0 THEN
   IF y < 10 THEN moy1(x - 4, y + 1) = 2
   IF y > 1 THEN moy1(x - 4, y - 1) = 2
   moy1(x - 4, y) = 2
   END IF

   IF y < 10 THEN moy1(x - 3, y + 1) = 2
   IF y > 1 THEN moy1(x - 3, y - 1) = 2
   moy1(x - 3, y) = 2
   END IF

IF y < 10 THEN moy1(x - 2, y + 1) = 2
IF y > 1 THEN moy1(x - 2, y - 1) = 2
moy1(x - 2, y) = 2
IF y < 10 AND x - 3 > 0 THEN moy1(x - 3, y + 1) = 2
IF y > 1 AND x - 3 > 0 THEN moy1(x - 3, y - 1) = 2
IF x - 3 > 0 THEN moy1(x - 3, y) = 2
END IF
  
IF y > 1 THEN moy1(x - 1, y - 1) = 2
IF y < 10 THEN moy1(x - 1, y + 1) = 2
moy1(x - 1, y) = 2
END IF

'******************************************************************

IF y < 10 THEN

IF moy1(x, y + 1) = 3 THEN

   IF moy1(x, y + 2) = 3 THEN

   IF y + 4 < 11 THEN
   IF x < 10 THEN moy1(x + 1, y + 4) = 2
   IF x > 1 THEN moy1(x - 1, y + 4) = 2
   moy1(x, y + 4) = 2
   END IF

   IF x < 10 THEN moy1(x + 1, y + 3) = 2
   IF x > 1 THEN moy1(x - 1, y + 3) = 2
   moy1(x, y + 3) = 2
   END IF

IF x < 10 THEN moy1(x + 1, y + 2) = 2
IF x > 1 THEN moy1(x - 1, y + 2) = 2
moy1(x, y + 2) = 2
IF x < 10 AND y + 3 < 11 THEN moy1(x + 1, y + 3) = 2
IF x > 1 AND y + 3 < 11 THEN moy1(x - 1, y + 3) = 2
IF y + 3 < 11 THEN moy1(x, y + 3) = 2

END IF

IF x > 1 THEN moy1(x - 1, y + 1) = 2
IF x < 10 THEN moy1(x + 1, y + 1) = 2
moy1(x, y + 1) = 2
END IF

'******************************************************************

IF y > 1 THEN

IF moy1(x, y - 1) = 3 THEN

   IF moy1(x, y - 2) = 3 THEN
  
   IF y - 4 > 0 THEN
   IF x < 10 THEN moy1(x + 1, y - 4) = 2
   IF x > 1 THEN moy1(x - 1, y - 4) = 2
   moy1(x, y - 4) = 2
   END IF
  
  
   IF x < 10 THEN moy1(x + 1, y - 3) = 2
   IF x > 1 THEN moy1(x - 1, y - 3) = 2
   moy1(x, y - 3) = 2
   END IF

IF x < 10 THEN moy1(x + 1, y - 2) = 2
IF x > 1 THEN moy1(x - 1, y - 2) = 2
moy1(x, y - 2) = 2
IF x < 10 AND y - 3 > 1 THEN moy1(x + 1, y - 3) = 2
IF x > 1 AND y - 3 > 1 THEN moy1(x - 1, y - 3) = 2
IF y - 3 > 1 THEN moy1(x, y - 3) = 2

END IF

IF x > 1 THEN moy1(x - 1, y - 1) = 2
IF x < 10 THEN moy1(x + 1, y - 1) = 2
moy1(x, y - 1) = 2
END IF


'******************************************************************

heat = 0
lsp = lsp + 1
COLOR 15, 0
LOCATE 10, 42: PRINT lsp
 
  IF lsp = 10 THEN
 
  FOR iii = 1 TO 10
  FOR iiii = 1 TO 10
  COLOR 1, 11
  IF moy2(iii, iiii) = 1 THEN LOCATE (iiii + 5), (iii + 24) * 2 + 1: PRINT "*"
  NEXT iiii
  NEXT iii
 
  DO WHILE INKEY$ = "": LOOP
  CALL loos
  endgame = 1
  GOTO 3010
  END IF


DO WHILE INKEY$ = "": LOOP
exitt = 0: exitt2 = 0: GOTO 3000
END IF


COLOR 15, 11
LOCATE 18, 40: PRINT " MISSED ! "
LOCATE y + 5, (x + 4) * 2 + 1: PRINT "x"
moy1(x, y) = 2
dd = 1

3010

DO WHILE INKEY$ = "": LOOP

IF dd = 1 THEN
LOCATE y + 5, (x + 4) * 2 + 1: PRINT "."
END IF

END SUB

SUB loos
COLOR 15, 0
CLS
LOCATE 7, 20: PRINT "YOU LOSSE !!!"
LOCATE 9, 25: PRINT "NICE GAME !!!"
LOCATE 11, 30: PRINT "PLAY AGAIN SOON !!!"

END SUB

SUB mturn
SHARED endgame, lsc
                

1000


COLOR 15, 0
LOCATE 18, 40: PRINT "YOU TURN !"
LOCATE 21, 20: PRINT "PRESS LETTER FIRST :   .THEN PRESS NUMBER :   "


DO WHILE exitt = 0
SELECT CASE INKEY$
CASE "a"
x = 1: exitt = 1: LOCATE 21, 41: PRINT "A"

CASE "b"
x = 2: exitt = 1: LOCATE 21, 41: PRINT "B"

CASE "c"
x = 3: exitt = 1: LOCATE 21, 41: PRINT "C"

CASE "d"
x = 4: exitt = 1: LOCATE 21, 41: PRINT "D"

CASE "e"
x = 5: exitt = 1: LOCATE 21, 41: PRINT "E"

CASE "f"
x = 6: exitt = 1: LOCATE 21, 41: PRINT "F"

CASE "g"
x = 7: exitt = 1: LOCATE 21, 41: PRINT "G"

CASE "h"
x = 8: exitt = 1: LOCATE 21, 41: PRINT "H"

CASE "i"
x = 9: exitt = 1: LOCATE 21, 41: PRINT "I"

CASE "j"
x = 10: exitt = 1: LOCATE 21, 41: PRINT "J"

END SELECT
LOOP

DO WHILE exitt2 = 0
SELECT CASE INKEY$
CASE "1"
y = 1: exitt2 = 1: LOCATE 21, 64: PRINT "1"

CASE "2"
y = 2: exitt2 = 1: LOCATE 21, 64: PRINT "2"

CASE "3"
y = 3: exitt2 = 1: LOCATE 21, 64: PRINT "3"

CASE "4"
y = 4: exitt2 = 1: LOCATE 21, 64: PRINT "4"

CASE "5"
y = 5: exitt2 = 1: LOCATE 21, 64: PRINT "5"

CASE "6"
y = 6: exitt2 = 1: LOCATE 21, 64: PRINT "6"

CASE "7"
y = 7: exitt2 = 1: LOCATE 21, 64: PRINT "7"

CASE "8"
y = 8: exitt2 = 1: LOCATE 21, 64: PRINT "8"

CASE "9"
y = 9: exitt2 = 1: LOCATE 21, 64: PRINT "9"

CASE "0"
y = 10: exitt2 = 1: LOCATE 21, 64: PRINT "10"

END SELECT
LOOP



IF moy2(x, y) = 1 THEN
     IF x < 10 THEN
      IF moy2(x + 1, y) = 1 THEN
      COLOR 4, 11
      LOCATE 18, 40: PRINT " HIT !!!  "
      LOCATE y + 5, (x + 24) * 2 + 1: PRINT "*"
     
      IF x > 1 THEN
      IF moy2(x - 1, y) = 1 OR moy2(x - 1, y) = 3 THEN
      moy2(x, y) = 3
      ELSE moy2(x, y) = 2
      END IF
      ELSE moy2(x, y) = 2
      END IF
     
      DO WHILE INKEY$ = "": LOOP
      exitt = 0: exitt2 = 0: GOTO 1000
      END IF
     
      IF moy2(x + 1, y) = 3 THEN
      IF moy2(x + 2, y) = 1 THEN
      COLOR 4, 11
      LOCATE 18, 40: PRINT " HIT !!!  "
      LOCATE y + 5, (x + 24) * 2 + 1: PRINT "*"
      moy2(x, y) = 2
       IF x > 1 THEN
       IF moy2(x - 1, y) = 1 THEN moy2(x, y) = 3
       END IF
      DO WHILE INKEY$ = "": LOOP
      exitt = 0: exitt2 = 0: GOTO 1000
      END IF
      END IF

      IF moy2(x + 1, y) = 3 THEN
      IF moy2(x + 2, y) = 3 THEN
      IF moy2(x + 3, y) = 1 THEN
      COLOR 4, 11
      LOCATE 18, 40: PRINT " HIT !!!  "
      LOCATE y + 5, (x + 24) * 2 + 1: PRINT "*"
      moy2(x, y) = 2
      DO WHILE INKEY$ = "": LOOP
      exitt = 0: exitt2 = 0: GOTO 1000
      END IF
      END IF
      END IF

     END IF


     IF x > 1 THEN
      IF moy2(x - 1, y) = 1 THEN
      COLOR 4, 11
      LOCATE 18, 40: PRINT " HIT !!!  "
      LOCATE y + 5, (x + 24) * 2 + 1: PRINT "*"
     
      IF x < 10 THEN
      IF moy2(x + 1, y) = 1 OR moy2(x + 1, y) = 3 THEN
      moy2(x, y) = 3
      ELSE moy2(x, y) = 2
      END IF
      ELSE moy2(x, y) = 2
      END IF
     
      DO WHILE INKEY$ = "": LOOP
      exitt = 0: exitt2 = 0: GOTO 1000
      END IF
     
      IF moy2(x - 1, y) = 3 THEN
      IF moy2(x - 2, y) = 1 THEN
      COLOR 4, 11
      LOCATE 18, 40: PRINT " HIT !!!  "
      LOCATE y + 5, (x + 24) * 2 + 1: PRINT "*"
      moy2(x, y) = 2
       IF x < 10 THEN
       IF moy2(x + 1, y) = 1 THEN moy2(x, y) = 3
       END IF
      DO WHILE INKEY$ = "": LOOP
      exitt = 0: exitt2 = 0: GOTO 1000
      END IF
      END IF

      IF moy2(x - 1, y) = 3 THEN
      IF moy2(x - 2, y) = 3 THEN
      IF moy2(x - 3, y) = 1 THEN
      COLOR 4, 11
      LOCATE 18, 40: PRINT " HIT !!!  "
      LOCATE y + 5, (x + 24) * 2 + 1: PRINT "*"
      moy2(x, y) = 2
      DO WHILE INKEY$ = "": LOOP
      exitt = 0: exitt2 = 0: GOTO 1000
      END IF
      END IF
      END IF

     
     END IF

     IF y < 10 THEN
      IF moy2(x, y + 1) = 1 THEN
      COLOR 4, 11
      LOCATE 18, 40: PRINT " HIT !!!  "
      LOCATE y + 5, (x + 24) * 2 + 1: PRINT "*"
     
      IF y > 1 THEN
      IF moy2(x, y - 1) = 1 OR moy2(x, y - 1) = 3 THEN
      moy2(x, y) = 3
      ELSE moy2(x, y) = 2
      END IF
      ELSE moy2(x, y) = 2
      END IF
     
      DO WHILE INKEY$ = "": LOOP
      exitt = 0: exitt2 = 0: GOTO 1000
      END IF
    
      IF moy2(x, y + 1) = 3 THEN
      IF moy2(x, y + 2) = 1 THEN
      COLOR 4, 11
      LOCATE 18, 40: PRINT " HIT !!!  "
      LOCATE y + 5, (x + 24) * 2 + 1: PRINT "*"
      moy2(x, y) = 2
       IF y > 1 THEN
       IF moy2(x, y - 1) = 1 THEN moy2(x, y) = 3
       END IF
      DO WHILE INKEY$ = "": LOOP
      exitt = 0: exitt2 = 0: GOTO 1000
      END IF
      END IF

      IF moy2(x, y + 1) = 3 THEN
      IF moy2(x, y + 2) = 3 THEN
      IF moy2(x, y + 3) = 1 THEN
      COLOR 4, 11
      LOCATE 18, 40: PRINT " HIT !!!  "
      LOCATE y + 5, (x + 24) * 2 + 1: PRINT "*"
      moy2(x, y) = 2
      DO WHILE INKEY$ = "": LOOP
      exitt = 0: exitt2 = 0: GOTO 1000
      END IF
      END IF
      END IF
    
     END IF

     IF y > 1 THEN
      IF moy2(x, y - 1) = 1 THEN
      COLOR 4, 11
      LOCATE 18, 40: PRINT " HIT !!!  "
      LOCATE y + 5, (x + 24) * 2 + 1: PRINT "*"
     
      IF y < 10 THEN
      IF moy2(x, y + 1) = 1 OR moy2(x, y + 1) = 3 THEN
      moy2(x, y) = 3
      ELSE moy2(x, y) = 2
      END IF
      ELSE moy2(x, y) = 2
      END IF
     
      DO WHILE INKEY$ = "": LOOP
      exitt = 0: exitt2 = 0: GOTO 1000
      END IF
    
      IF moy2(x, y - 1) = 3 THEN
      IF moy2(x, y - 2) = 1 THEN
      COLOR 4, 11
      LOCATE 18, 40: PRINT " HIT !!!  "
      LOCATE y + 5, (x + 24) * 2 + 1: PRINT "*"
      moy2(x, y) = 2
       IF y < 10 THEN
       IF moy2(x, y + 1) = 1 THEN moy2(x, y) = 3
       END IF
      DO WHILE INKEY$ = "": LOOP
      exitt = 0: exitt2 = 0: GOTO 1000
      END IF
      END IF

      IF moy2(x, y - 1) = 3 THEN
      IF moy2(x, y - 2) = 3 THEN
      IF moy2(x, y - 3) = 1 THEN
      COLOR 4, 11
      LOCATE 18, 40: PRINT " HIT !!!  "
      LOCATE y + 5, (x + 24) * 2 + 1: PRINT "*"
      moy2(x, y) = 2
      DO WHILE INKEY$ = "": LOOP
      exitt = 0: exitt2 = 0: GOTO 1000
      END IF
      END IF
      END IF

     END IF

     
COLOR 4, 11
LOCATE 18, 40: PRINT " KILLED ! "
LOCATE y + 5, (x + 24) * 2 + 1: PRINT "o"
moy2(x, y) = 2
lsc = lsc + 1
COLOR 15, 0
LOCATE 11, 42: PRINT lsc
  IF lsc = 10 THEN
  DO WHILE INKEY$ = "": LOOP
  CALL win
  endgame = 1
  GOTO 1010
  END IF


DO WHILE INKEY$ = "": LOOP
exitt = 0: exitt2 = 0: GOTO 1000
END IF


IF moy2(x, y) = 2 OR moy2(x, y) = 3 THEN
LOCATE 18, 40: PRINT "??????????"
GOTO 1010
END IF


COLOR 15, 11
LOCATE 18, 40: PRINT " MISSED ! "
LOCATE y + 5, (x + 24) * 2 + 1: PRINT "x"
moy2(x, y) = 2

1010
DO WHILE INKEY$ = "": LOOP

END SUB

SUB risunok
SHARED ships

COLOR 15, 0
LOCATE 3, 14: PRINT " YOUR SHIPS "
LOCATE 3, 54: PRINT " ENEMY SHIPS "
LOCATE 8, 34: PRINT " LOSSES :"
LOCATE 10, 32: PRINT "YOURS   :"
LOCATE 11, 32: PRINT "ENEMIES :"
LOCATE 18, 30: PRINT "STATUS : "
COLOR 11, 13
LOCATE 1, 20: PRINT " SEA BATTLE   by   BEREZANSKY ANDREY ! "

COLOR 7, 11
 LOCATE 6, 10: PRINT " . . . . . . . . . . "
 LOCATE 7, 10: PRINT " . . . . . . . . . . "
 LOCATE 8, 10: PRINT " . . . . . . . . . . "
 LOCATE 9, 10: PRINT " . . . . . . . . . . "
LOCATE 10, 10: PRINT " . . . . . . . . . . "
LOCATE 11, 10: PRINT " . . . . . . . . . . "
LOCATE 12, 10: PRINT " . . . . . . . . . . "
LOCATE 13, 10: PRINT " . . . . . . . . . . "
LOCATE 14, 10: PRINT " . . . . . . . . . . "
LOCATE 15, 10: PRINT " . . . . . . . . . . "
COLOR 1, 15
FOR y = 5 TO 14
IF y - 5 <> 0 THEN LOCATE y, 7: PRINT y - 5
NEXT
LOCATE 15, 7: PRINT " 10"
 LOCATE 5, 10: PRINT " A B C D E F G H I J "



COLOR 7, 11
 LOCATE 6, 50: PRINT " . . . . . . . . . . "
 LOCATE 7, 50: PRINT " . . . . . . . . . . "
 LOCATE 8, 50: PRINT " . . . . . . . . . . "
 LOCATE 9, 50: PRINT " . . . . . . . . . . "
LOCATE 10, 50: PRINT " . . . . . . . . . . "
LOCATE 11, 50: PRINT " . . . . . . . . . . "
LOCATE 12, 50: PRINT " . . . . . . . . . . "
LOCATE 13, 50: PRINT " . . . . . . . . . . "
LOCATE 14, 50: PRINT " . . . . . . . . . . "
LOCATE 15, 50: PRINT " . . . . . . . . . . "
COLOR 1, 4
FOR y = 5 TO 14
IF y - 5 <> 0 THEN LOCATE y, 47: PRINT y - 5
NEXT
LOCATE 15, 47: PRINT " 10"
 LOCATE 5, 50: PRINT " A B C D E F G H I J "
COLOR 7, 11


END SUB

SUB shipgrp
SHARED ships, yy, verhor, x1, y1
CALL risunok
DIM moy(10, 10)
verhor = 1
x1 = 1: y1 = 1

IF ships = 1 THEN yy = 3
IF ships = 2 THEN yy = 2
IF ships = 4 THEN yy = 1
IF ships = 7 THEN yy = 0
FOR iii = 0 TO yy
moy(1, iii + 1) = 1
NEXT

DO WHILE exitt = 0

FOR iii = 1 TO 10
FOR iiii = 1 TO 10
COLOR 1, 11
IF moy1(iii, iiii) = 1 THEN LOCATE (iiii + 5), (iii + 4) * 2 + 1: PRINT "*"
COLOR 4, 11
IF moy(iii, iiii) = 1 THEN LOCATE (iiii + 5), (iii + 4) * 2 + 1: PRINT "*"
NEXT iiii
NEXT iii


SELECT CASE INKEY$

CASE CHR$(0) + CHR$(80)
IF verhor = 1 AND y1 + yy < 10 THEN
y1 = y1 + 1
moy(x1, y1 - 1) = 0: moy(x1, y1 + yy) = 1
CALL risunok
END IF

IF verhor = 2 AND y1 < 10 THEN
y1 = y1 + 1
FOR re = x1 TO x1 + yy
moy(re, y1 - 1) = 0: moy(re, y1) = 1
NEXT
CALL risunok
END IF


CASE CHR$(0) + CHR$(72)
IF verhor = 1 AND y1 > 1 THEN
y1 = y1 - 1
moy(x1, y1 + yy + 1) = 0: moy(x1, y1) = 1
CALL risunok
END IF

IF verhor = 2 AND y1 > 1 THEN
y1 = y1 - 1
FOR re = x1 TO x1 + yy
moy(re, y1 + 1) = 0: moy(re, y1) = 1
NEXT
CALL risunok
END IF


CASE CHR$(0) + CHR$(77)
IF verhor = 2 AND x1 + yy < 10 THEN
x1 = x1 + 1
moy(x1 - 1, y1) = 0: moy(x1 + yy, y1) = 1
CALL risunok
END IF

IF verhor = 1 AND x1 < 10 THEN
x1 = x1 + 1
FOR re = y1 TO y1 + yy
moy(x1, re) = 1: moy(x1 - 1, re) = 0
NEXT
CALL risunok
END IF


CASE CHR$(0) + CHR$(75)
IF verhor = 2 AND x1 > 1 THEN
x1 = x1 - 1
moy(x1 + 1 + yy, y1) = 0: moy(x1, y1) = 1
CALL risunok
END IF

IF verhor = 1 AND x1 > 1 THEN
x1 = x1 - 1
FOR re = y1 TO y1 + yy
moy(x1, re) = 1: moy(x1 + 1, re) = 0
NEXT
CALL risunok
END IF


CASE " "
IF verhor = 1 AND x1 + yy < 11 THEN
FOR re = y1 + 1 TO y1 + yy
moy(x1, re) = 0
NEXT
FOR re = x1 + 1 TO x1 + yy
moy(re, y1) = 1
NEXT
CALL risunok
verhor = 2
GOTO 100
END IF

IF verhor = 2 AND y1 + yy < 11 THEN
FOR re = y1 + 1 TO y1 + yy
moy(x1, re) = 1
NEXT
FOR re = x1 + 1 TO x1 + yy
moy(re, y1) = 0
NEXT
CALL risunok
verhor = 1
END IF
100

CASE CHR$(13)
mm = 0
IF verhor = 1 THEN
IF y1 > 1 THEN y11 = y1 - 1
IF y1 = 1 THEN y11 = y1
IF y1 + yy = 10 THEN y12 = y1 + yy
IF y1 + yy < 10 THEN y12 = y1 + yy + 1

 FOR i = y11 TO y12
  IF moy1(x1, i) <> 0 THEN mm = mm + 1
   IF x1 > 1 THEN
    IF moy1(x1 - 1, i) <> 0 THEN mm = mm + 1
   END IF
   IF x1 < 10 THEN
    IF moy1(x1 + 1, i) <> 0 THEN mm = mm + 1
   END IF
 NEXT
 IF mm = 0 THEN
  FOR i = y1 TO y1 + yy
   moy1(x1, i) = 1
  NEXT
  exitt = 1
 END IF
END IF

IF verhor = 2 THEN
IF x1 > 1 THEN x11 = x1 - 1
IF x1 = 1 THEN x11 = x1
IF x1 + yy = 10 THEN x12 = x1 + yy
IF x1 + yy < 10 THEN x12 = x1 + yy + 1


 FOR i = x11 TO x12
  IF moy1(i, y1) <> 0 THEN mm = mm + 1
   IF y1 > 1 THEN
    IF moy1(i, y1 - 1) <> 0 THEN mm = mm + 1
   END IF
   IF y1 < 10 THEN
    IF moy1(i, y1 + 1) <> 0 THEN mm = mm + 1
   END IF
 NEXT
 IF mm = 0 THEN
  FOR i = x1 TO x1 + yy
   moy1(i, y1) = 1
  NEXT
  exitt = 1
 END IF
END IF

END SELECT

LOOP

END SUB

SUB win
CLS
COLOR 15, 0
LOCATE 7, 20: PRINT "YOU WIN !!!"
LOCATE 9, 25: PRINT "WELL DONE !!!"
LOCATE 11, 30: PRINT "PLAY AGAIN SOON !!!"

END SUB
