Сервер "Игры в доминирование"
По описанию работы сервера игры в доминирование можно составить следующий список его интерфейсных форм и функций, сгруппированных в модули:
- "Ядро игры" — модуль VBA, отвечающий за выполнение основных функций сервера на всех этапах игры (назовем их состояниями игры). К этим этапам относятся:
- инициализация игры (создание игрового поля);
- ожидание подключения игроков, начало игры (назначение цвета игроку, выдача фишек и посылка стартового сообщения);
- игра начата (обработка заявки игрока — попытка принять ход игрока, изменение текущего состояния игрового поля, отключение игрока);
- окончание игры (проверка условий окончания игры, подведение итогов с рассылкой результатов игрокам).
Работу сервера удобно реализовать в виде конечного автомата, который может находиться в одном из перечисленных состояний и переходить из одного состояния в другое после выполнения необходимых действий или в результате возникновения определенного события.
- "Сервер" — форма, обеспечивающая интерфейс ведущего игры. Ведущему предоставляется возможность начать или прервать игру, установить конфигурацию игры, просмотреть текущее состояние игрового поля и закрыть приложение.
- "Конфигурация" — форма, обеспечивающая создание, сохранение, выбор и установку конфигурации игры в доминирование (смежность клеток с весом), а также установку числа подключаемых игроков, количества фишек и размера игрового поля.
- "Обмен данными" — модуль VBA, отвечающий за посылку сообщений игрокам.
- "Игровое поле" — модуль VBA, отвечающий за изображение текущего состояния игрового поля в виде страницы доступа к данным.
- "Адресация клеток" — модуль VBA, отвечающий за выполнение преобразования номера столбца и строки в адрес клетки игрового поля. Адресация клеток на игровом поле реализована подобно адресации клеток на рабочем листе Excel. Для идентификации столбца используются одна или две латинские заглавные буквы от А до Z в лексикографическом порядке, а для идентификации строки — номер: целое число, начиная с единицы.
- "Параметры" — модуль VBA, содержащий функции чтения/записи параметров игры.
Основная процедура серверной части игры в доминирование — это процедура обработки события Таймер (Timer) формы "Сервер", представляющая собой конечный автомат, состояниями которого являются этапы игры. Вызов этой процедуры соответствует такту работы сервера, он происходит периодически, через определенный промежуток времени, заданный в окне свойств формы "Сервер" в качестве значения параметра Интервал таймера (Timer Interval) (число миллисекунд). В каждом из состояний сервер вызывает соответствующую состоянию функцию из модуля "Ядро игры" для выполнения определенных действий.
Сервер может находиться в одном из состояний, определяющих функцию, которая будет выполнена сервером за очередной такт. Например, в состоянии "игра начата" сервер проверяет наличие заявки от одного из игроков и, если она есть, выполняет ее. Заявки игроков можно разделить на две категории: сделать ход и выйти из игры. Результатом обработки заявки игрока является выполнение сервером необходимых действий и посылка игроку сообщения о результате этих действий.
По данному описанию сервера создана диаграмма вариантов использования, представленная на рис. П 2.5.
Рис. П 2.5. Диаграмма вариантов использования для сервера "Игры в доминирование"