Одна из разновидностей го играется на доске размером 9х9, при этом камни помещаются на перекрестья прямых, образующих 64 клетки. Клеток столько же, сколько и в шахматах, но в го клетки свободны, а шахматные фигуры не занимают перекрестий. Почему бы не объединить две игры на одной доске?
ПосмотретьСоединение игры шахматы и игры го в одной партии. Соперники используют одну доску и один цвет, играя одновременно в обе игры. Побеждает тот, кто одинаково хорошо владеет обеими игровыми практиками. В правилах нет ничего, что заставляло бы играть «необычно»: для обеих игр главной остается нацеленность на выигрыш.
Нет, и шахматы, и го остаются в своем классическом виде. Ни правила, ни игровое поле, ни фигуры не меняются. На идею goChess, трансформирующей го в шахматы, это тоже не похоже.
Это возможность для игрока показать свое мастерство и в шахматах, и в го, не пересаживаясь за другую доску. И еще это возможность продемонстрировать способность контролировать сразу два сложных игровых процесса.
Как раз странное именно то слово, которое все знают, «биатлон». Оно составлено из корней разных языков: латинского (bi) и греческого (athlon). А вот «дуатлон» не странное, оно целиком пришло из греческого, и значит то же самое: двойное состязание.
Два игрока ведут друг с другом одновременно партию в шахматы и в го (поле 9х9). Соблюдаются все обычные правила шахмат и го.
Шахматные фигуры ставятся на клетки шахматной доски, камни го ставятся на перекрестья линий, очерчивающих клетки.
Шахматные ходы и ходы го делаются по очереди: сначала делается ход белыми фигурами, затем на доску ставится черный камень, затем делается ход черными фигурами, затем на доску ставится белый камень.
У игроков один цвет для шахматных фигур и для камней го. Когда в шахматы или в го игра заканчивается, то заканчивается и партия в целом.
За победу в шахматах дается некоторое количество очков, которое прибавляется к очкам в го, выигранным к этому моменту. Победитель определяется суммой набранных очков в шахматы и в го.
Если в шахматах ни одна из сторон не победила, берется компьютерная оценка последней позиции и пересчитывается в очки, которые плюсуются к очкам го.
После того как игра в го заканчивается победой одной из сторон, игрок, до этого сделавший последний ход в го, в праве сделать еще один ход в шахматах.
Ничья в шахматах означает, что результат партии определяется очками, набранными в го.
Шахматная доска 8х8, она же доска для игры в го 9х9. Все шахматные фигуры на своих местах. По традиции го на игровом поле имеется 9 меток вокруг центрального узла. Камни на доске пока не появились.
И в шахматы, и в го сделаны первые ходы. Черные камни занимают центральные поля.
В качестве образца взята игра с открытого чемпионата Кэмбриджа по шахматам 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,
)
За лингвистические консультации автор признателен Ольге Алиевой и Анне Оськиной.
Очень ценные игротехнические замечания к первоначальному варианту сделаны Георгием Морозом.
Все огрехи и неточности при этом остаются исключительно на совести автора.