Я пишу 2d пошаговую приключенческую игру на C #, которая запускается в консоли Windows.Вот примерное представление о том, как выглядит мой игровой цикл:
while(condition) {
MethodCall1();
MethodCall2();
MethodCall3();
GetPlayerInput(Console.ReadKey());
}
Игра запускается в цикле while, а конец цикла - Console.ReadKey ().Идея состоит в том, чтобы игра распечатала всю необходимую информацию, запустила искусственный интеллект противника и другие расчеты, а затем ждала ввода от пользователя, прежде чем делать все заново.Я сталкиваюсь с проблемой, как бы то ни было.Выполнение всего кода занимает достаточно много времени (главная причина - печать карты на консоль, на печать которой уходит около 150 мс), и в течение этого времени консоль все еще читает пользовательский ввод, хотяПохоже, что нужно дождаться, чтобы прочитать ввод, пока весь код и печать не будут выполнены.Если какая-либо клавиша удерживается нажатой, она проходит по коду столько нажатий клавиш, сколько обнаружила, даже если я отпущу клавишу.
Итак, я предполагаю, что у меня есть два вопроса: почему консоль читает ввод, даже если она все еще выполняет код, и что является хорошим способом предотвратить это?