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