2013-04-24 25 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'是什么?你似乎传递了一个回调函数,它是异步的吗?此外,什么触发“玩”电话? – plalx 2013-04-24 16:03:10

+0

此外,绘图代码何时执行? – plalx 2013-04-24 16:09:39

回答

1

当您运行递归函数时,浏览器挂起。 JavaScript函数setTimeout(...)将通过控制回浏览器简单地进行渲染您的主板,那么一段时间后,将恢复递归调用play(...)

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

因此,像这样:

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

所以浏览器使用标记渲染板,然后在100毫秒后继续调用深层方法播放的下一层。