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