c - Ret tryk på tasten uden at indtaste for bekræftelse

Indlæg af Hanne Mølgaard Plasc

Problem



Jeg har søgt et stykke tid for at finde en funktion i Windows-systemer til brug i C-programmering, for at bestemme hvilken tast der blev trykket, uden at kræve 'enter' -tasten til bekræftelse.


Jeg har fundet kbhit(), men dette returnerer kun positivt på tastetrykket, og 0 mens der ikke er nogen tastetryk. Jeg synes ligesom den samme adfærd på en funktion, men returnerer min nøgles ASCII-kode.


Årsagen er, at jeg vil bygge nogle kontroller på et konsolbaseret spil, hvor jeg har brug for pile til at navigere afspilleren. 'A' ville flytte mit punkt tilbage, 'D' rigtigt.


I øjeblikket skal jeg trykke på 'a' og 'enter', 'd' og 'enter' med den simple scanf("\%c"), og det ville være rart at konsollen kun reagerer, hvis man trykker på et bogstav i stedet for en + Indtast på hver bevægelse.

Bedste reference


Se det her:


char ch;
ch = getch();
if(ch == 's') printf("you pressed s 
");

Andre referencer 1


Fra lyden af ​​ting vil du have noget som dette:


#include <conio.h>

int ch;

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


getch() blokke venter på input, men det vil læse en enkelt tastetryk uden buffering, så det venter ikke på, at du trykker på enter-tasten.