Показать сообщение отдельно
  #42 (permalink)  
Старый 13.01.2016, 21:55
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,126

сделать изменения как указано в посте 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);

итого : клик по любому ходу показывает анимацию именно этого хода из позиции перед этим ходом, клик по полю востанавливает текущую позицию.

Последний раз редактировалось рони, 13.01.2016 в 21:58.
Ответить с цитированием