- карта представляет собой массив, скажем, 10х10 (myMap(9, 9) as Integer);
- каждая ячейка хранит в себе информацию о номере объекта;
- каждый объект относится к какому-то определенному типу, который представлен отдельным классом (т.е. двери – класс Doors, стены – класс Walls и т.д.).
- Код: Выделить всё
'Массив объектов
Public myObjects(1023) As Object
'Описание объекта
Type ObjectType
'Координаты на карте
X As Single
Y As Single
'Номер объекта
Number As Integer
'Основной тип объекта (дверь, стена, т.д.)
mainType As Integer
End Type
Public mapObject(1023) As ObjectType
'Карта
Public myMap(9, 9) As Integer
Public Sub Map_Init()
'Заполняем массив карты данными
For n = 0 To 1023
'Берем координаты объекта и вставляем его номер в массив карты
myMap(mapObject(n).Y, mapObject(n).X) = mapObject(n).Number
'Создаем соотвествующий объект из класса
Select Case mapObject(n).mainType
'Допустим объект - дверь
Case Is = 1
Set myObjects(n) = New Class1
'Допустим объект - стена
Case Is = 2
Set myObjects(n) = New Class2
End Select
Next
End Sub
В последствии за каждой ячейкой закреплен объект, с которым мы можем выполнять какие-то действия (допустим это дверь, тогда myObjects(n).Open и т.д.).
Мне кажется, что я сильно мудрю. Есть ли какие-нибудь варианты более простой реализации?