| 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 |