Dim rPosition As Range
Public HitCount As Integer
Dim oSize As Integer
Dim m_hits As Collection

Public Property Get Position() As Range
    Set Position = rPosition
End Property
Public Property Set Position(ByVal value As Range)
    Set rPosition = value
End Property

Public Function IsHit(cell As Range, isPlayer As Boolean) As Boolean
Attribute IsHit.VB_Description = "Checks if the current move is a hit"
Attribute IsHit.VB_HelpID = 1
'Sample of attribute use on function level (show up in the objectbrowser(F2) --> Method --> Properties
   If Code.Collide(cell, Position) Then
        cell.Worksheet.Unprotect
        cell.Interior.Color = vbRed
        isHit = True
        Hits.Add cell
        If Hits.Count = Size Then
            Position.BorderAround Weight:=xlMedium
        End If
        
        If isPlayer Then
            Battleship.Cells(g_logRow, 2).value = "You get a hit on " & cell.Address & "!"
            Battleship.Names("PlayerHits").RefersToRange.value = Battleship.Names("PlayerHits").RefersToRange.value + 1
        Else
            Battleship.Cells(g_logRow, 2).value = "The Computer gets a hit on " & cell.Address
            Battleship.Names("ComputerHits").RefersToRange.value = Battleship.Names("ComputerHits").RefersToRange.value + 1
        End If
        g_logRow = g_logRow + 1
        cell.Worksheet.Protect ""
        isHit = True
   Else
        isHit = False
   End If
End Function
Public Property Get Hits() As Collection
    Set Hits = m_hits
End Property
Public Property Set Hits(ByVal value As Collection)
    Set m_hits = value
End Property
Private Sub Class_Initialize()
    HitCount = 0
    Set Hits = New Collection
End Sub
Public Property Get Size() As Integer
Size = oSize
End Property
Public Property Let Size(ByVal vNewValue As Integer)
oSize = vNewValue
End Property
