В настоящее время я работаю над веб-приложением для игры на двоих, где игроками могут быть как люди-игроки, так и ИИ. Для каждого игрока я использую класс Human или 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 завершается неудачно. Любая помощь приветствуется. Есть ли способ реструктурировать логику, чтобы избежать этой проблемы?