Форум программистов, компьютерный форум, киберфорум
yariko
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск  

Игра Сёги на Visual Studio

Запись от yariko размещена 10.04.2021 в 12:49
Показов 5552 Комментарии 14
Метки visual studio

Этой игре насчитывается уже много веков, но она все еще настолько же интересна и актуальна как и во времена когда компьютеры были еще в далеком будущем и имя этой увлекательной игры Сёги (将棋 - syogi /shogi), что в переводе с японского переводится как "Игра генералов". В начале партии каждый игрок имеет по 20 фигур: 1 король, 1 ладья, 1 слон, 2 золотых и 2 серебряных генерала, 2 коня, 2 копья и 9 пешек. Фигуры имеют форму вытянутого пятиугольника со скосом в сторону противника, на обеих поверхностях которого иероглифами надписано название основной и превращенной фигуры. Как и в шахматах, игра заканчивается, когда одна из сторон ставит "мат" королю противника, то есть создаёт позицию, в которой король противника находится под боем (шахом) и этот шах противник не может устранить никаким ходом. Поставивший мат выигрывает. Говорить "шах" и "мат" при этом считается неэтичным. Также игра заканчивается, если один из игроков сдается. В Японии признание своего поражения выражается словом 負けました (яп. макэмасита - проиграл) и небольшим поклоном.

Проникнувшись всем великолепием данной игры, я решил написать свою программу игры в Syogi. Основная и самая сложная в реализации ее часть - это игровой ИИ (искусственный интеллект - позволяющий компьютеру вычислять наиболее релевантные ходы). Задачей ИИ здесь является пройти на заданную глубину все ветвления (ну, или по крайней мере основную их часть) партии для последующей оценки хода. Перебор ходов здесь самая затратная по времени для ЦПУ задача, ведь варианты ходов в Syogi растут крайне быстро. Только на 2 ходу их уже около 1000 (примерно 30 ходов для каждой из сторон), на 4 ход их будет не меньше 1000^2. В дальнейшем ветвления ходов возрастают многократно, а с учетом того, что есть еще ходы сброса фигур, их становится еще больше, ибо сброс ранее взятой фигуры производится почти на любую свободную клетку, за исключением некоторых правил.

Тесты показали, что на доске 9*9 клеток с прогнозированием партии на 4-6 ходов просчитываемое число ветвлений в игре достигает нескольких миллионов и более. Конечно, даже не смотря на довольно большую выборку для человеческого понимания, все равно машинный алгоритм ИИ сложно сравнивать с человеческим интеллектом, ведь у человека и машины совсем разный принцип понимания игры. Тем не менее, даже при учете некоторого превосходства биологического разума, нужно быть крайне внимательным, ведь потерпеть поражение можно просто не заметив шах (как писалось выше здесь не принято его объявлять), а можно и вовсе не удачно разменять фигуры, две на одну например. Компьютер удачно пользуется любой ошибкой игрока.

Системные требования:
ОС Windows;
.NET Framework2+;
Клавиатура и /или мыша
Свободное место ~20 МБ.

Установка:
Распаковать архив
Запустить EXE

Нажмите на изображение для увеличения
Название: сёги.jpg
Просмотров: 362
Размер:	121.5 Кб
ID:	6936

СКАЧАТЬ ИГРУ

Если вы любите шахматы, то Сёги Вам тоже понравятся, ведь эта игра дает еще больше возможностей и тактических приемов, это как "прокачанные" шахматы!
Метки visual studio
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Всего комментариев 14
Комментарии
  1. Старый комментарий
    Ход "не по правилам", если я не ошибаюсь, тоже приводит к поражению виновника.
    Запись от politoto размещена 10.04.2021 в 13:04 politoto вне форума
  2. Старый комментарий
    Аватар для yariko
    Цитата Сообщение от politoto
    Ход "не по правилам", если я не ошибаюсь, тоже приводит к поражению виновника.
    В моей версии доступны только "правильные" ходы. Или нужно было сделать наоборот?
    Запись от yariko размещена 10.04.2021 в 13:07 yariko вне форума
  3. Старый комментарий
    Если программа для начинающих, то неплохо бы разрешить человеку "фолить".
    Запись от politoto размещена 10.04.2021 в 13:15 politoto вне форума
  4. Старый комментарий
    Аватар для yariko
    Как по мне лучше наоборот, чтобы новичку быстрее освоить азы, лучше ограничивать ходы только по правилам.
    Запись от yariko размещена 10.04.2021 в 13:20 yariko вне форума
  5. Старый комментарий
    Сообщение от yariko
    В дальнейшем ветвления ходов возрастают многократно, а с учетом того, что есть еще ходы сброса фигур, их становится еще больше, ибо сброс ранее взятой фигуры производится почти на любую свободную клетку, за исключением некоторых правил.
    Меня интересует такая вещь как "Сброс фигуры". Нельзя ли это пояснить подробнее? Хочу это применить в игре Шашки. (я имею желание написать экзотический вариант игры в шашки... там к примеру будет возможна телепортация шашек (при некоторых условиях конечно), уход с доски и шашки-невидимки)
    Запись от wer1 размещена 10.04.2021 в 13:25 wer1 вне форума
  6. Старый комментарий
    Можно сделать подсказку, чтобы были видны все возможные сбросы, ходы и перевороты выбранной фишки.
    Запись от politoto размещена 10.04.2021 в 13:26 politoto вне форума
  7. Старый комментарий
    Аватар для yariko
    Цитата Сообщение от wer1
    Меня интересует такая вещь как "Сброс фигуры". Нельзя ли это пояснить подробнее?
    В Сёги это реализовано так. Игрок рубит фигуру противника и эта же фигура попадает взявшему игроку в резерв, фигура при этом остается вне доски, а игрок может ее сбросить на доску вместо любого своего очередного хода (сброс это тоже ход). Как бы все гениальное просто!
    Запись от yariko размещена 10.04.2021 в 13:28 yariko вне форума
  8. Старый комментарий
    Цитата Сообщение от wer1
    Меня интересует такая вещь как "Сброс фигуры". Нельзя ли это пояснить подробнее? Хочу это применить в игре Шашки.
    В шашках со сбросами нужна какая-то другая цель игры. И обычные шашки - очень ничейная игра. А если можно будет выставлять захваченные шашки, то ходы могут никогда не закончиться и партия никогда не завершится.

    Лучше шашки с башнями.
    Запись от politoto размещена 10.04.2021 в 13:31 politoto вне форума
  9. Старый комментарий
    yariko,
    спасибо! Я восхищён таким гениальным решением проблем!
    Запись от wer1 размещена 10.04.2021 в 13:33 wer1 вне форума
  10. Старый комментарий
    Цитата Сообщение от politoto
    В шашках со сбросами нужна какая-то другая цель игры. И обычные шашки - очень ничейная игра. А если можно будет выставлять захваченные шашки, то ходы могут никогда не закончиться и партия никогда не завершится.
    Ничьих в принципе не будет вовсе. Количество ходов ограничено например числом 100. Так что нет смысла "прыгать" туда-сюда. А цель такая: сделать так, чтобы ограничить число ходов противника ещё больше! В общем мои шашки похожи на шашки только видом шашек и названием.
    Запись от wer1 размещена 10.04.2021 в 13:40 wer1 вне форума
  11. Старый комментарий
    См. также https://en.wikipedia.org/wiki/Crazyhouse и "шведские" шахматы ( пара на пару )
    Запись от politoto размещена 10.04.2021 в 13:43 politoto вне форума
  12. Старый комментарий
    Аватар для Avazart
    Git ?
    Запись от Avazart размещена 12.04.2021 в 22:36 Avazart вне форума
  13. Старый комментарий
    Аватар для yariko
    Цитата Сообщение от Avazart
    Git ?
    Можно поподробнестее, пожалуйста.
    Запись от yariko размещена 14.04.2021 в 07:49 yariko вне форума
  14. Старый комментарий
    Цитата Сообщение от Avazart
    Git ?
    https://github.com/WandererXII/lishogi
    Запись от politoto размещена 09.02.2022 в 19:38 politoto вне форума
 
Новые блоги и статьи
Саморегулирующийся социальный контракт для сервера cross-section.
Hrethgir 14.08.2026
С кодом конечно таких глубоких размышлений пока не было, впрочем я уже привык к алгоритмизации. Суть предмета записи: снова в диалоге с нейросетью (я взял пока себе ник для учётки админа - Rector). . . .
Часы электронные
Uhbif79 12.08.2026
Выкладываю программу часов. Программа позволяет: 1. Использовать системное время и дату, 2. Есть возможность вводить время и дату вручную. 3. Реализованы 2 будильника: начало и конец рабочего дня. . . .
Часы с будильником на основе класса QLCDNumber
Uhbif79 12.08.2026
Всем добрый день, выкладываю программу часов с будильником на основе класса QLCDNumber. Здесь я пробовал самостоятельно создавал классы, впервые столкнулся с видимостью переменной одного класса из. . .
Установка MinGW GCC 16.2 и CMake
8Observer8 10.08.2026
VK Видео: https:/ / vkvideo. ru/ video-240781534_456239017 YouTube: eY5-5PyI9NM Текстовая версия
Неделя из жизни имитационной модели склада: мои кривые руки растут, откуда надо
anaschu 10.08.2026
Неделя из жизни имитационной модели склада: как я почти написал неправильную логику и что с этим делать Работаю сейчас над учебно-рабочим проектом: строю в AnyLogic имитационную модель процессов. . .
Калькулятор для расчета родства
russiannick 07.08.2026
1. Задача: Создать калькулятор для расчета родства. Родственных связей существует 8 ступеней, такие как: p - отец P - мать q - муж Q - жена b - брат B - сестра s - сын S - дочь
Мир по моей воле
kumehtar 07.08.2026
Когда-то кажется, что всё просто. Ты весь такой светлый. Причиняешь добро. Борешься за справедливость в этом тёмном мире. Потом начинаешь замечать одну неприятную вещь. Почти каждый хороший. . .
Кредитный калькулятор
Maks 05.08.2026
Решение задачи по прикладной информатике средствами 1С. Задача: Напишите приложение-калькулятор, которое помогает рассчитывать параметры кредита для аннуитетного и дифференцированного видов. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru