БлогNot. Шахматная ходилка: теперь с записью в PGN

Шахматная ходилка: теперь с записью в 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 внизу страниц (сначала раскрыть список "Шахматисты")

 Огромное количество PGN-книг от Bill Wall

15.10.2014, 17:05 [14150 просмотров]


теги: javascript шахматы сервис форматы

показать комментарии (1)