Шахматная ходилка: теперь с записью в PGN
Эта статья устарела, см. актуальную ходилку.
В связи с недавними "околошахматными" работами понадобилось не только просмотреть, но и сгенерировать шахматную партию в формате pgn, по возможности, не ставя специального софта и "легко" делая ходы, допустим, мышью. Готовых решений как-то не попалось, но вспомнил про ходилку, адаптировать которую к задаче оказалось очень легко:
(если скрипт выше не подгрузился, проверьте, включён ли в браузере Javascript, обновите страницу нажатием клавиши F5 и убедитесь, что скрипт не блокируется каким-либо расширением браузера, например, AdBlock)
Просто ходите с помощью мышки, а потом скопируйте готовый файл в формате .pgn из серого поля под доской.
Я использовал длинную нотацию, переделать к которой существующий скрипт было 2 минуты. Как понимаете, с короткой нотацией не так просто - если, например, на поле e4
могут сходить 2 белых коня, находящихся на c3
и g5
, то надо писать Nce4
или N5e4
, то есть, анализировать позицию, чего исходная "ходилка" не делает (конвертер длинной нотации PGN в короткую - в этой заметке).
В скрипте оставлена возможность задать произвольную FEN позиции, исходная позиция пишется в атрибут FEN генерируемого файла (возможно, по стандарту, при нестандартной исходной позиции нужно перед тегом FEN
добавить тег [SetUp "1"]
, но в моих программах работает и так). Текущая позиция в записи FEN по-прежнему выводится под доской. Ходы в любом случае нумеруются с единицы.
Быстро всё сбросить можно, обновив страницу браузера нажатием клавиши F5.
В заголовок (метаданные) файла .pgn автоматически подставляется текущая дата по часам компьютера, остальные поля можно заполнить по своему вкусу. Поле "Результат", кроме звёздочки, может принимать значения "1-0" (победа белых), "0-1" (победа чёрных), "1/2-1/2" (ничья).
Так как скрипт не анализирует позиции, мат он тоже запишет как шах (+), замените его на символ #. Рокировки пишутся символами "O" (большие латинские буквы), как показал опыт, большинство программ предпочитают его нулям.
Вот этот удобный вьюер PGN понимает вывод скрипта нормально (вставить в текстовое поле вверху и нажать view games from textbox, сброс - reset viewer.
Код скрипта для подключения у себя на сайте:
<script type="text/javascript" src="http://nickolay.info/jscript/chesspgnmaker/chess.js"></script> <script type="text/javascript" src="http://nickolay.info/jscript/chesspgnmaker/chessGui.js"></script> <form name="chessFormId" id="chessFormId"> <div align="center"> <div id="chessDivId" style="width:288px"></div> <p><span id="chessDivIdSpan" style="color:green"></span></p> <input id="chessUndoId" type="button" value="Отменить ход"/> <input name="btnSetFen" type="button" value="Задать FEN" onclick="SetFen('chessDivId', 'chessUndoId', 'notId')"/> </div> <table cellspacing="0" cellpadding="0" border="0" align="center" width="700" bgcolor="#CCCCCC"><tr><td> <p id="notId"></p> </td></tr></table> </form> <script type="text/javascript"> SetDiagram("chessDivId", "rnbqkbnr/pppppppp/8/8/8/8/PPPPPPPP/RNBQKBNR w KQkq - 0 1", "chessUndoId","notId"); </script>
Немного изменён дизайн и фигуры, просто клетки 29x29 пикселов кажутся маловаты, а 41x41 - великоваты... здесь 36x36, на мой вкус - в самый раз.
Исходники версии шахматной ходилки с размером клетки 36x36px и записью в PGN, архив .ZIP (43 Кб)
Огромное количество PGN-книг от Bill Wall
15.10.2014, 17:05 [14150 просмотров]