Алгоритм искусственного интеллекта для игры в Морской бой состоит из двух этапов: 1. нанесение ударов по шаблону для поиска 4-палубного и 2-палубных. 2. добивание раненного корабля и пометка клеток вокруг потопленного корабля. На этом уроке разберём и реализуем первый этап.
Дата отправки отчёта:
5 сентября 2016 г.
Задание выполнено: за
1 час. 30 мин.
Чему научился:
Повторил создание и обработку двумерных массивов.
Что было сложным:
Небольшая ошибка, опечатка в границах цикла при инициализации двумерного массива.
Комментарии:
Интересный алгоритм, случайный выбор из матрицы put ячейки с наибольшим значением веса.
Да, так и есть, перед каждым выстрелом динамически формируется матрица put, в которой хранятся веса. В алгоритме два режима - в первом мы ищем по все карте 4-палубники, заполняем матрицу put по приоритетным(диагональным) направлениям из статичного массива. После того, как попали по кораблю переходим во второй режим, в матрицу put устанавливаются только те ячейки, которые находятся в непосредственности близости от подбитой ячейки. А далее, независимо от режима алгоритма, из полученной матрицы put уже случайно выбирается ячейка.
Научился: Грамотно раскладывать свой алгоритм на отдельные методы. Было очень интересно сравнить структуру своего кода для Mission.cs с предложенным здесь.
Научился: реализовать свою идею. что-то мне ещё не хватает мощи самому писать придуманный мною алгоритм массив int[,] shape нужно заполнять динамически, ведь мы знаем размер поля (его можно получить через Море.размер_моря.х*у), и на основе этих данных заполнять поле, вдруг у нас поменяется размер, и уже такая сеточка не проканает.