Я кодирую классическую игру Sokoban. У меня есть класс с именем «Склад», который представляет собой склад и класс с именем «WarehouseItem», который является базовым классом для предметов, принадлежащих складу.Логическая проблема между двумя классами
Я хотел следующие операции можно:
Dim wh as Warehouse
Dim whItem as WarehouseItem
wh.Add(whItem)
wh.Remove(whItem)
whItem.Warehouse = wh
whItem.Warehouse = Nothing
Проблема заключается в том, что я в конечном итоге с функциями выше, пытаясь вызвать друг друга рекурсивно, и я не знаю, как повиноваться ему (и где я делаю ошибку). Вот как это выглядит:
Class Warehouse
...
Items as List(Of WarehouseItem)
Sub Add(item as WarehouseItem)
Items.Add(item)
wh.Warehouse = wh // Recursive call
End Sub
...
End Class
Class WarehouseItem
...
Private mWarehouse as Warehouse
Property Warehouse As Warehouse
...
Set(wh As Warehouse)
mWarehouse = wh
mWarehouse.Add(me) // Recursive call
End Set
End Property
...
End Class
Я был бы признателен за любые советы о том, как я могу изменить код таким образом, вышеописанные операции можно выполнить.
Это очень распространенная проблема начинающих в объектно-ориентированном программировании в целом и не зависит от разработки игр. – Philipp