我目前正在开发一款适用于两人游戏的网络应用,其中玩家可以是人类玩家或AI。对于每个玩家,我使用的是人类或AI类,并扩展了Agent类。
class Agent{
...
getMove(){...}
}
相关代码如下:
while(!gameOver){
move = curAgent.getMove();
updateBoard(move);
nextPlayer();
}
然后,对于人员代理类,我正在努力提出getMove函数。人类玩家将通过在板上单击来提供动作。这是我目前正在尝试的方法,似乎没有用。
class Human extends Agent{
...
getMove(){
while(!flag){
sleep(500);
}
flag = false;
return this.move;
}
listener(){
this.move = ... //when square clicked set move
flag = true;
}
}
我尝试使用setInterval或setTimeout,但是由于它们是非阻塞的,因此函数会立即返回并且主while循环失败。任何帮助将非常感激。有没有一种方法可以重组逻辑来避免此问题?