问题描述
我正在打井字游戏。
我包括了setTimeout函数,以便在计算机开始移动之前,它看起来像是在“思考”,直到计算机实际在板上留下痕迹。
但是,我注意到当计算机在“思考”时,我可以做出自己的举动,从而击败了让对手先做出自己的举动,然后再做出自己的另一举动的目的(如果这样的话)
示例:
(轮到我)用圆圈标记一个盒子
(计算机转向)计算机“思考” ...
如何防止这种情况?这可能吗?
setTimeout(compTurn,1000)
解决方法
在您的点击侦听器中,查看播放器何时转弯,请检查是否允许播放器首先播放。在安排compTurn
时切换一个布尔值,并在compTurn
完成时将其关闭:
// Start of game:
let playerTurn = true;
// ...
// Make computer take a turn:
playerTurn = false;
setTimeout(compTurn,1000);
const compTurn = () => {
// ...
playerTurn = true;
};
board.addEventListener('click',(e) => {
if (!playerTurn) return;
});