MazeGame — различия между версиями
Admin (обсуждение | вклад) (Новая страница: «MazeGame - программа, строящая лабиринт для компьютерной игры. Лабиринт - это множество комн…») |
Admin (обсуждение | вклад) |
||
Строка 1: | Строка 1: | ||
+ | [[Страница_курса_Паттерны_проектирования| К основной странице курса]] | ||
+ | |||
MazeGame - программа, строящая лабиринт для компьютерной игры. | MazeGame - программа, строящая лабиринт для компьютерной игры. | ||
Версия 21:21, 26 августа 2014
MazeGame - программа, строящая лабиринт для компьютерной игры.
Лабиринт - это множество комнат. Любая комната знает о своих соседях. Соседями могут быть другие комнаты, стены и двери.
Классы Room, Door и Wall являются потомками интерфейса MapSite - компонента лабиринта. В нем - только одна операция - Enter() - войти. Кроме того, он реализует интерфейс клонирования, что понадобится нам в одном из примеров.
У каждой комнаты - 4 стороны, задаваемые направлениями
enum Direction { North, South, East, West };
Каждая комната Room имеет номер и ссылки на другие объекты MapSite по всем четыре направлениям.
Каждая стена Wall характеризуется двумя комнатами, находящимися по разные стороны от двери, а также флагом, открыта ли дверь, определяющим. можно ли в нее войти. Входя в дверь, мы входим в соседнюю комнату.
Класс лабиринта Maze может добавлять новые комнаты к внутреннему списку и имеет функцию RoomNo определения комнаты по ее номеру.
Наконец, класс MazeGame создает и возвращает лабиринт вызовом функции CreateMaze().
Функция CreateMaze() различается для четырех рассматриваемых далее паттернов: