Sono sicuro che questo deve essere stato chiesto prima, ma una ricerca rapida non ha trovato nulla.Ottenere i tasti freccia da cin
Come posso ottenere i tasti freccia/direzione con cin
in C++?
Sono sicuro che questo deve essere stato chiesto prima, ma una ricerca rapida non ha trovato nulla.Ottenere i tasti freccia da cin
Come posso ottenere i tasti freccia/direzione con cin
in C++?
È stato già chiesto prima e la risposta è che non è possibile farlo.
C++ non ha il concetto di una tastiera o di una console. Conosce solo un flusso di dati di input opaco.
La console fisica esegue il preprocesso e il buffer dell'attività della tastiera e invia solo dati cotti al programma, di solito riga per riga. Per parlare direttamente con la tastiera, è necessaria una libreria di gestione dei terminali specifica per la piattaforma.
Su Linux, questo in genere viene eseguito con le librerie ncurses
o termcap
/terminfo
. Su Windows puoi usare pdcurses
, o forse l'API di Windows (anche se non ho familiarità con questo aspetto).
I framework di applicazioni grafiche come SDL, Allegro, Irrlicht o Ogre3D sono dotati anche di gestione completa da tastiera e mouse.
Ecco un puntatore se non ti dispiace usare getch()
situato in conio.h
.
#include <stdio.h>
#include <conio.h>
#define KB_UP 72
#define KB_DOWN 80
#define KB_LEFT 75
#define KB_RIGHT 77
#define KB_ESCAPE 27
int main()
{
int KB_code=0;
while(KB_code != KB_ESCAPE)
{
if (kbhit())
{
KB_code = getch();
printf("KB_code = %i \n",KB_code);
switch (KB_code)
{
case KB_LEFT:
//Do something
break;
case KB_RIGHT:
//Do something
break;
case KB_UP:
//Do something
break;
case KB_DOWN:
//Do something
break;
}
}
}
return 0;
}
Sei davvero fortunato che non hai familiarità con WinAPI. L'ignoranza è beatitudine! :) – FailedDev
@FailedDev: hehe - Ne conosco un po ', e ho visto la mia parte di twister in lingua ungherese e 'LPHANDLE's :-) Non ho mai visto nulla relativo alla gestione del terminale raw ... feel libero di suonare con alcune indicazioni! :-) –
:) Non ho mai fatto qualcosa del genere, anche se sono sicuro che sia possibile. Ma OP non sembra essere interessato al sistema operativo specifico, sebbene dovrebbe farlo :) – FailedDev