Du är på rätt väg,
ch=getch();
if(ch==70)
printf("En pil tryckt!");
Har inte provat det men det borde fungera.
/Viktor
4 svar · 500 visningar · startad av JPE
I t.ex qbasic kan man läsa av inmatade piltangenter enligt
a$=input$(1) (detta stannar upp och läser in ett tecken till a$)
if a$=chr$(0)+chr$(78) then...
(kan inte dubbelkoderna i huvudet, men pilarnas ascii koder
ligger där kring 0+70 till 0+80 ungefär
Men så frågan - är det någon som vet hur man gör detta i C.
(alt C++) ??
typ:
char ch;
ch=getch();
if(ch== ?????)...
eller på nått annat vis, bara man på nått vis kan få bekräftat att
en av pilarna (eller annat tecken med dubbelkod) har tryckts
ned av användaren
Du är på rätt väg,
ch=getch();
if(ch==70)
printf("En pil tryckt!");
Har inte provat det men det borde fungera.
/Viktor
nix
Alltså piltangenterna, liksom 'page up' , page down' och en del till
har inga egentliga ascii-koder. (varken 7 bitars eller 8 bitars)
Istället har de s.k. dubbelkoder och i QBasic går det att avläsa dessa dubbelkoder. Låt oss säga att 'Arrow down' har dubbelkod
0 + 78. (dubbelkode börjar alltid på "noll plus ett ascii")
att läsa av om denna tangent blivit nedtryckt av användaren
är alltså inte samma sak som att tangent med ascii 78 trycks ner, även om 0+78 förvisso är 78.
Så så enkelt som du vill göra det till, sorry...
Ok, det var fel, då gör vi ett nytt försök :)
Denna kod är baserad på det som har har hittat här, Goggle
UpArrow = 328
DownArrow = 336
RightArrow = 333
LeftArrow = 331
Home=327
End=335
#include <conio.h>
#include <iostream>
using namespace std;
int mygetch();
int main()
{
cout << mygetch() << endl;
return 0;
}
int mygetch()
{
int key;
key=getch();
if(key==224)
key=getch()+256;
return(key);
}
Jag har provat den i VS.NET (C++) och där fungerar den perfekt.
/Viktor
Jo, det fungerade ju mycket bättre. Fast måste erkänna att jag inte riktigt förstår det där med 224. Efter MYCKET testande
fick jag själv fram följande lösning (använder själv alltid "C-style", om det inte handlar om ett större objektorienterat projekt):
char mygetch(void)
{
char c;
c=getch();
if(c==0)c=getch();
return c;
}
När man trycker på en 'dubbelkodstangent' läses alltså TVÅ
tecken in, och det första är (nästan) alltid en nolla.
Pilarnas dubbelkoder är 0+72,0+75,0+77 och 0+80