Константин Разговоров
Был на сайте: 21.11.2024 21:35

Константин Разговоров ninesonel

Паспорт верифицирован
Работал по Безопасной сделке

Крестики-Нолики 5 в ряд 

  • 25
  • Опубликовано: 2021-08-24
Язык программирования, который требовался – C++. Использовалась библиотека raylib + raygui, чтобы получить красивый интерфейс.
Также были максимально расписаны блоки в коде, чтобы заказчица смогла защитить разработку. Помимо этого, были сделаны блок-схемы на самого бота и описание паттернов и модулей⚙

Скриншоты работы, описание модулей и паттернов приложу к посту.

Кратко о том, как работает бот:
1) Ищет все потенциальные ходы. Ход считается потенциальным, если в квадратной области 5х5 вокруг него есть непустая клетка
2) Для каждого потенциального хода ищет самый весомый шаблон по каждому из направлений: горизонталь (вправо\влево), вертикаль (вверх\вниз), основная диагональ (влево и вверх\вправо и вниз), побочная диагональ (вправо и вверх\влево и вниз). Шаблоны заранее созданы и взвешены
3) Суммирует самые весомые шаблоны по каждому из направлений. Если шаблоны есть в 2 и более направлениях, вес удваивается (вилка)
4) Ищет самый весомый ход
Шаблоны(паттерны) проектирования:
Состояние - каждая клетка игрового поля - это состояние (крестик\нолик\пусто). Так же состояния используются для управления игровым циклом (Context::Scene)
Неполноценный синглтон - структура Context создается один раз и используется на протяжении всей работы программы
Притянутая за уши стратегия - поведения бота зависит от того, за какую сторону он играет (Bot::move(board, side))
Притянутый за уши фасад - поиск победителя и вычисление хода бота происходят по вызову одной функции.
Комментариев нет
оставить комментарий могут только авторизованные пользователи
Другие работы автора:
ВИЗУАЛИЗАЦИЯ ЛАНДШАФТНОГО ДИЗАЙНА

ВИЗУАЛИЗАЦИЯ ЛАНДШАФТНОГО ДИЗАЙНА К нам обратилась за реализацией: "Studio 7" г. Тамбов https://destudio7.com/ Предоставили нам архив с ТЗ, где была следующая информация по проекту: - От заказчика, что нравится - ТЗ на реализацию в 3D - Фотографии на местности - 2D-план уч…

ЭКСТЕРЬЕРНАЯ ВИЗУАЛИЗАЦИЯ

ЭКСТЕРЬЕРНАЯ ВИЗУАЛИЗАЦИЯ Апарт-отель по адресу: г. Южно-Сахалинск, ул. Садовая 9-а У заказчика имелась концепция здания, которую он отправил в формате PDF. Это был небольшой эскизный проект, в котором демонстрировался макет. На основе это необходимо было визуализировать. До…

ДИЗАЙН "GREEN&PURPLE" В ЮАР

ДИЗАЙН "GREEN&PURPLE" В ЮАР Требовалось в городе Вудсток ЮАР, на ранее реализованном проекте, изменить дизайн помещения. Требования к изменению были следующие: 1) На первом этаже убрали барную стойку с привычного места и перенесли ее на другую сторону, а также изменили ее общ…

Игра для сайта “2048”

Игра для сайта “2048” У заказчика имеется сайт, в оформление популярной игры – “Counter Strike 2”. Дизайн страницы, где происходит игра – должен был соответствовать общей задумки. Стек выбрали следующий: Gulp и Java Script. Было принято решение реализовывать с нашей стор…

Проект на питоне + GUI на PyQt

Проект на питоне + GUI на PyQt Программа относится к Объектно-ориентированному программированию Сама задача, что нужно сделать: На столе лежат S (3) стопок книг многотомного издания из N (30) томов. Распределение томов по стопкам и порядку номеров томов случайное (генерируется из…

“Своя Игра” на ЯП Python

“Своя Игра” на ЯП Python Проект “Своя Игра” – относилась к Дипломному проекту. У нас была полная свобода в выборе Языка программирования, библиотек и фреймворков. Также требовалось предоставить подробные комментарии в коде и пояснительную записку (с ней можете ознакомиться в…

Игра для сайта “2048”

Игра для сайта “2048” У заказчика имеется сайт, в оформление популярной игры – “Counter Strike 2”. Дизайн страницы, где происходит игра – должен был соответствовать общей задумки. Стек выбрали следующий: Gulp и Java Script. Было принято решение реализовывать с нашей стор…

Python с использованием qt5 для автозаполнения договоров

Python с использованием qt5 для автозаполнения договоров Мы реализовали следующее: - При нажатии на контрагента открывается карточка с полями наименование полное, наименование в программе, реквизиты, и поле для комментария - При нажатии на договор открывается договор в ворде с возможностью редактирования и…