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

Помощь дата->рейтинг Поиск Почта RSS канал Статистика nickolay.info Домой

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

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

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

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

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

Monkey Chess
Monkey Chess

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

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

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

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

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

Просьба проверять на 999 полуходах, максимально возможных, а то иначе бесполезно для статистики :)

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

 Архив .zip с PHP-исходниками скрипта "Monkey Chess" (38 Кб)

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

Кстати:
А ещё по исходу "обезьяньих" партий можно гадать!
Чисто статистически число исходов "обезьяньих" партий может ответить и на вопрос о ничейности шахмат :)

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


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

комментарии (0)

02.06.2017, 18:38; рейтинг: 1142

  свежие записипоиск по блогукомментироватьстатистика

Наверх Яндекс.Метрика
© PerS
вход