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

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

Запись от yariko размещена 10.04.2021 в 12:49

Этой игре насчитывается уже много веков, но она все еще настолько же интересна и актуальна как и во времена когда компьютеры были еще в далеком будущем и имя этой увлекательной игры Сёги (将棋 - 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
Просмотров: 233
Размер:	121.5 Кб
ID:	6936

СКАЧАТЬ ИГРУ

Если вы любите шахматы, то Сёги Вам тоже понравятся, ведь эта игра дает еще больше возможностей и тактических приемов, это как "прокачанные" шахматы!
Показов 4409 Комментарии 14
Всего комментариев 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 вне форума
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru