2013-04-24 7 views
1

Я работаю над игрой в два игрока, мне нужно поменять игроков после каждого хода.javascript: Как поменять игроков в игре?

В настоящее время у меня есть этот JavaScript:

var play = function(player, opp) { 
    var index; 
    player.play(function(move) { 
     index = move; 
     board.board[index][1] = player.mark; 
     if (board.weHaveWinner()==undefined||!board.isFull()) { 
      play(opp,player); 
     } 
    }); 
} 

Вопрос о том, что игрок, который переехал обыкновение быть сделано, пока противник не вычисляет свой ход.

Как я могу сделать это асинхронным?

+0

Что такое 'player.play'? Кажется, вы передаете обратный вызов этой функции, асинхронно? Кроме того, что вызывает вызов 'play'? – plalx

+0

Также, когда выполняется код чертежа? – plalx

ответ

1

Браузер зависает при выполнении вашей рекурсивной функции. Javascript функция setTimeout(...) передаст управление обратно в браузер на короткое время для рендеринга доски, то через некоторое время он возобновит рекурсивный вызов play(...):

https://developer.mozilla.org/en-US/docs/DOM/window.setTimeout

Так что-то вроде этого:

window.setInterval(play(opp,player),100); 

Так браузер отображает доску с отметкой, затем возобновляет вызов следующего уровня глубины воспроизведения метода через 100 миллисекунд.