89 lines
3.4 KiB
Plaintext
89 lines
3.4 KiB
Plaintext
classDiagram
|
|
class Клетка {
|
|
+int x, y
|
|
+bool стена, старт, выход
|
|
+int вес
|
|
+проходима()
|
|
}
|
|
class Лабиринт {
|
|
+int ширина, высота
|
|
+Клетка[][] клетки
|
|
+Клетка стартоваяКлетка, выходнаяКлетка
|
|
+получитьКлетку(x,y)
|
|
+получитьСоседей(клетка)
|
|
+установитьСтарт(x,y)
|
|
+установитьВыход(x,y)
|
|
}
|
|
class СтроительЛабиринта {
|
|
<<интерфейс>>
|
|
+построитьИзФайла(имяФайла)
|
|
}
|
|
class СтроительИзТекстовогоФайла {
|
|
+построитьИзФайла(имяФайла)
|
|
}
|
|
class СтратегияПоискаПути {
|
|
<<интерфейс>>
|
|
+найтиПуть(лабиринт, старт, выход)
|
|
}
|
|
class ПоискВШирину
|
|
class ПоискВГлубину
|
|
class Астар
|
|
class Дейкстра
|
|
class РешательЛабиринта {
|
|
-Лабиринт лабиринт
|
|
-СтратегияПоискаПути стратегия
|
|
+установитьСтратегию(стратегия)
|
|
+решить() СтатистикаПоиска
|
|
}
|
|
class СтатистикаПоиска {
|
|
+int длинаПути
|
|
+int посещеноКлеток
|
|
+float времяМс
|
|
}
|
|
class Наблюдатель {
|
|
<<интерфейс>>
|
|
+обновить(событие, данные)
|
|
}
|
|
class КонсольноеПредставление {
|
|
+обновить(событие, данные)
|
|
-отобразить()
|
|
}
|
|
class Команда {
|
|
<<интерфейс>>
|
|
+выполнить()
|
|
+отменить()
|
|
}
|
|
class КомандаПеремещения {
|
|
-Игрок игрок
|
|
-Лабиринт лабиринт
|
|
-String направление
|
|
+выполнить()
|
|
+отменить()
|
|
}
|
|
class Игрок {
|
|
+Клетка позиция
|
|
+переместитьсяВ(клетка)
|
|
}
|
|
class КонтроллерИгры {
|
|
-List наблюдатели
|
|
-Stack команды
|
|
+подписать(наблюдатель)
|
|
+уведомить(событие, данные)
|
|
+выполнитьКоманду(команда)
|
|
+отменить()
|
|
}
|
|
|
|
СтроительЛабиринта <|-- СтроительИзТекстовогоФайла
|
|
СтратегияПоискаПути <|-- ПоискВШирину
|
|
СтратегияПоискаПути <|-- ПоискВГлубину
|
|
СтратегияПоискаПути <|-- Астар
|
|
СтратегияПоискаПути <|-- Дейкстра
|
|
РешательЛабиринта --> СтратегияПоискаПути
|
|
РешательЛабиринта --> Лабиринт
|
|
Лабиринт --> Клетка
|
|
КонтроллерИгры --> Игрок
|
|
КонтроллерИгры --> Команда
|
|
КонтроллерИгры --> Наблюдатель
|
|
КомандаПеремещения --> Игрок
|
|
КомандаПеремещения --> Лабиринт
|
|
КонсольноеПредставление ..|> Наблюдатель |