Рисунок 2.1 Диаграмма классов окон программы.
Структура программы также содержит три основные функциональные части:
Рисунок 2.2 Диаграмма классов работы с лабиринтом.
Лабиринт реализуется классом CMaze, структура которого приведена на рисунке 2.2. Как видно, в классе реализованы 2 конструктора, один из них дает возможность создания лабиринта «с чистого листа». Для этого необходимо указать его размеры, начальную и конечную локации. Можно также загрузить (второй конструктор) или сохранить лабиринт (метод SaveToFile), указав поток ввода-вывода. Предварительно необходимо открыть соответствующий этому потоку файл. У готового лабиринта можно получить доступ к массиву стен (через метод Walls), которые можно строить или разрушать, используя метод SetWall (в третьем параметре указывается действие – поставить, или убрать стену). Можно также получить размер лабиринта – ширину и высоту в ячейках (свойство Size). А также получить доступ к классу игрока (свойство Player), о котором пойдет речь далее.
Класс игрока CPlayer реализует возможность перемещения по лабиринту, и обеспечивает информацию о текущем состоянии (структура класса приведена на рисунке 2.2). Игрок может перемещаться по полю, при этом проверка на физическую возможность прохода в указанную ячейку не производится, производится лишь проверка на достижение конечной локации лабиринта (метод Move). Реализовано два конструктора, на случай создания лабиринта «с нуля», при этом игрок располагается в начальной локации, или же для загрузки из файла, при этом явно указывается текущее положение игрока. Для чтения доступны такие параметры как: начальная, текущая и конечная локации (свойства EnterPoint, CurrentPosition и ExitPoint соответственно), которые используются для перерисовки.
Уважаемый посетитель!
Чтобы распечатать файл, скачайте его (в формате Word).
Ссылка на скачивание - внизу страницы.