Ожидание ввода пользователя - Javascript - PullRequest
0 голосов
/ 09 ноября 2018

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

...