- •Содержание
- •1 Математическая постановка задача
- •2 Метод решения задачи
- •3 Укрупненная структура разработанной программы и описание
- •4 Схемы алгоритмов решения задачи и их описание
- •5 Результаты тестирования разработанного программного средства
- •6 Методика работы пользователя с разработанным программным средством
- •Приложение а Исходный текст программного средства
4 Схемы алгоритмов решения задачи и их описание
При реализации программного средства было построено несколько алгоритмов для работы искусственного интеллекта.
Ниже в виде схем Насси-Шнейдермана представлены алгоритмы основных функций, используемых в программе, а именно: Функция Draw (схема 1), Функция ShootPlayer (x, y, n) (схема 3), Функция Shoot (схема 5).
Так же основне алгоритмы представлены ниже в виде основних схем Дамке, а именно: Функция Draw (схема 2), Функция ShootPlayer (x, y, n) (схема 4), Функция Shoot (схема 5).
Изначально пользователю необходимо выбрать сложность, ввести имя, а так же расставить корабли, или же использовать автоматическую функцию. После чего происходит инициализация введенных значений.
Затем происходит формирование заполнения поля компьютера.
|
Определить значение key, x, y | |||
|
Да Нет | |||
|
Нарисовать промах в ячейке х, у
|
| ||
|
Да Нет | |||
|
Нарисовать в ячейке х, у подбитую палубу
|
| ||
|
Да Нет | |||
|
і от 1 до количество палуб
|
| ||
|
|
Да Нет | ||
|
Рисовать палубу в ячейке х, у+і |
Рисовать палубу в ячейке х+і, у
| ||
Схема 1 – Алгоритм функции Draw, отвечающей за рисование кораблей по методу Насси-Шнейдермана
Следующая диаграмма отображает алгоритм функции Draw, отвечающей за рисование кораблей с помощью диаграммы Дамке (схема 2).

Схема 2 – диаграмма Дамке для алгоритма функции Draw, отвечающей за рисование кораблей
Следующая диаграмма отображает алгоритм функции ShootPlayer, отвечающей за рисование кораблей с помощью диаграммы Насси-Шнейдермана (схема 3).
|
Проверить куда пришлось попадание | ||
|
Нет Да | ||
|
Нарисовать след от выстрела |
Да Нет | |
|
Запомнить, что туда уже стреляли |
Нарисовать подбитую палубу
|
Сообщить о попадании в расстрелянную ранее ячейку |
|
|
Запомнить, что туда уже стркляли |
|
Схема 3 – диаграмма Насси-Шнейдермана для алгоритма функции ShootPlayer, отвечающей выстрелы игрока в корабли
Ниже в виде схем Дамке представлен алгоритм функции ShootPlayer для ведения огня игроком(схема 4).

Схема 4 - алгоритм функции ShootPlayer по методу Дамке
Следующая диаграмма отображает алгоритм функции Shoot, отвечающей за попадания в корабли компьютера с помощью диаграммы Насси-Шнейдермана (схема 5).
|
Запомнить результата выстрела в ShootPlayer | |||||
|
Да Нет | |||||
|
Да Нет |
бесконечно | ||||
|
|
Генерация x, y, для CPU | ||||
|
Конец раунда
|
Выход
|
Запомнить результат выстрела компьютера в ShootCPU | |||
|
Выход |
Да Нет | ||||
|
уничтожен
Да Нет |
Прервать цикл | ||||
|
Конец раунда |
|
Выход | |||
|
Выход |
|
| |||
Схема 5 – диаграмма Насси-Шнейдермана для алгоритма функции Shoot
Ниже алгоритм функции Shoot, отвечающей за попадания в корабли компьютера по методу Дамке представлен на схеме 6.

Схема 6 - алгоритм функции Shoot, отвечающей за попадания в корабли компьютера по методу Дамке


Key
= промах
Кеу
= попадание
Кеу
= нарисовать корабль
По
вертикали
Мимо
В
цель
в ShootPlayer
попадание
Флот
CPU
уничтожен
в
ShootCPU
попадание
Флот
игрока