Как сделать добивание корабля в морском бою на с++?

165
21 апреля 2018, 19:20

Доброго времени суток. Пишу сейчас консольный морской бой на С++ (можно даже сказать С поскольку без использования классов)ю Сделал расстановку кораблей, стрельбу за игрока, и стрельбу компьютеру. Но ломаю голову над алгоритмом добивания, то есть когда ИИ попал в корабль нужно, чтобы он продолжал стрелять в той же области. Единственное, что пришло это сохранять координаты в статическую переменную и потом циклом проверять что есть вокруг. Но идея сырая и не реализована. Хотелось бы узнать как вы решали данную проблему (код не обязательно, алгоритм подкиньте). Пишу в обычной процедурке.

Answer 1

Впринципе вы все правильно решили: берете координаты поподания и пытаетесь понять в какую сторону развернут корабль - для этого сгодится и обычный рандом. Когдс же направление найдено, то стрелять до тех пор, пока корабль не затонет, либо пока не выйдет за пределы коробля и стрелять в противоположную сторону для затопления. Функции rand, do while и for в помощь

Answer 2

Статическая переменная с координатами точки попадания (х,у). Рассмотрим точку не являющуюся концом поля. 1 Проверяем (х+1,у): - да - корабль расположен вдоль оси х, ставим соответствующий флаг. Долбим дальше пока не промахнемся, далее (х-1,у) и дальше пока не промах, после чего корабль затонул. Иначе 2 проверяем (х,у+1) все по аналогии с 1 Так же 3 (х-1,у) 4 (х,у-1) Если нет, то корабль одинарный, затонул. Для разнообразия можно произвести рандомизацию направлений поиска по некой переменной. Так же следует учитывать конец поля На сколько я понял архитектуру функция должна быть сквозная (без циклов) и исполняется во время хода компьютера, поэтому переходы внутри нее должны базироваться на статических флагах/переменных внутри нее.

READ ALSO
Ввод в wxWidgets в TextCtrl

Ввод в wxWidgets в TextCtrl

Мне нужны целые числа при вводе в TextCtrl но он принимает только wxStringКак можно безопасно форматировать wxString в int с помощью C++?

194
Работа в Windows на C\C++

Работа в Windows на C\C++

Есть простая программа на С++ под Windows, которая открывает файл и которая лежит в новая папка 1 на рабочем столеФайл лежит в том же месте, где...

151
Предупреждение “class X должен иметь dll-интерфейс для использования клиентами class Y”

Предупреждение “class X должен иметь dll-интерфейс для использования клиентами class Y”

ЗдравствуйтеПродолжаю постигать хитросплетения С++

165
Изменение цвета рамки (WinAPI C++)

Изменение цвета рамки (WinAPI C++)

Как изменить цвет рамки в классическом приложении WinAPI? Как менять фон, я разобралсяА как задать не системный цвет окна? Допустим, у меня цветовая...

162