Алгоритм искусственного интеллекта для игры в Морской бой состоит из двух этапов: 1. нанесение ударов по шаблону для поиска 4-палубного и 2-палубных. 2. добивание раненного корабля и пометка клеток вокруг потопленного корабля. На этом уроке разберём и реализуем первый этап.
Дата отправки отчёта:
5 сентября 2016 г.
Задание выполнено: за
1 час. 30 мин.
Чему научился:
Повторил создание и обработку двумерных массивов.
Что было сложным:
Небольшая ошибка, опечатка в границах цикла при инициализации двумерного массива.
Комментарии:
Интересный алгоритм, случайный выбор из матрицы put ячейки с наибольшим значением веса.
Да, так и есть, перед каждым выстрелом динамически формируется матрица put, в которой хранятся веса. В алгоритме два режима - в первом мы ищем по все карте 4-палубники, заполняем матрицу put по приоритетным(диагональным) направлениям из статичного массива. После того, как попали по кораблю переходим во второй режим, в матрицу put устанавливаются только те ячейки, которые находятся в непосредственности близости от подбитой ячейки. А далее, независимо от режима алгоритма, из полученной матрицы put уже случайно выбирается ячейка.
Научился: Использование статичной матрицы - быстрое и эффективное решение, но не универсальное. Сам вначале хотел так сделать, но потом подумал зачем нам тогда ширина и высота моря? Поэтому программно формирую отдельные списки выстрелов для поиска 4-х палубников, 3-х палубников и т.д. Т.е. выстрелили, удалили из списка координаты и забыли. А так интересно посмотреть ход мыслей другого человека. )