Рис.1. Общая диаграмма |
На рис.1 изображена контекстная диаграмма проекта «Морской бой». Если рассматривать данный проект, как целостную систему, то можно указать внешние компоненты, обеспечивающие его функционирование.
К таковым относятся:
1. Координаты – клетка, выбранная непосредственно реальным игроком.
2. Координаты «кораблей» - расположение «кораблей» на игровом поле, выбранное реальным игроком.
3. Псевдоним – идентификатор игрока, позволяющий вести статистику.
Результатом работы системы является указание победителя и создание статистической записи.
Участниками процесса являются виртуальный и реальный игроки, причём действия последнего контролируются определенными ограничениями, продиктованными правилами игры.
Рис.2. Подсистемы |
На рис.2 показаны подсистемы разрабатываемого проекта. Наличие каждой из указанных подсистем обязательно для функционирования программы. Каждая подсистема выполняет конкретную функцию:
1. Заполнить игровое поле – сформировать массив координат для каждого игрока в соответствии с их указаниями и правилами игры, а также автоматически задать координаты при участии в игре виртуального игрока.
2. Сделать ход – определить очередность ходов и по принятым координатам выполнить определённые изменения массива координат игрока и противника, передав эти изменения на запись.
3. Записать результат и передать управление – определить последствия хода, записать изменения и указать, чьим будет следующий ход. Также данная подсистема определяет конец партии и передаёт результаты в статистику.
4. Выбрать координаты – автоматическая генерация координат для «выстрела» виртуального игрока и проверка правильности координат, заданных реальным игроком.
5. Заполнить форму статистики – сформировать запись об игроке с указанием длительности и результатов партии.
Рис.3. Заполнение поля |
На рис.3 показана схема заполнения игрового поля «кораблями». Она включает в себя следующие блоки:
Автоматическое создание массива координат – генерация координат «кораблей» для виртуального игрока, которая производится на основе алгоритма с элементами случайного выбора, благодаря чему размещения почти не повторяются.
Проверка координат – проверка координат, заданных реальным игроком, на соответствия правилам игры. Этот блок не даёт игроку выходить за границы игрового поля, ставить «корабли» вплотную друг к другу и начинать партию с неполным набором «кораблей».
Заполнение массива координат – создание массива координат для каждого игрока с выделением пустых клеток и «зоны отчуждения» вокруг «кораблей». В дальнейшем на основе сравнения этого массива с ходами игрока определяются результаты партии.
Рис.4. Ход игрока |
На рис.4. изображена схема определения координат следующего хода. В неё входят три функциональных блока:
1. Первым делом определяется игрок, которому принадлежит следующий ход. Каждому игроку соответствует идентификатор, который передаётся в метод проверки координат.
2. Проверка координат не даёт реальному игроку выбрать уже проверенные клетки и, в зависимости от определителя игрока, передаёт определённый набор координат на проверку результатов хода.
3. Определение результата хода – по сути своей и есть сам ход, в который входит выбор клетки и определение её типа (пуста/занята), а также типа корабля (ранен/убит), если клетка занята.