Шахматный дуатлон


Шахматы и го на одной доске!

Одна из разновидностей го играется на доске размером 9х9, при этом камни помещаются на перекрестья прямых, образующих 64 клетки. Клеток столько же, сколько и в шахматах, но в го клетки свободны, а шахматные фигуры не занимают перекрестий. Почему бы не объединить две игры на одной доске?

Посмотреть

Что это?

Соединение игры шахматы и игры го в одной партии. Соперники используют одну доску и один цвет, играя одновременно в обе игры. Побеждает тот, кто одинаково хорошо владеет обеими игровыми практиками. В правилах нет ничего, что заставляло бы играть «необычно»: для обеих игр главной остается нацеленность на выигрыш.

Это снова попытка обновить шахматы типа шахмат Фишера?

Нет, и шахматы, и го остаются в своем классическом виде. Ни правила, ни игровое поле, ни фигуры не меняются. На идею goChess, трансформирующей го в шахматы, это тоже не похоже.

Зачем?

Это возможность для игрока показать свое мастерство и в шахматах, и в го, не пересаживаясь за другую доску. И еще это возможность продемонстрировать способность контролировать сразу два сложных игровых процесса.

Что за странное слово «дуатлон»?

Как раз странное именно то слово, которое все знают, «биатлон». Оно составлено из корней разных языков: латинского (bi) и греческого (athlon). А вот «дуатлон» не странное, оно целиком пришло из греческого, и значит то же самое: двойное состязание.


Правила

Два игрока ведут друг с другом одновременно партию в шахматы и в го (поле 9х9). Соблюдаются все обычные правила шахмат и го.

Шахматные фигуры ставятся на клетки шахматной доски, камни го ставятся на перекрестья линий, очерчивающих клетки.

Шахматные ходы и ходы го делаются по очереди: сначала делается ход белыми фигурами, затем на доску ставится черный камень, затем делается ход черными фигурами, затем на доску ставится белый камень.

У игроков один цвет для шахматных фигур и для камней го. Когда в шахматы или в го игра заканчивается, то заканчивается и партия в целом.

За победу в шахматах дается некоторое количество очков, которое прибавляется к очкам в го, выигранным к этому моменту. Победитель определяется суммой набранных очков в шахматы и в го.

Если в шахматах ни одна из сторон не победила, берется компьютерная оценка последней позиции и пересчитывается в очки, которые плюсуются к очкам го.

После того как игра в го заканчивается победой одной из сторон, игрок, до этого сделавший последний ход в го, в праве сделать еще один ход в шахматах.

Ничья в шахматах означает, что результат партии определяется очками, набранными в го.


Демонстрация

Расстановка перед игрой. Ходы еще не сделаны.

Шахматная доска 8х8, она же доска для игры в го 9х9. Все шахматные фигуры на своих местах. По традиции го на игровом поле имеется 9 меток вокруг центрального узла. Камни на доске пока не появились.


Партия началась. Разыграна защита двух коней.

И в шахматы, и в го сделаны первые ходы. Черные камни занимают центральные поля.


GIF-анимация игры. Полная картина от первого до последнего хода.

В качестве образца взята игра с открытого чемпионата Кэмбриджа по шахматам 2023-го года между Генри Адамсом и Майклом Адамсом, закончившаяся вничью после 23-го хода. Одновременно показана игра между Масаюки Карахаси и Ацуси Исида, сыгранная в 1987 году. Партия в го закончилась победой черных. Так как шахматная партия длилась совокупно 46 (полу)ходов, а партия в го только 43, после 43-го хода го игра останавливается.


Код

Программный код на Python для отображения на одной доске двух партий — в шахматы и в го.

Шахматные партии принимаются в формате PGN. Здесь можно найти большую коллекцию партий в этом формате.

Партии в го принимаются в формате SGF. Для игрового поля 9х9 записей партий не так много, как для 19х19, но примеры можно найти, например, здесь.

Код порождает изображения доски перед началом партии и после каждого игрового хода. Все изображения сохраняются в специально заданную директорию.

Запуск скрипта в командной строке с параметрами: файл chess_game.pgn, файл go_game.sgf и директория "pictures_dir", в которую будут сохраняться изображения доски:

python generate_game.py chess_game.pgn go_game.sgf pictures_dir

Скачать код

Если имена файлов или директории не указаны, то будут взяты значения по умолчанию: файл 1.pgn, файл 1.sgf и имя директории: "chess-gif".

Картинки можно соединить в gif-анимацию с помощью вот такого скрипта:

import os
import imageio

images = [ ]
for filename in sorted(os.listdir('chess-gif')):
        images.append(imageio.imread(os.path.join('chess-gif', filename)))
imageio.mimsave(
        '1chegoss.gif',
        images,
        format="GIF",
        duration=3,
)

Скачать код


Благодарности

За лингвистические консультации автор признателен Ольге Алиевой и Анне Оськиной.

Очень ценные игротехнические замечания к первоначальному варианту сделаны Георгием Морозом.

Все огрехи и неточности при этом остаются исключительно на совести автора.