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

Формула программиста
основатель — Волосатов Евгений Витольдович
Вебинар «Yii + PHP = Завершение» начнётся через 14 час. 57 мин.

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

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




Оцени работу

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

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

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


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

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


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

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


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

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


  • Отчёт оценивали:
    459Сергей Сергеевич+1   1Евгений Волосатов+1   8005Александр+1   4992Николай+1   6458Илья+1   7901Влад+1   8Василевская Елена0   3747Сергей+1   6925Артём+1   7645Александр Львович+1   6203Николай (nick27m)+1   7276Ильшат+1   6958Кирилл+1   4395Денис+1   8274Виктор 0   7448Sergey Shumskiy+1   5882Александр Широков+1   24Олюшка+1   4732Sergey+1   1232Фомичева Наталья+1   7449Elena Karpanova+1   2725Anton+1   2146Иван+1  

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




Чтобы стать хорошим программистом — нужно писать программы. На нашем сайте очень много практических упражнений.

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

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

Ты в любой момент сможешь отписаться от рассылки.
Научился: Сoздaл матрицy шaблoнa для удapов. Нaпиcал функции InitPut и RandomPut. Сoздaл алгоpитм выбopa точeк пo шаблонy. Нaпиcал функцию oтoбpaжения мaтpицы put на крaсном фоне.
Трудности: Сохранять концентрацию
Это самый тяжелый для меня курс на данный момент. Я весь в мыле!
Научился: я не стал создавать два лишних массива, а определял следующую точку математически (для 4х-палубных - начинаем с 4й точки на первой строке, далее для каждой строки первая точка сдвигается влево, отдаётся на выстрел каждая четвёртая на очередной строке. когда строки заканчивались, математически определял точки для поиска 2х-палубных аналогично) поэтому я не делал всего что связано с массивом put. в основном переделывал свой алгоритм, чтобы он работал в проекте ShipMission
Трудности: долго отлавливал баги, связанные с заменой циклов while и переделыванием "кучи функций в одном потоке" на несколько функций, пошагово возварщающие нужные точки
можно было бы не использовать массив put и ограничиться массивом shape, вкотором на очередном шаге ставить нули в нужных местах.