Hypercell ein ] Hypercell aus ] Zeige Navigation ] Verstecke Navigation ]
c++.de  
   

Die mobilen Seiten von c++.de:
http://m.c-plusplus.de
Infos hier [BETA]

  
c++.de :: DOS und Win32-Konsole (nur Lesen) ::  Pfeiltastendruck (ASCII-code) erkennung  
Gehen Sie zu Seite 1, 2  Weiter
  Zeige alle Beiträge auf einer Seite
Thema geschlossen
Autor Nachricht
uncannysnake
Mitglied

Benutzerprofil
Anmeldungsdatum: 10.02.2012
Beiträge: 33
Beitrag uncannysnake Mitglied 18:50:12 30.07.2012   Titel:   Pfeiltastendruck (ASCII-code) erkennung            Zitieren

hallo,
weiß jemand von euch, wie ein programm das drücken einer pfeiltaste erkennt?

also mit kbhit(), aber da die pfeiltasten anscheinend keinen ascii-code haben,
hab ich keine ahnung, wie ich das vergleichen kann.

durch das drücken der pfeiltaste soll eine aktion ausgeführt werden,
falls ihr fragt wozu ich es brauche.

MFG
uncannysnake
C++ Forumbot
Forumbot

Benutzerprofil
Anmeldungsdatum: 29.02.2004
Beiträge: 17120
Beitrag C++ Forumbot Forumbot 18:55:06 30.07.2012   Titel:              Zitieren

Dieser Thread wurde von Moderator/in SeppJ aus dem Forum C (C89 und C99) in das Forum DOS und Win32-Konsole verschoben.

Im Zweifelsfall bitte auch folgende Hinweise beachten:
C/C++ Forum :: FAQ - Sonstiges :: Wohin mit meiner Frage?


Dieses Posting wurde automatisch erzeugt.

_________________
Besuchen Sie unsere Bücherecke.
http://www.c-plusplus.de/bucher.php
Mit jeder Bestellung unterstützen Sie das Forum.
DirkB
Unregistrierter




Beitrag DirkB Unregistrierter 20:44:13 30.07.2012   Titel:              Zitieren

Die Pfeiltasten (Cursor-Tasten) sowie die anderen Funktionstasten liefern zwei Zeichencodes.
Über den ersten kannst du erkennen, dass es eine Funktinstaste ist. Über den zweiten kannst du dann die Taste auswerten.

Genaue Werte weiß ich jetzt nicht mehr. Ist schon laaaange her.
DasC
Unregistrierter




Beitrag DasC Unregistrierter 20:52:59 30.07.2012   Titel:              Zitieren

Gleich kommt der SeppJ und heult wegen deinem Deutsch, pass auf.
7xCore
Mitglied

Benutzerprofil
Anmeldungsdatum: 30.07.2011
Beiträge: 438
Beitrag 7xCore Mitglied 22:38:09 30.07.2012   Titel:              Zitieren

http://www.c-plusplus.de/forum/282184?highlight=taste
http://www.c-plusplus.de/forum/277216?highlight=taste
http://www.c-plusplus.de/forum/303169?highlight=taste
http://www.c-plusplus.de/forum/304476?highlight=taste
http://www.c-plusplus.de/forum/293474?highlight=taste
http://www.c-plusplus.de/forum/292921?highlight=taste
http://www.c-plusplus.de/forum/290246?highlight=taste
http://www.c-plusplus.de/forum/289131?highlight=taste

Waren so die ersten Sachen die beim Suchbegriff "Taste" herauskamen ;) ^^

_________________
Mehr Spaß mit der Windows Konsole? -> http://www.coredevteam.de.vu
Sone
Mitglied

Benutzerprofil
Anmeldungsdatum: 29.05.2012
Beiträge: 3217
Beitrag Sone Mitglied 00:21:15 31.07.2012   Titel:              Zitieren

DasC schrieb:
Gleich kommt der SeppJ und heult wegen deinem Deutsch, pass auf.


Maul.

Zitat:
Die Pfeiltasten (Cursor-Tasten) sowie die anderen Funktionstasten liefern zwei Zeichencodes.


In der WinAPI vielleicht.
Und wo wir schon dabei sind, diese Funktion duerfte es tun:

C++:
bool pressed(int code)
{
    return GetKeyState( code ) >> ( sizeof ( GetKeyState(0) ) * 8 - 1);
}


Die Pfeiltastencodes sind

VK_LEFT
VK_RIGHT
VK_UP
VK_DOWN


Bedeutung duerfte vom Kontext her erkenntlich sein. :D
Vergiss nicht, dass das bei jedem Pruefen durch diese Funktion der Status abgefragt wird, wenn eine Taste also gedrueckt ist, wird diese Funktion bei entsprechendem Parameter solange true zurueck geben, bis die Taste wieder losgelassen wird. Also nicht, dass deine Schlange in Lichtgeschwindigkeit nach links fliegt, wenn du das drueckst ;)

Zitat:
durch das drücken der pfeiltaste soll eine aktion ausgeführt werden,


Wirklich? Oder einfach nur aus Spass abfragen? ;)

_________________
You want to do X, and you think Y is the best way of doing so. Instead of asking about X, you ask about Y. | Der C++-Standard Draft: "Note: this is an early draft. It’s known to be incomplet and incorrekt [...]"


Zuletzt bearbeitet von Sone am 00:22:21 31.07.2012, insgesamt 1-mal bearbeitet
uncannysnake
Mitglied

Benutzerprofil
Anmeldungsdatum: 10.02.2012
Beiträge: 33
Beitrag uncannysnake Mitglied 16:32:57 05.08.2012   Titel:              Zitieren

Vielen Dank 7xCore, es hat geklappt ;)
An Sone: dieser c++ code bringt mir leider überhaupt nichts :( ,
aber trotzdem danke.

EDIT:
so nebenbei:
das wird kein snake spiel, sondern ein einarmiger bandit
(snake wäre ja auch wirklich zu klassisch ;) )

MFG
uncannysnake


Zuletzt bearbeitet von uncannysnake am 17:27:24 05.08.2012, insgesamt 1-mal bearbeitet
Sone
Mitglied

Benutzerprofil
Anmeldungsdatum: 29.05.2012
Beiträge: 3217
Beitrag Sone Mitglied 19:10:38 05.08.2012   Titel:              Zitieren

uncannysnake schrieb:

An Sone: dieser c++ code bringt mir leider überhaupt nichts :(


Verstehst du nicht, wie du ihn anwenden sollst/wie er funktioniert? Eine einfachere Version ist die:

C++:
bool pressed(int code)
{
    return GetKeyState( code ) >> 15;
}

_________________
You want to do X, and you think Y is the best way of doing so. Instead of asking about X, you ask about Y. | Der C++-Standard Draft: "Note: this is an early draft. It’s known to be incomplet and incorrekt [...]"


Zuletzt bearbeitet von Sone am 19:10:44 05.08.2012, insgesamt 1-mal bearbeitet
b.b.
Unregistrierter




Beitrag b.b. Unregistrierter 20:43:50 05.08.2012   Titel:   Pfeiltasten - Tastendruck erkennen mal anders            Zitieren

C++:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
#include <stdio.h>
#include <conio.h>
 
typedef void  (*pFunc) (void);
 
unsigned char read_key ( void )
{
    int c = _getch();
    if ( c == 0 || c == 224 )
        return _getch();
    return c;
}
 
void f1 (void ) // 0, 59
{
    puts("F1");
}
 
void f2 (void ) // 0, 60
{
    puts("F2");
}
 
void up (void ) // 224, 72
{
    puts("up");
}
 
void right (void) // 224, 77
{
    puts("right");
}
 
void down (void)    // 224, 80
{
    puts("down");
}
 
void left ( void ) // 224, 75
{
    puts("left");
}
 
void not_implemented_yet (void)
{
    puts("Not implemented yet.");
}
 
void bye(void)
{
    puts("Thanks for trying, bye!");
}
 
int main(void)
{
    int index;
    pFunc pfarr[256];
 
    for (index=0; index<256; index++)
        pfarr[index]=not_implemented_yet;
 
    pfarr[59] = f1;
    pfarr[60] = f2;
    pfarr[72] = up;
    pfarr[77] = right;
    pfarr[80] = down;
    pfarr[75] = left;
    pfarr[0] = not_implemented_yet;
    pfarr[27] = bye;
 
    puts("Welcome to BB's arrow keys function pointer example!" );
    puts("Press Esc to quit." );
 
    while(27 != index)
        pfarr [index=read_key()]();
 
    return 0;
}
TastenDrücker
Unregistrierter




Beitrag TastenDrücker Unregistrierter 12:56:47 06.08.2012   Titel:              Zitieren

C++:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
#include <windows>
#include <iostream>
using namespace std;
 
int main()
{
while(1)
{
Sleep(1); // Damit die CPU nicht so viel arbeiten muss
// Bei alten PC führt der Code sonst zu 100% CPU Auslastung
   if ( GetAsyncKeystate(65) == -32767 )
   {
       cout<<"you have press a "<<endl;
   }
}
 
}


Wenn die Taste a ( 65 )gedrückt wurde dann gibt GetAsyncKeyState den Wert -32767 zurük.


google Suchbegriff: msdn GetAsyncKeyState
Da findest du mehr Infos zu der Funktion.



cpp]
#include <windows>
#include <conio> // getch(); ist aus der C-Library
#include <iostream>
using namespace std;

int main()
{
int key;
while(1)
{
key = getch();
if ( key == 65) // Bin mir nicht sicher ob getch(); hier 65 zurückgibt.
// Hab auch gerade kb das zu testen.^^
{
cout<<"you have press a "<<endl;
}
}

}
[/cpp]
c++.de :: DOS und Win32-Konsole (nur Lesen) ::  Pfeiltastendruck (ASCII-code) erkennung  
Gehen Sie zu Seite 1, 2  Weiter
Thema geschlossen

Zeige alle Beiträge auf einer Seite




Nächstes Thema anzeigen
Vorheriges Thema anzeigen
Sie können Beiträge in dieses Forum schreiben.
Sie können auf Beiträge in diesem Forum antworten.
Sie können Ihre Beiträge in diesem Forum nicht bearbeiten.
Sie können Ihre Beiträge in diesem Forum nicht löschen.
Sie können an Umfragen in diesem Forum nicht mitmachen.

Powered by phpBB © 2001, 2002 phpBB Group :: FI Theme

c++.de ist Teilnehmer des Partnerprogramms von Amazon Europe S.à.r.l. und Partner des Werbeprogramms, das zur Bereitstellung eines Mediums für Websites konzipiert wurde, mittels dessen durch die Platzierung von Werbeanzeigen und Links zu amazon.de Werbekostenerstattung verdient werden kann.

Die Vervielfältigung der auf den Seiten www.c-plusplus.de, www.c-plusplus.info und www.c-plusplus.net enthaltenen Informationen ohne eine schriftliche Genehmigung des Seitenbetreibers ist untersagt (vgl. §4 Urheberrechtsgesetz). Die Nutzung und Änderung der vorgestellten Strukturen und Verfahren in privaten und kommerziellen Softwareanwendungen ist ausdrücklich erlaubt, soweit keine Rechte Dritter verletzt werden. Der Seitenbetreiber übernimmt keine Gewähr für die Funktion einzelner Beiträge oder Programmfragmente, insbesondere übernimmt er keine Haftung für eventuelle aus dem Gebrauch entstehenden Folgeschäden.