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

Формула программиста
основатель — Волосатов Евгений Витольдович
Вступай в Телеграм чат проекта | Обход блокировки
Игровой комплекс Сокобан - Введи код скидки

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

  • Алгоритм искусственного интеллекта для игры в Морской бой состоит из двух этапов:
    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

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



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




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

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

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

Ты в любой момент сможешь отписаться от рассылки.
Научился: Правильно реализовывать свою идею.
Трудности: легко, когда сам помучаешься.
Понял что не надо было создавать дополнительный объект класса Море для выстрелов, а просто создать отдельную матрицу и там все делать. Урок просто супер! Когда после попыток реализовать свою стратегию, видишь как это нужно было делать. Правда у меня матрица выстрелов генерировалась. Спасибо! зы Решил посмотреть на ИИ в онлайн игре Морской бой, и на одном из сайтов выбрал самый сложный уровень, и какой был восторг, когда увидел что он расставил корабли по самому сложному варианту: все по краю, а однотрубные случайно в центре ;)
Научился: реализовать свою идею. что-то мне ещё не хватает мощи самому писать придуманный мною алгоритм
массив int[,] shape нужно заполнять динамически, ведь мы знаем размер поля (его можно получить через Море.размер_моря.х*у), и на основе этих данных заполнять поле, вдруг у нас поменяется размер, и уже такая сеточка не проканает.