Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #31 (permalink)  
Старый 13.01.2016, 18:11
Аспирант
Отправить личное сообщение для diga Посмотреть профиль Найти все сообщения от diga
 
Регистрация: 13.01.2016
Сообщений: 57

Сообщение от laimas Посмотреть сообщение
Не так, если обрамлять тегом, должно быть так:

<span id="pgn"><span>1. <a>Ход 1 игрока</a> <a>Ход 2 игрока</a></span></span>

тогда

$('#pgn span').click(function() {
    var a = $(this).children();
    a.first().text() - ход первого игрока
    a.last().text() - ход второго игрока
})
хотел посмотреть как работает, сделал так:

$('#pgn span').on('click', function(){
	var a = $(this).children();
	a.first().text();
	a.last().text();
	console.log(a.first().text());
});


ничего консоль не показывает

обромление:
<span id="pgn"><span>1. <a href="#">e3</a> <a href="#">c6</a> </span><span>2. <a href="#">b4</a> <a href="#">a6</a></span></span>
Ответить с цитированием
  #32 (permalink)  
Старый 13.01.2016, 18:18
Профессор
Отправить личное сообщение для laimas Посмотреть профиль Найти все сообщения от laimas
 
Регистрация: 14.01.2015
Сообщений: 12,989

a.first().text();
a.last().text();

Это я написал как получить
а передавать:
board.move(a.first().text(), a.last().text());
если правильно помнится имя функции.

Без обрамления типа такого:

var plH = $('#pgn a').click(function() {
        var a = $(this), i = plH.index(a) & 1, f = i ? a.prev() : a, s = i ? a : a.next();
        board.move(f.text()+' '+s.text())
    })


Но как быть, если второй игрок не сделал хода, делать ход по истории или нет, в документации почитать или просто проверить поведение board.move() в этом случае.
Ну и к тому же нужно не только этот ход восстановить, но и те что сделаны за ним. Тоже в документации поискать, может это уже решаемо методами, иначе по индексу определять шаг истории и воспроизвести нотацию начиная с этого шага.

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

это понятно, но разве то что он получил, не должен был выводить в консоль?
Ответить с цитированием
  #34 (permalink)  
Старый 13.01.2016, 18:30
Профессор
Отправить личное сообщение для laimas Посмотреть профиль Найти все сообщения от laimas
 
Регистрация: 14.01.2015
Сообщений: 12,989

<html> 
<head> 
<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.8.3/jquery.min.js"></script>
<script> 
$(function() {
$('#pgn span').on('click', function(){
    var a = $(this).children();
    alert(a.first().text() +' '+ a.last().text());
});
});
</script>     
</head> 
<body>
<span id="pgn"><span>1. <a href="#">e3</a> <a href="#">c6</a> </span><span>2. <a href="#">b4</a> <a href="#">a6</a></span></span>
</body> 
</html>


И не должно быть проблем, если ошибок не допущено.
Ответить с цитированием
  #35 (permalink)  
Старый 13.01.2016, 19:12
Аспирант
Отправить личное сообщение для diga Посмотреть профиль Найти все сообщения от diga
 
Регистрация: 13.01.2016
Сообщений: 57

Сообщение от laimas Посмотреть сообщение
[HTML run]<html>
И не должно быть проблем, если ошибок не допущено.
дело в том, что когда я запускаю ничего не происходит, возможно из-за динамического добавления этих ходов, если как вы показали, заранее "просто прописать" эти ходы, то все работает
Ответить с цитированием
  #36 (permalink)  
Старый 13.01.2016, 19:31
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,126

diga,
мысли вслух

добавить заменить файл chess.js функция pgn
строки 1, 2, 3 добавить строку 4 изменить
var dt_move = [make_pretty(move).from + '-' + make_pretty(move).to];
          var temp = reversed_history.slice(-1);
          if(temp.length) dt_move.push(make_pretty(temp[0]).from + '-' + make_pretty(temp[0]).to);
		  move_string = '</a>'+pgn_move_number + '.'+'<a href="#" data-move="'+dt_move+'">';

файл common.js строки 7-11 добавить
//--- start ---
var board,
  game = new Chess(),
  statusEl = $('#status'),
  fenEl = $('#fen'),
  pgnEl = $('#pgn');
  pgnEl.on('click', 'a',function(event) {
  event.preventDefault();
  var data = $(this).data('move').split(',')
  board.move.apply(null,data);
})


сделать несколько ходов - нажать New game
нажимать последовательно ходы с 1 .

Последний раз редактировалось рони, 13.01.2016 в 19:34.
Ответить с цитированием
  #37 (permalink)  
Старый 13.01.2016, 19:47
Аспирант
Отправить личное сообщение для diga Посмотреть профиль Найти все сообщения от diga
 
Регистрация: 13.01.2016
Сообщений: 57

Сообщение от рони Посмотреть сообщение
diga,
добавить заменить файл chess.js

не мог бы ты залить chess.js? я заменил как ты сказал, но вышло не как у тебя
Ответить с цитированием
  #38 (permalink)  
Старый 13.01.2016, 19:50
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,126

diga,
изменения только тут
/* build the list of moves.  a move_string looks like: "3. e3 e6" */
      while (reversed_history.length > 0) {
        var move = reversed_history.pop();
        /* if the position started with black to move, start PGN with 1. ... */
        if (pgn_move_number === 1 && move.color === 'b') {
          move_string = '1. ...';
          pgn_move_number++;
        } else if (move.color === 'w') {
          /* store the previous generated move_string if we have one */
          if (move_string.length) {
            moves.push(move_string);
          }
          //move_string = pgn_move_number + '.';
		  //move_string = '</li><li>' + pgn_move_number + ')';
          var dt_move = [make_pretty(move).from + '-' + make_pretty(move).to];
          var temp = reversed_history.slice(-1);
          if(temp.length) dt_move.push(make_pretty(temp[0]).from + '-' + make_pretty(temp[0]).to);
		  move_string = '</a>'+pgn_move_number + '.'+'<a href="#" data-move="'+dt_move+'">';
          pgn_move_number++;
        }
        move_string = move_string + ' ' + move_to_san(move);
        make_move(move);
      }

      /* are there any other leftover moves? */
Ответить с цитированием
  #39 (permalink)  
Старый 13.01.2016, 19:57
Аспирант
Отправить личное сообщение для diga Посмотреть профиль Найти все сообщения от diga
 
Регистрация: 13.01.2016
Сообщений: 57


ты гений , почти то, что надо, за исключением того, что желательно отображения хода в любой момент нажатия, не именно с начальной позиции и с учетом всех предыдущих ходов сделанных до хода на которую нажали. Т.е. если нажму на ход который находится где то в середине всех ходов, отображались все хода сделанные до данного, но не отображались которые сделаны после )
Ответить с цитированием
  #40 (permalink)  
Старый 13.01.2016, 20:00
Аспирант
Отправить личное сообщение для diga Посмотреть профиль Найти все сообщения от diga
 
Регистрация: 13.01.2016
Сообщений: 57

Сообщение от рони Посмотреть сообщение
diga,
изменения только тут
ты однако интересно сделал, я бы не додумался, я уж думал можно нибудь типо такого:

завести массив где будут хранится все нотации для каждого хода.
при нажатии из истории ходов находить какой ход по номеру сделан, т.е. индекс
по данному индексу смотреть какая нотация соответствует и вызывать функцию с данной нотацией которая показывает расположение фигур
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Срабатывание функции по нажатию на checkbox Valentin1918 Общие вопросы Javascript 9 09.11.2016 12:34
Двойное срабатывание функции webbaster Общие вопросы Javascript 3 08.08.2015 23:29
События - focusout и click отменить повторное срабатывание функции egorychmaster Элементы интерфейса 1 25.06.2015 13:35
Проблема с выходным значением функции sparrow Общие вопросы Javascript 4 18.01.2014 18:13
предотвратить срабатывание функции posta Общие вопросы Javascript 8 05.06.2011 16:37