Итак, у меня есть этот фрагмент кода, в котором, я думаю, мне нужно отложить ввод _getch, чтобы дать время для завершения cout. В настоящее время рассылка спама или удерживание соответствующей кнопки собирает входные данные быстрее, чем я могу обновить консоль и каким-то образом сохранить их, поэтому после отпускания кнопки требуется некоторое время для завершения обновления и печати.
Я пытался очистить ожидающие couts, однако я не смог этого сделать. Я также пытался поставить Sleep() перед _getch(), но это просто не работает.
Редактировать
Любая очистка или очистка буфера, которую я мог найти и понять, также не сработала для меня, поэтому я пытаюсь замедлить сбор ввода.
Я также был бы заинтересован в более быстром способе вывода огромных массивов 2D-символов или оптимизации обновлений консоли.
while (inp != 27)
{
if (inp == 72) cordx -= 1; //up
if (inp == 80) cordx += 1; //down
if (inp == 75) cordy -= 1; //left
if (inp == 77) cordy += 1; //right
//cout of a huge char array, repeated every input
inp = _getch();
coordScreen = { 100, 0 };
SetConsoleCursorPosition(hConsole, coordScreen);
}
_getch()
регистрируется намного быстрее, чем я могу реально вывести кусок карты 40x40 вокруг игрока, что приводит к серьезным задержкам во время длительного движения, когда вам нужно ждать до 10 секунд для завершения всего движения, что может немного раздражать движение. Если кто-то будет не спамить и не удерживать кнопку, а нажимать ее в правильном темпе, все будет отлично. Поэтому я хотел бы, чтобы он обрабатывал как можно больше входных данных. - person Laczek   schedule 28.12.2019_kbhit()
. Просто ничего не отображайте, когда он возвращает ненулевое значение. - person Hans Passant   schedule 28.12.2019_kbhit()
сделал это. Это даже ускорило обновление консоли! Всем большое спасибо! - person Laczek   schedule 28.12.2019