VB.NET, полиморфизм класса монстра
От: zmiulan Россия  
Дата: 17.01.09 18:45
Оценка:
Здравствуйте.
Опишу кратко суть вопроса:
Пишу на VB .NET 2008 (использую .NET 2.0)
Есть прототип игры — А, является ехе файлом.
В А в коде используется класс Monster.
Есть библиотека В, в которой этот класс реализован.
Требуется:
Не изменяя А, реализовать в В класс-наследник от Monster,
в котором будут переопределены некоторые функции.

Поясню на примере.
Есть Monster. В нём например функция GetHurt(hp as Byte) — отвечает за получение монстром урона.
Требуется, сделать другого Monster1 (реализованного в классе В на основе Monster)
и переопределить функцию GetHurt(hp as Byte) например чтобы монстр после получения урона лечился на +1.

Проблема в том, что в А используется только класс Monster, который представляет разных монстров.
А реализацию этих отличий я хочу сделать в библиотеке В.

Если не понятно что хочу, спрашивайте, постараюсь пояснить
.net vb.net visual basic класс полиморфизм
Re: VB.NET, полиморфизм класса монстра
От: Змиулан Россия  
Дата: 17.01.09 19:19
Оценка:
Напишу примерный код. Нужно чтобы в А всё работало без изменений.

А:
Private Sub makenewmonster(name as String)
    If name="1" Then
        Dim q As New Monster1
        Monsters.Add(q)
    Else
        Dim q As New Monster2
        Monsters.Add(q)
    End If
End Sub

Private Sub checkmonsters()
    For Each m As Monster In Monsters
        If m.Life=0 Then
            MsgBox("Монстр " & m.Name & " убит")
        End If
    Next
End Sub


B:
Public Class Monster

    Public Name as string
    Public Life as Byte
    Public Overridable Sub GetHurt(hp as Byte)
        Life=Life-hp
    End Sub

End Class

Public Class Monster1
Inherits Monster
    Public Overrides Sub GetHurt(hp as Byte)
        Life=Life-hp
        Life=Life+1
    End Sub
End Class

Public Class Monster2
Inherits Monster
End Class
Re[2]: VB.NET, полиморфизм класса монстра
От: Змиулан Россия  
Дата: 17.01.09 19:28
Оценка:
Стоп, отбой. Всё заработало! Видимо отвлёкся от кодинга, мозг заработал
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.