﻿Public Const board1 = "{5}"
Public Const board2 = "{6}"

Public Const userShip1 = "{0}"
Public Const userShip2 = "{1}"
Public Const userShip3 = "{2}"
Public Const userShip4 = "{3}"
Public Const userShip5 = "{4}"

Global g_logRow As Integer
Global g_gameEnded As Boolean
Global g_Ships As Collection
Global g_userShips As Collection
Public Function Collide(r1 As Range, r2 As Range) As Boolean
If r1.row + r1.Rows.Count > r2.row And r1.row < r2.row + r2.Rows.Count And _
      r1.column + r1.Columns.Count > r2.column And r1.column < r2.column + r2.Columns.Count Then
      Collide = True
Else
    Collide = False
End If
End Function
Public Sub AddShips(board As Range)
    Set g_Ships = New Collection
    
    Dim s1 As New Ship
    
    s1.Size = 5
    Set s1.Position = GetShipPos(board, s1.Size)
    g_Ships.Add s1, "carrier"
    
    Dim s2 As New Ship
    s2.Size = 4
    Set s2.Position = GetShipPos(board, s2.Size)
    g_Ships.Add s2, "battleship"

    Dim s3 As New Ship
    s3.Size = 3
    Set s3.Position = GetShipPos(board, s3.Size)
    g_Ships.Add s3, "sub"

    Dim s4 As New Ship
    s4.Size = 3
    Set s4.Position = GetShipPos(board, s4.Size)
    g_Ships.Add s4, "cruiser"

    Dim s5 As New Ship
    s5.Size = 2
    Set s5.Position = GetShipPos(board, s5.Size)
    g_Ships.Add s5, "destroyer"
End Sub
Public Sub AddUserShips(board As Range)
    Set g_userShips = New Collection
    
    Dim s1 As New Ship
    
    s1.Size = 5
    Set s1.Position = Battleship.Range(userShip1)
    g_userShips.Add s1, "carrier"
    
    Dim s2 As New Ship
    s2.Size = 4
    Set s2.Position = Battleship.Range(userShip2)
    g_userShips.Add s2, "battleship"

    Dim s3 As New Ship
    s3.Size = 3
    Set s3.Position = Battleship.Range(userShip3)
    g_userShips.Add s3, "sub"

    Dim s4 As New Ship
    s4.Size = 3
    Set s4.Position = Battleship.Range(userShip4)
    g_userShips.Add s4, "cruiser"

    Dim s5 As New Ship
    s5.Size = 2
    Set s5.Position = Battleship.Range(userShip5)
    g_userShips.Add s5, "destroyer"
End Sub
Public Function GetShipPos(board As Range, ByVal Size As Integer) As Range
    Dim row As Integer, column As Integer
    Dim Horizontal As Integer
    
    Do
        Randomize
        row = (Rnd * (board.Rows.Count - 1)) + 1
        column = (Rnd * (board.Rows.Count - 1)) + 1
        Horizontal = Rnd
    
        If Horizontal = 1 Then
            If column - Size > 0 And column + Size < 10 Then
                If Rnd = 0 Then
                        Set GetShipPos = board.Range(Cells(row, column), Cells(row, column + Size - 1))
                Else
                        Set GetShipPos = board.Range(Cells(row, column - Size + 1), Cells(row, column))
                End If
            ElseIf column - Size > 0 Then
                Set GetShipPos = board.Range(Cells(row, column - Size + 1), Cells(row, column))
            Else
                Set GetShipPos = board.Range(Cells(row, column), Cells(row, column + Size - 1))
            End If
        Else
            If row - Size > 0 And row + Size < 10 Then
                If Rnd = 0 Then
                        Set GetShipPos = board.Range(Cells(row, column), Cells(row + Size - 1, column))
                Else
                        Set GetShipPos = board.Range(Cells(row - Size + 1, column), Cells(row, column))
                End If
            ElseIf row - Size > 0 Then
                Set GetShipPos = board.Range(Cells(row - Size + 1, column), Cells(row, column))
            Else
                Set GetShipPos = board.Range(Cells(row, column), Cells(row + Size - 1, column))
            End If
        End If
    Loop Until ValidSpot(GetShipPos)
End Function
'Make sure the spot isn't occupied
Private Function ValidSpot(r As Range) As Boolean
    Dim oShip As Ship
    For Each oShip In g_Ships
        If Code.Collide(r, oShip.Position) Then
            ValidSpot = False
            Exit Function
        End If
    Next
    ValidSpot = True
End Function

Public Sub SetHit(Target As Range)
    Target.Worksheet.Unprotect
    With Target.Borders(xlDiagonalDown)
     .LineStyle = xlContinuous
     .Color = ColorConstants.vbBlack
     .TintAndShade = 0
     .Weight = xlMedium
    End With
    With Target.Borders(xlDiagonalUp)
     .LineStyle = xlContinuous
     .Color = ColorConstants.vbBlack
     .TintAndShade = 0
     .Weight = xlMedium
    End With
    Target.Worksheet.Protect ""
End Sub
Public Function CheckWinner(ships As Collection) As Boolean
    Dim oShip As Ship
    For Each oShip In ships
        If oShip.Hits.Count < oShip.Position.Cells.Count Then
            CheckWinner = False
            Exit Function
        End If
    Next
    CheckWinner = True
End Function
