Консоль читает пользовательский ввод во время выполнения кода - PullRequest
0 голосов
/ 23 сентября 2018

Я пишу 2d пошаговую приключенческую игру на C #, которая запускается в консоли Windows.Вот примерное представление о том, как выглядит мой игровой цикл:

while(condition) {
     MethodCall1();
     MethodCall2();
     MethodCall3();
     GetPlayerInput(Console.ReadKey());         
}

Игра запускается в цикле while, а конец цикла - Console.ReadKey ().Идея состоит в том, чтобы игра распечатала всю необходимую информацию, запустила искусственный интеллект противника и другие расчеты, а затем ждала ввода от пользователя, прежде чем делать все заново.Я сталкиваюсь с проблемой, как бы то ни было.Выполнение всего кода занимает достаточно много времени (главная причина - печать карты на консоль, на печать которой уходит около 150 мс), и в течение этого времени консоль все еще читает пользовательский ввод, хотяПохоже, что нужно дождаться, чтобы прочитать ввод, пока весь код и печать не будут выполнены.Если какая-либо клавиша удерживается нажатой, она проходит по коду столько нажатий клавиш, сколько обнаружила, даже если я отпущу клавишу.

Итак, я предполагаю, что у меня есть два вопроса: почему консоль читает ввод, даже если она все еще выполняет код, и что является хорошим способом предотвратить это?

1 Ответ

0 голосов
/ 23 сентября 2018
while (true)
{
    YourMethods();
    while (Console.KeyAvailable)
    {
        Console.ReadKey(true);
    }
    var key = Console.ReadKey();
    Console.WriteLine(key);
}
...