#c #include
#c #включить
Вопрос:
После поиска множества потоков по этому вопросу я не нашел ни одного в Windows, только Linux, Ubuntu и т.д.
Короче говоря, я пытаюсь выяснить, как отключить канонический режим, чтобы ввод в консоль приводил к мгновенному вводу без необходимости нажимать enter.
Более длинная версия. Это то, что я пытаюсь сделать прямо сейчас: когда PGM приостанавливается (текстовая игра), пользователю предлагается ввести клавишу со стрелкой, чтобы переместить игрока по 2D-массиву. Но cin.get()
cin.ignore()
и некоторые другие вещи, которые я пробовал, требуют нажатия enter, прежде чем он продолжит.
Печально известный system("pause>nul");
действительно работает, но, как я читал в разных других местах, это очень плохая практика.
Это часть кода. cout
инструкции предназначены только для тестирования:
//While loop
if(GetAsyncKeyState(VK_UP)){
cout << "up" << endl;
}
else if(GetAsyncKeyState(VK_DOWN)){
cout << "down" << endl;
}
else if(GetAsyncKeyState(VK_LEFT)){
cout << "left" << endl;
}
else if(GetAsyncKeyState(VK_RIGHT)){
cout << "right" << endl;
}
else{
break;}
//pauze and check for arrow key input here
Ответ №1:
Вы getch
также можете использовать в Windows:
Я знаю, что это C, и вы получили устаревшее предупреждение, но оно работает…
этот код выполняется в цикле, пока вы не нажмете Enter:
проверьте, что происходит при нажатии клавиши со стрелкой…
#include <stdio.h>
#include<conio.h>
int main ()
{
int c;
do {
c=getch();
printf("%dn",c);
} while (c != 13);
return 0;
}