Jestem pewien, że to musiało zostać zadane wcześniej, ale szybkie wyszukiwanie nic nie znalazło.Uzyskiwanie klawiszy strzałek od cin
Jak mogę uzyskać klucze strzałek/kierunków z cin
w C++?
Jestem pewien, że to musiało zostać zadane wcześniej, ale szybkie wyszukiwanie nic nie znalazło.Uzyskiwanie klawiszy strzałek od cin
Jak mogę uzyskać klucze strzałek/kierunków z cin
w C++?
Rzeczywiście zostało już zadane, a odpowiedź brzmi, że nie możesz tego zrobić.
C++ nie ma koncepcji klawiatury ani konsoli. Zna tylko nieprzejrzysty wejściowy strumień danych.
Twoja fizyczna konsola preprocesuje i buforuje aktywność klawiatury i wysyła tylko gotowane dane do programu, zazwyczaj liniowo. Aby bezpośrednio porozmawiać z klawiaturą, potrzebujesz specyficznej dla platformy biblioteki obsługi terminalu.
W systemie Linux zazwyczaj odbywa się to przy pomocy bibliotek ncurses
lub termcap
/terminfo
. W systemie Windows można użyć pdcurses
lub Windows API (chociaż nie znam tego aspektu).
Szkielety graficzne aplikacji, takie jak SDL, Allegro, Irrlicht lub Ogre3D są również wyposażone w pełną obsługę klawiatury i myszy.
Oto wskaźnik, jeśli nie przeszkadza Ci użycie getch()
z adresu 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;
}
Naprawdę masz szczęście, że nie jesteś zaznajomiony z winAPI. Ignorancja jest rozkoszą! :) – FailedDev
@FailedDev: hehe - trochę wiem, i widziałem moją część węgierskich skrętów po języku i 'LPHANDLE's :-) Nigdy nie widziałem czegoś związanego z obsługą terminalu ... za darmo dzwonić z kilkoma wskazówkami! :-) –
:) Nie zrobiłem też czegoś takiego, chociaż jestem pewien, że to możliwe. Ale OP nie wydaje się być zainteresowany konkretnym systemem operacyjnym, chociaż powinien: :) – FailedDev