![](https://habrastorage.org/webt/4i/sc/k4/4isck4toxbws20hsk3nrqghdkoy.png)
а десять АНИКИНИ составляют АКШАУХИНИ, и это есть самая крупная войсковая единица…
Генри Лайон Олди «Гроза в безначалье»
В прошлой статье я рассказывал о шашках и это не случайно. Шашечные игры, с их составными ходами, послужили основой проекта, составили его костяк. До сих пор, шашки подкидывают мне сюрпризы. Например, буквально на днях, мне довелось исправлять застарелый баг, связанный с опцией отложенного взятия. И вообще, как я уже говорил, шашечные игры сильно недооценены. Но одними лишь шашками дело не ограничивается…
Шахматы
Шахматы не кажутся нам какой-то необычной игрой, но это всё просто потому что мы к ним очень сильно привыкли. Взять, у примеру, пешку. Если вдуматься, это очень необычная фигура. Единственная в шахматах, которая бьёт не так как ходит. А правило взятия на проходе и вовсе сложно считать чем-то очевидным (да-да, знаю, так сложилось исторически). Но не будем о банальном. Пешка умеет превращаться в другие фигуры! Причём, в отличии от большинства других традиционных шахматных игр, выбор не ограничивается максимум двумя вариантами.
![](https://habrastorage.org/webt/rx/rb/b8/rxrbb87dmkynfbn6kmeeiyofvom.png)
Под это дело, мне пришлось научиться рисовать графические диалоги, прямо на canvas-е. До этого момента, пешки превращались только в ферзей, что было несколько неудобно в тех играх, где ферзи отсутствуют. А есть ведь ещё и такие, в которых доступный ассортимент фигур зависит от поля на котором превращение происходит!
![](https://habrastorage.org/webt/hi/uv/jp/hiuvjpe7knaex1m8gevn_jrgt4c.png)
Другим важным моментом является наличие в игре «королевских» фигур. Разумеется, это не шахматное изобретение. Главные фигуры присутствуют во множестве старинных игр. Dablot, Damone, Altai Shatra — во всех этих играх «короля» можно заманить в ловушку, завершив, тем самым, игру досрочно. Особенно пикантны игры, в которых в королей могут превращаться фигуры рядовые. В "Шашматах", например, у игрока есть выбор: получить, в результате превращения, более сильную фигуру или обезопасить себя, создав «запасного» короля.
Во всех этих играх, игрок проигрывает потеряв все королевские фигуры. Так, если на доске присутствуют «принц» и «король», для победы необходимо захватить их обоих. Такое понимание «правила внезапной смерти» характерно для древних игр, таких как Чатуранга, но уже в Шатрандже шахматная мысль идёт дальше. Теперь короля атаковать нельзя — это фигура неприкосновенная, но и игрок не имеет право оставлять свою главную фигуру под ударом! Если же избежать угрозы королевской фигуре невозможно — игра заканчивается. Так появляются понятия шаха и мата.
![](https://habrastorage.org/webt/t3/51/sl/t351slzygjviyba6u_9q_tmv-qm.png)
Здесь понятие шаха (как угрозы королю) становится ещё более абстрактным. В самом деле, если южный игрок атаковал короля западного игрока, последнему совершенно необязательно предпринимать что-то по этому поводу, поскольку до того как Юг снова получит право хода, Север и Восток могут ситуацию значительно скорректировать. Кроме того, в Yonin Shogi действует правило сброса, а королей также как и другие фигуры, разрешается забирать в свой резерв. Разумеется, для того чтобы продолжать игру, игрок должен держать на доске (а не в резерве) хотя бы одного из своих королей (можно и больше, но смысла нет), а чтобы победить, он должен собрать под своим началом королей всех четырёх армий.
Но даже если рассматривать лишь те игры, в которых правила «шаха» и «мата» действуют, всё оказывается не так просто. Прежде всего, полная проверка на всевозможные угрозы королю оказывается довольно затратной. Учитывая то, что атаки, в общем случае, не обязательно могут быть только шахматными (в "Белорусских шахматах", например, можно атаковать короля шашечными фигурами, а приоритет во взятии шашечными фигурами позволяет поставить мат королём) было бы заманчиво выполнять генерацию всех допустимых ходов с последующей проверкой угроз королю. На практике, это работает слишком медленно. Приходится дублировать схему перемещения фигур, чтобы проверять возможные угрозы без генерации списка ходов.
С самой проверкой на «мат» тоже были сложности. Очень продолжительное время, условием поражения я считал отсутствие возможного хода (с учётом запретов из за короля под шахом, разумеется). В общем-то это не так уж и неверно, учитывая то, что в большинстве игр (в том числе и шахматных) так оно и есть. Но не в Шахматах! К счастью, в версии 1.2.7 я придумал как поправить ситуацию без ущерба производительности и теперь пат определяется корректно. Кстати, та же проверка на возможные угрозы используется и ботами (что сильно улучшает качество их игры), но всё равно, AI в Шахматах отвратительный (дебютная библиотека помогает незначительно). Тут уж грешить я могу только на самого себя. Всё таки, качественный шахматный AI — это не моё.
![](https://habrastorage.org/webt/9l/w_/5l/9lw_5lyzw5txvlssdgvi3gby4ps.png)
Всё это не отменяет того факта, что в шахматных играх есть на что заморочиться. Эта игра, конечно, в большой степени шутка (да и нет у меня уверенности, что удалось исправить все ошибки в её реализации), но в похожую по духу "Momentum Chess" вполне можно серьёзно поиграть. С самой трактовкой мата также возможны варианты. Например, король может быть общим или в игре может быть фигура, которая должна постоянно находиться под шахом (есть её, при этом, нельзя). В общем, шахматы — это весело.
Что ещё можно извлечь из этой игры? В Шахматах есть презабавнейший ход, при выполнении которого, двигаются две фигуры одновременно. Конечно, я говорю о рокировке. Для моего проекта эта концепция столь же важна как и составной ход, позаимствованный из шашечных игр. Существует масса игр в которых её можно применить. Dameo, Abalone, Ordo — во всех этих играх, фигуры двигаются одновременно. Но можно пойти ещё дальше!
![](https://habrastorage.org/webt/kv/at/nl/kvatnlnq0o0_n_qyotorgcyijwi.gif)
Согласен, это довольно далеко от первоначальной концепции рокировки, но зачем себя ограничивать? Надо выжимать из заложенных концепций всё, по максимуму.
Комментарии (7)
valemak
07.11.2019 15:47+2Особенно мне понравились гравитационные шахматы, скриншот которых приведён в тексте (вот ссылка на них, если кому интересно сыграть).
Когда я в них наигрался от души, то какое-то время ощущал интересный психологический эффект. При программировании казалось, что символы напечатанного в Notepad++ кода под влиянием притяжения вот-вот посыпятся в низ экрана.GlukKazan Автор
07.11.2019 15:50+1Мне Momentum Chess больше понравились. Более предсказуемо и всё равно очень необычно. Кстати, картинки в статье — это ссылки на игры.
valemak
07.11.2019 16:01+1Для «скользких шахмат» (так я называю Momentum Chess), ИМХО, гораздо сложнее понять как вообще там можно выиграть. Мат там попробуй ещё поставь.
Но в целом мне понравилось, для этих нетрадиционных вариантов шахматной игры, удалось найти общие выигрышные стратегии и нащупать некие отличительные принципы. Например, в «скольких шахматах» самой сильной фигурой является конь, потому что он ходит также как и в обычной игре, т.е. пресдказуем, понятен, стабилен. Им удаётся надёжно маневрировать, безопасно поедая фигуры соперника. Остальные фигуры, ввиду их неуправляемой дальнобойности, в самый неподходящий момент погибают на ровном месте.GlukKazan Автор
07.11.2019 16:09+1Ещё конём можно подпирать фигуры, чтобы скользили туда куда надо. А мат там, в некотором смысле, ставить даже проще. Король то ведь тоже скользит. И если он скользит под шах — ход запрещён. Совсем другая игра конечно получается.
XVadim
Как всегда интересно и познавательно.