БлогNot. Monkey Chess или безумные шахматы...

Monkey Chess или безумные шахматы...

В отличие от скрипта выбора из базы одной из "хороших" шахматных партий, сыгранных людьми, этот скрипт может сгенерировать "безумную" шахматную партию заданной длины и показать, что получится в виде записи в PGN, нотации FEN конечной позиции, картинки с конечной позицией или текстовой схемы. При удачном стечении обстоятельств, полученную партию также можно проиграть прямо на странице скрипта встроенным вьюером или скачать файл PGN (в длинной нотации).

Играет по всем правилам, если найдёте, что какой-либо нюанс не учтён - пишите. Ход выбирает каждый раз случайно из допустимых.

Партия играется вся сразу, пока не кончится лимит ходов или не наступит мат или пат. Также она может автоматически завершиться вничью из-за оставшихся на доске "голых королей". Правило 50 ходов не применяется, так как на ничью обезьянки не согласны :)

После этого можно, например, проверить код PGN в конвертере длинной нотации в короткую (для простоты тот работает всегда с начальной позиции, хотя это нетрудно поправить), погонять его во вьюере PGN, например, тут (вставить PGN в многострочное поле, нажать "view game from textbox", кнопки листания под доской, для следующей партии жмём "reset viewer" и "ok" для подтверждения), ну или даже импортировать короткую версию нотации в lichess :)

Monkey Chess
Monkey Chess

Рубится генератор случайных чисел "сурово", вот, скажем, пат в 163 хода:

 Открыть/скачать этот файл .pgn (3 Кб)

 А вот победа чёрными, чем плоха? Я видел массу людей, которые так же играют :) (1 Кб)

А вот чёрные прямо "атаку" проводят на 134-м ходу :)
А вот чёрные прямо "атаку" проводят на 134-м ходу :)

Листинг довольно длинный, поэтому просто выложу сервис в работе и прикреплю архив.

По умолчанию выбрано максимально допустимое количество полуходов, равное 999, это позволяет почти гарантированно довести партию до какого-либо исхода. Правило 50 ходов в чистом виде не применяется, так что игра идёт до мата, пата или "голых королей".

 Сервис Monkey Chess в работе

 Архив .zip с PHP-исходниками скрипта "Monkey Chess", папка уже создана внутри архива (41 Кб)

Параметр FEN у получаемого файла PGN, в принципе, лишний, просто тестировал на разных позициях, напрямую изменяя массив начальной расстановки в функции getBoard(). Можно добавить возможность начинать с любой расстановки, предусмотрев это, например, вторым параметром конструктора класса monkeychess.

Кстати:
А ещё по исходу "обезьяньих" партий можно гадать!

Чисто статистически количество разных исходов "обезьяньих" партий может ответить и на вопрос о ничейности шахмат :)

P.S. Более новое решение, основанное на библиотеках chessboard.js и chess.js - в этой статье.

02.06.2017, 18:38 [4033 просмотра]


теги: шахматы random сервис php

К этой статье пока нет комментариев, Ваш будет первым