сделать изменения как указано в посте 38 и заменить файл common.js на код ниже.
var init = function() {
//--- start ---
var board,
game = new Chess(),
statusEl = $('#status'),
fenEl = $('#fen'),
pgnEl = $('#pgn'),
pos = [];
pgnEl.on('click', 'a',function(event) {
event.preventDefault();
var data = $(this).data('move').split(',');
var i = $(this).index() * 2;
board.position(pos[i],false);
board.move.apply(null,data);
})
// do not pick up pieces if the game is over
// only pick up pieces for the side to move
var onDragStart = function(source, piece, position, orientation) {
board.position(game.fen());
if (game.game_over() === true ||
(game.turn() === 'w' && piece.search(/^b/) !== -1) ||
(game.turn() === 'b' && piece.search(/^w/) !== -1)) {
return false;
}
};
var onDrop = function(source, target) {
// see if the move is legal
var move = game.move({
from: source,
to: target,
promotion: 'q' // NOTE: always promote to a queen for example simplicity
});
// illegal move
if (move === null) return 'snapback';
updateStatus();
};
// update the board position after the piece snap
// for castling, en passant, pawn promotion
var onSnapEnd = function() {
board.position(game.fen());
};
var updateStatus = function() {
var status = '';
var moveColor = 'White';
if (game.turn() === 'b') {
moveColor = 'Black';
}
// checkmate?
if (game.in_checkmate() === true) {
status = 'Game over, ' + moveColor + ' is in checkmate.';
}
// draw?
else if (game.in_draw() === true) {
status = 'Game over, drawn position';
}
// game still on
else {
status = moveColor + ' to move';
// check?
if (game.in_check() === true) {
status += ', ' + moveColor + ' is in check';
}
}
pos.push(game.fen());
statusEl.html(status);
fenEl.html(game.fen());
pgnEl.html(game.pgn());
};
$('#ruyLopezBtn').on('click', function() {
board.start;
});
var cfg = {
//orientation: 'black',
//showNotation: false,
moveSpeed: 'slow',
snapbackSpeed: 500,
snapSpeed: 100,
draggable: true,
position: 'start',
onDragStart: onDragStart,
onDrop: onDrop,
onSnapEnd: onSnapEnd
};
var board = ChessBoard('board', cfg);
$('#startPositionBtn').on('click', board.start);
$('#flipOrientationBtn').on('click', board.flip);
$('#moveBtn').on('click', function() {
board.move('a2-a4', 'h7-h5');
});
updateStatus();
//--- end example JS ---
}; // end init()
$(document).ready(init);
итого : клик по любому ходу показывает анимацию именно этого хода из позиции перед этим ходом, клик по полю востанавливает текущую позицию.