1

我正在开发两人游戏,我需要在每次移动后交换玩家。

目前我有这个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);
        }
    });
}

在对手计算他的移动之前不会绘制移动的玩家的问题。

我怎样才能使这个异步?

4

1 回答 1

1

运行递归函数时浏览器挂起。javascript函数setTimeout(...)会将控制权短暂地传递回浏览器以渲染您的板,然后在一段时间后它将恢复递归调用play(...)

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

所以是这样的:

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

所以浏览器用标记渲染棋盘,然后在 100 毫秒后继续调用 play 方法的下一层。

于 2013-04-24T15:55:47.090 回答