Возврат нажатой клавиши без ввода для подтверждения - PullRequest
0 голосов
/ 16 марта 2012

Я некоторое время искал, чтобы найти функцию в системах Windows для использования в программировании на C, чтобы определить, какая клавиша была нажата, не требуя клавишу «Ввод» для подтверждения.

Я нашелkbhit(), но это возвращает только положительные значения при нажатии клавиш и 0 при отсутствии нажатия клавиш.Мне бы хотелось, чтобы в функции было то же поведение, но возвращался код ASCII моей клавиши.

Причина в том, что я хочу создать некоторые элементы управления в игре на основе консоли, где мне нужны стрелки для навигации по игроку.,«А» переместит мою точку влево, «Д» - вправо.

В этот момент мне нужно нажать «a» и «enter», «d» и «enter» простым scanf("%c"), и было бы неплохо, если бы консоль реагировала только при нажатиибуква вместо + вводится при каждом движении.

Ответы [ 2 ]

4 голосов
/ 16 марта 2012

Посмотрите на это:

char ch;
ch = getch();
if(ch == 's') printf("you pressed s \n");
3 голосов
/ 16 марта 2012

По звуку вещей хочется что-то вроде этого:

#include <conio.h>

int ch;

if (kbhit())
    ch = getch();

getch() блокирует ожидание ввода, но он будет считывать нажатие одной клавиши без буферизации, поэтому он не будет ждать, пока вы нажмете клавишу ввода.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...