Курсы по программированию

Формула программиста

основатель — Волосатов Евгений Витольдович
Поздравляю с 1 сентября! Система начисления Байтов работает.

Морской Бой / Олимпиада - Создание ИИ - Шаблон ударов

  • Алгоритм искусственного интеллекта для игры в Морской бой состоит из двух этапов:
    1. нанесение ударов по шаблону для поиска 4-палубного и 2-палубных.
    2. добивание раненного корабля и пометка клеток вокруг потопленного корабля.
    На этом уроке разберём и реализуем первый этап.
  • Дата отправки отчёта: 14 декабря 2015 г.
  • Задание выполнено: за 1 час. 00 мин.
  • Чему научился: Грамотно раскладывать свой алгоритм на отдельные методы.
  • Что было сложным: Ничего.
  • Комментарии: Было очень интересно сравнить структуру своего кода для Mission.cs с предложенным здесь.
  • Оценка видео-уроку:
Отчёт от 7980 за Морской Бой / Олимпиада - Создание ИИ - Шаблон ударов




Оцени работу

 
Сохранить страницу:

24. --
Олюшка
Олюшка
ответить
→  Сергей Лузум  # Морской Бой / Олимпиада - Создание ИИ - Шаблон ударов / 2015-12-15 16:47

Сергей, как я рада что все у тебя супер! Вот только ты сравнил, а не поделился впечатлениями? Интересно узнать твое мнение о предложенном в уроке коде!


7980. --
Сергей Лузум
Сергей Лузум
ответить
→  Олюшка  # Морской Бой / Олимпиада - Создание ИИ - Шаблон ударов / 2015-12-15 18:44

Попробую сравнить.)
Сами алгоритмы разные. Свой я описал в уроке "Самый лучший алгоритм", а реализованный здесь алгоритм разбирается в самом уроке. Поэтому подробно каждый из них описывать не стоит.
Дальше: что касается реализации моего алгоритма, то не всё удалось сделать так, как задумывал. Не получилось отмечать поля вокруг подбитого/ убитого корабля как "мимо". Была мысль, что хорошо бы ввести для этого свою матрицу (как, кстати, и сделано в алгоритме Евгения Витольдовича), но я побоялся сделать программу совсем запутанной. Теперь, просмотрев урок, прочувствовал всю пользу от такой "личной" карты.) Вместо этого я просто стал проверять, какие клетки окружают поле будущего выстрела и на месте решать: стрелять или нет. В отличие от разобранного здесь алгоритма, мой не отслеживал подбитые корабли (какой длины и сколько).
Ну и самое главное: разобранный здесь алгоритм очень аккуратно разделён на отдельные процедуры и функции, имеет чёткую структуру. Поэтому в нём намного легче ориентироваться. А в моём пока беспорядок, так как многое дорабатывалось по ходу  написания программы  и оставалось в том виде, в каком только-только переставало "глючить".
В общем, мой алгоритм вполне работоспособен, но очень плохо структурирован. Приведённый же в этом уроке алгоритм имеет хорошо продуманную структуру.
Именно такому подходу к написанию программ, такому мышлению я и пытаюсь научиться!)


24. --
Олюшка
Олюшка
ответить
→  Сергей Лузум  # Морской Бой / Олимпиада - Создание ИИ - Шаблон ударов / 2015-12-15 20:55

Сергей, спасибо за подробное объяснение! :)
Уверена что после реализации полностью игры ты тоже сделаешь рефакторинг, наведешь красоту и у себя! :)
На данном этапе главное что работает и об этого Евгений часто говорит: "для начало сделать чтобы работало"! Молодец! :)


7980. --
Сергей Лузум
Сергей Лузум
ответить
→  Олюшка  # Морской Бой / Олимпиада - Создание ИИ - Шаблон ударов / 2015-12-15 23:51

Спасибо! При такой поддержке не может не получиться!!!))



Начинаем практику по языку C#





Если вы пришли без приглашения -
введите тысяча двадцать четыре (цифрами).
Чтобы стать хорошим программистом — нужно писать программы. На нашем сайте очень много практических упражнений.

После заполнения формы ты будешь подписан на рассылку «C# Вебинары и Видеоуроки», у тебя появится доступ к видеоурокам и консольным задачам.

Несколько раз в неделю тебе будут приходить письма — приглашения на вебинары, информация об акциях и скидках, полезная информация по C#.

Ты в любой момент сможешь отписаться от рассылки.


Научился: понял как в уроке спроектировали массивы и все продумали
все понятно и интересно


Научился: Использование статичной матрицы - быстрое и эффективное решение, но не универсальное. Сам вначале хотел так сделать, но потом подумал зачем нам тогда ширина и высота моря? Поэтому программно формирую отдельные списки выстрелов для поиска 4-х палубников, 3-х палубников и т.д. Т.е. выстрелили, удалили из списка координаты и забыли. А так интересно посмотреть ход мыслей другого человека. )