Nickolay.info. Javascript. Javascript Drag-and-drop Chess Position Builder

В дополнение к шахматной ходилке - ещё один скрипт на близкую тему. Он умеет размещать фигуры на шахматной доске и убирать их методом "перетащил и оставил", а также генерирует стандартные коды FEN шахматных позиций и создаёт соответствующие картинки (серверным скриптом на PHP). Вот скрипт в работе:

 Открыть в текущем окне

Всё остальное легко узнать по ссылке "Помощь" в меню скрипта. Скрипт задуман кросс-браузерным, он должен работать во всех современных браузерах, поддерживающих в яваскрипте методы drag and drop (Internet Explorer 6 и выше, Mozilla Firefox 3 и выше, Opera 8 и выше).

Код для подключения скрипта из своего документа может быть, например, следующим:

<script src="http://nickolay.info/jscript/ChessPositionBuilder/dragdropchess.js"></script>

<div align="center">
 <p>
 <a href="http://nickolay.info/jscript/js_dragdropchess.html">Страница скрипта</a>
 <a href="#" title="Открыть файл помощи в новом окне"
  onclick="javascript:pr=window.open('http://nickolay.info/jscript/ChessPositionBuilder/help.html','pr',
   'toolbar=no,scrollbars=yes,directories=no,status=no,menubar=yes,resizable=yes,width=600,height=300');">
  Помощь</a>
 <a href="http://nickolay.info/jscript/ChessPositionBuilder/index.html">Обновить</a> 
 <a href="#" id="dlink" target="_blank" style="display: none;">Картинка</a>
 <a href="#" id="dhtml" target="_blank" style="display: none;">HTML</a>
 <a href="#" id="dcode" onclick="javascript:getCodes();"
   style="display: none;">Коды</a>
 <p><span id="fen">8/8/8/8/8/8/8/8</span>
</div>

Естественно, текст ссылок и адреса можно поменять, но элементы dlink, dhtml, dcode, fen должны присутствовать в документе, т.к. на них есть ссылки из скрипта.

Я не стал программно выравнивать фигуры по клеткам, так жизненней, к тому же, в момент, когда Вы ставите фигуру, всё видно по подстветке ячеек :) В серверной части, естественно, всё выравнивается.

Клиентская часть и Drag-and-drop на Javascript

Верхняя часть файла dragdropchess.js (до комментария "Ниже - чисто шахматная часть") - пример компактной и функциональной реализации функционала drag-and-drop ("перетащил и оставил") на Javascript. Вырезав её в свой файл с именем, допустим, dragdrop.js и подключив скрипт из документа HTML тегом вида

<script src="dragdrop.js"></script>

(если он лежит в текущей для основного документа папке), мы можем легко создавать на странице как перемещаемые объекты:

<div id="dragObjects">
 <img src="img/1.gif" id="i1">
 <img src="img/2.gif" id="i2">
</div>
<script type="text/javascript">
 var dragObjects = document.getElementById('dragObjects').getElementsByTagName('img');
 for(var i=0; i<dragObjects.length; i++) {
  new DragObject(dragObjects[i]);
 }
</script>

так и "контейнеры", которые будут принимать их:

<div id="bTable">Корзинка для объектов</div>
<script type="text/javascript">
 new DropTarget(document.getElementById('bTable'));
</script>

Контейнеры при этом можно вкладывать друг в друга, объект будет помещён в самый "внутренний" из подходящих. Именно за счёт этого в клиентском скрипте фигуры можно кидать на клетки доски и убирать в обрамляющий доску раздел "свободного места":

<div id="freeSpaces"> //Раздел, обрамляющий доску, становится new DropTarget
 //Таблица Board[i][j] с клетками доски, каждый рисунок из 64 становится new DropTarget
</div>

Добавим, что общий размер JS-функций для реализации "перетащил и оставил" - килобайт 5 в несжатом виде, а подключения громоздких внешних библиотек вроде JQuery не требуется.

Серверная часть и генерация картинки на PHP

Маленький скрипт GenFEN на PHP, вызываемый из яваскрипта, генерирует по переданной ему параметром fen нотации картинку с шахматной позицией и позволяет создать постоянную ссылку на неё (нажмите из скрипта "Коды", чтобы увидеть HTML-код картинки). Также скрипт может сгенерировать HTML-доску с фигурами-символами Юникода.

Значение параметра fen - нотация FEN для позиции, сгенерированная яваскриптом автоматически, метод передачи GET, то есть, URL скрипта должен иметь вид

http://url/genfen.php?fen=FEN

Скрипт требует библиотеки GDLib версии 2.0 или новее, PHP версии 4.3.1 и выше. Как проверить, подключена ли она к PHP на локальном компьютере или хостинге, написано в этой статье.

Ссылки для скачивания и настройки

 Скачать скрипт ChessPositionBuilder в архиве ZIP (11 Кб)

 Скачать серверный скрипт GenFEN в архиве ZIP (7 Кб)

 Вариант серверного скрипта с PNG и большими картинками в архиве ZIP (28 Кб), примеры картинок

Для корректной работы скрипта где-то в другом месте любым тектовым редактором неформатированного текста (Блокнот Windows подойдёт) измените в файле dragdropchess.js следующие настройки:

var IMGLink=
 "http://nickolay.info/jscript/ChessPositionBuilder/";
var FENLink=
 "http://scripts.kislenko.net/genfen/index.php?fen=";
var HTMLink =
 "http://scripts.kislenko.net/genfen/html.php?fen=";

В IMGLink вместо выделенного красным нужно вписать URL (или путь по дереву каталогов) к папке, содержащей картинки с фигурами и "пустую" картинку blank.png, этот путь завершается символом "/", в FENLink и HTMLink можно вписать другой URL к папке серверного скрипта.

Другие настройки в файле dragdropchess.js касаются цветов:

 var fieldColorWhite='#EEEEEE'; //Цвет фона белых полей
 var fieldColorBlack='#888888'; //Цвет фона чёрных полей
 var framesColor='green'; //Цвет рамки доски
 var uponColor='#ccffcc'; //Цвет подсветки

В серверном скрипте из второго архива index.php также есть простые настройки:

$path = "./"; 
 //Пропишите здесь путь (или URL) к картинкам шахматных фигур в формате GIF. 
 //Имена картинок стандартные для шахматных наборов. Путь завершается слешем /
$size = 29; 
 //Размер картинки с фигурой, ячейки доски и клетки на картинке

"Стандартные" для шахматных наборов имена картинок в обоих случаях предполагаются такими:
wr - белая ладья
wn - белый конь
wb - белый слон
wq - белый ферзь
wk - белый король
wp - белая пешка
br - чёрная ладья
bn - чёрный конь
bb - чёрный слон
bq - чёрный ферзь
bk - чёрный король
bp - чёрная пешка

Рейтинг@Mail.ru

вверх гостевая; E-mail