JLI Spieleprogrammierung Foren-Übersicht JLI Spieleprogrammierung

 
 FAQFAQ   SuchenSuchen   MitgliederlisteMitgliederliste   BenutzergruppenBenutzergruppen 
 medals.php?sid=ff6d45a87b2802c6222c836bc60b739eMedaillen   RegistrierenRegistrieren   ProfilProfil   Einloggen, um private Nachrichten zu lesenEinloggen, um private Nachrichten zu lesen   LoginLogin 

Tastaturbuchstaben auslesen...
Gehe zu Seite 1, 2  Weiter
 
Neues Thema eröffnen   Neue Antwort erstellen    JLI Spieleprogrammierung Foren-Übersicht -> Entwicklung
Vorheriges Thema anzeigen :: Nächstes Thema anzeigen  
Autor Nachricht
underberg
JLI'ler



Anmeldedatum: 11.01.2003
Beiträge: 153

Medaillen: Keine

BeitragVerfasst am: 08.07.2003, 13:36    Titel: Tastaturbuchstaben auslesen... Antworten mit Zitat

Also...
Ich benutze diese Funktion um Tastaturcodes auszulesen:
Code:
void GetKeyData()
{
    // alle Tasten der Tastatur
    bool bKeyboard[256];
   
    if(FAILED(lpDIKeyboard->GetDeviceState(sizeof(bKeyboard),(LPVOID)&bKeyboard)))
    {
        // die Tastatur wurde zwischenzeitlich
        // durch eine andere Anwendung genutzt
        // Kontrolle wiederholen
        lpDIKeyboard->Acquire();
        return;
    }

   
    // die gedrückte Taste ausgeben
   if (bKeyboard[DIK_RETURN])
    {
   GetReturn();
    }
   if (bKeyboard[DIK_LEFT])
    {

...
    }
   
   
    if(bKeyboard[DIK_RIGHT])
    {
...
    }


...


Soweit so gut... Geht auch alles...
Aber: Jetzt will ich an einer Stelle einen 4buchstaben Code eingeben lassen...
Kann ich irgendwie innerhalb der Funktion den eingegeben Buchstaben verabreiten ohne eine Routine für jeden Buchstaben einzeln einzugeben???

Plzzz
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Hazel
JLI MVP
JLI MVP


Alter: 39
Anmeldedatum: 19.07.2002
Beiträge: 1761

Medaillen: Keine

BeitragVerfasst am: 08.07.2003, 14:01    Titel: Antworten mit Zitat

Für solche Eingaben würde ich WM_CHAR und WM_KEYDOWN abfangen. Das ist deutlich einfacher.
_________________
*click* Dabuu!?
Twitter: http://twitter.com/Ollie_R
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
nigs
Super JLI'ler



Anmeldedatum: 19.12.2002
Beiträge: 359

Medaillen: Keine

BeitragVerfasst am: 08.07.2003, 14:02    Titel: Antworten mit Zitat

windows is aber soweit ich weis langsamer...
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden
The Lord of Programming
Living Legend


Alter: 37
Anmeldedatum: 14.03.2003
Beiträge: 3122

Medaillen: Keine

BeitragVerfasst am: 08.07.2003, 14:07    Titel: Antworten mit Zitat

Aber es is für den Anfang auch einfacher Wink
_________________
www.visualgamesentertainment.net
Current projects: RDTDC(1), JLI-Vor-Projekt, Tetris(-Tutorial), JLI-Format
(1) Realtime Developer Testing and Debugging Console


Anschlag, Anleitung zum Atombombenbau, Sprengkörper...
Hilf Schäuble! Damit er auch was findet...
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
underberg
JLI'ler



Anmeldedatum: 11.01.2003
Beiträge: 153

Medaillen: Keine

BeitragVerfasst am: 08.07.2003, 14:13    Titel: Antworten mit Zitat

Hilft mir aber jetzt nicht weiter... Evil or Very Mad Evil or Very Mad Evil or Very Mad

Gibt es einen Weg, dass über die obige Funktion zu realisieren???
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
The Lord of Programming
Living Legend


Alter: 37
Anmeldedatum: 14.03.2003
Beiträge: 3122

Medaillen: Keine

BeitragVerfasst am: 08.07.2003, 14:23    Titel: Antworten mit Zitat

Was meinst du denn konkret mit Buchstaben verarbeiten?
_________________
www.visualgamesentertainment.net
Current projects: RDTDC(1), JLI-Vor-Projekt, Tetris(-Tutorial), JLI-Format
(1) Realtime Developer Testing and Debugging Console


Anschlag, Anleitung zum Atombombenbau, Sprengkörper...
Hilf Schäuble! Damit er auch was findet...
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
underberg
JLI'ler



Anmeldedatum: 11.01.2003
Beiträge: 153

Medaillen: Keine

BeitragVerfasst am: 08.07.2003, 14:24    Titel: Antworten mit Zitat

The Lord of Programming hat Folgendes geschrieben:
Was meinst du denn konkret mit Buchstaben verarbeiten?


Wenn ein 'A' oder 'a' eingeben wird soll der erste Buchstabe von
char Code[5]="####";
ein A sein (daher A###*);

und das selbe für die Buchstaben B bis Z und b bis z...
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
The Lord of Programming
Living Legend


Alter: 37
Anmeldedatum: 14.03.2003
Beiträge: 3122

Medaillen: Keine

BeitragVerfasst am: 08.07.2003, 14:43    Titel: Antworten mit Zitat

Dann würde ich dir das empfehlen:
Code:

//Globaler Zähler
int lenghtOfCode=0;

//input-funktion
case Taste
{
DIK_A:
    Code[lenghtOfCode]='A';
    lenghtOfCode++;
    break;
DIK_B:
    Code[lenghtOfCode]='B';
    lenghtOfCode++;
    break;
//[...]
DIK_Z:
    Code[lenghtOfCode]='Z';
    lenghtOfCode++;
    break;
DIK_BACKSPACE:
    lenghtOfCode--;
    break;
}


Was einfacheres kann ich dir leider nicht empfehlen Confused
_________________
www.visualgamesentertainment.net
Current projects: RDTDC(1), JLI-Vor-Projekt, Tetris(-Tutorial), JLI-Format
(1) Realtime Developer Testing and Debugging Console


Anschlag, Anleitung zum Atombombenbau, Sprengkörper...
Hilf Schäuble! Damit er auch was findet...
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
nigs
Super JLI'ler



Anmeldedatum: 19.12.2002
Beiträge: 359

Medaillen: Keine

BeitragVerfasst am: 08.07.2003, 14:48    Titel: Antworten mit Zitat

char alphabet[] = "ABZDEFGHIJKL..........";
int DIK[] = {DIK_A, DIK_B, DIK_C ......... DIK_X, DIK_Y, DIK_Z};


dein_4_buchstaben_char[3];
int zaehler = 0;

for(int i=0;i == 26;i++)
{
if (bKeyboard[DIK[i])
{
dein_4_buchstaben_char[zaehler] = alphabet[i];
zaehler++;
}
if(zaehler == 3)break;
}





das müste gehen. der einzige haken ist das ich nich weis ob man den wert von einer DIK-constante(DIK_A.....DIK_Z) in einem integer speichern kann (wenn ich in dinput.h nachguck hat DIK_A zum beispiel den wert "0x1E" ob diese hexadezimale zahl von compiler automatisch in ganzzahlen umgerechnet werden weis ich nich)

p.s.: wenn das beispiel bei dir funktioniert benutz ich es auch für mein game Very Happy (ist garkeine dumme idee das mit den arrays...)


[/EDIT]wenn du sonderzeichen haben willst müstest du für z.B. die Space taste ganz zum schluß von alphabet ein " " eintragen aber dadafür noch in der DIK[] ganz zum schluß "DIK_SPACE" eintragen dazu natürlich bei der for-schleife das "i == 26" in "i == 27" umändern....... dann könntest noch zum beispiel eine extra if-abfrage in die schleife hängen die so aussieht:
if (bKeyboard[DIK_BACKSPACE)
{
zaehler--;
}

so hättest du dann eine löschfunktion mitdrin......[/EDIT]
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden
underberg
JLI'ler



Anmeldedatum: 11.01.2003
Beiträge: 153

Medaillen: Keine

BeitragVerfasst am: 08.07.2003, 17:39    Titel: Antworten mit Zitat

DANK EUCH ES GEHT!!!
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Hazel
JLI MVP
JLI MVP


Alter: 39
Anmeldedatum: 19.07.2002
Beiträge: 1761

Medaillen: Keine

BeitragVerfasst am: 08.07.2003, 17:46    Titel: Antworten mit Zitat

nigs hat Folgendes geschrieben:
windows is aber soweit ich weis langsamer...


Das ist doch egal, wenn man einen Text eingeben muss. Bei mir geht es wunderbar. Ich habe einen Singleton, den man an- und ausschalten kann und je nach dem loggt der die Keys mit und im Programm kann man dann immer und überall den eingegebenen Text abfragen und verwenden.
_________________
*click* Dabuu!?
Twitter: http://twitter.com/Ollie_R
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
nigs
Super JLI'ler



Anmeldedatum: 19.12.2002
Beiträge: 359

Medaillen: Keine

BeitragVerfasst am: 08.07.2003, 17:58    Titel: Antworten mit Zitat

mit was geht es??hast du mein beispiel verwendet???
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden
Hazel
JLI MVP
JLI MVP


Alter: 39
Anmeldedatum: 19.07.2002
Beiträge: 1761

Medaillen: Keine

BeitragVerfasst am: 08.07.2003, 19:11    Titel: Antworten mit Zitat

Nein, das würde ich nie tun, der Code is besch... eiden. ;) Ich hab mir eine Klasse geschrieben, die die Window-Messages WM_CHAR und WM_KEYDOWN abfängt. Sie funktioniert genauso wie eine Edit Box(mit Cursor) und sie kann sogar die Editiertasten(Backspace, Entf, Pos1, Ende) und die Richtungstasten korrekt behandeln. ;)
_________________
*click* Dabuu!?
Twitter: http://twitter.com/Ollie_R
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Hazel
JLI MVP
JLI MVP


Alter: 39
Anmeldedatum: 19.07.2002
Beiträge: 1761

Medaillen: Keine

BeitragVerfasst am: 08.07.2003, 19:13    Titel: Antworten mit Zitat

Zitat:
wenn ich in dinput.h nachguck hat DIK_A zum beispiel den wert "0x1E" ob diese hexadezimale zahl von compiler automatisch in ganzzahlen umgerechnet werden weis ich nich


Was ist an "0x1E" nicht ganzzahl? Das ist doch 30...
_________________
*click* Dabuu!?
Twitter: http://twitter.com/Ollie_R
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
underberg
JLI'ler



Anmeldedatum: 11.01.2003
Beiträge: 153

Medaillen: Keine

BeitragVerfasst am: 08.07.2003, 20:15    Titel: Antworten mit Zitat

nigs hat Folgendes geschrieben:
mit was geht es??hast du mein beispiel verwendet???


Na klar... Funktioniert fehlerfrei... (abgesehen davon das da i<=26 und nicht i==26 hinmuss...)

Thx.
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Beiträge der letzten Zeit anzeigen:   
Neues Thema eröffnen   Neue Antwort erstellen    JLI Spieleprogrammierung Foren-Übersicht -> Entwicklung Alle Zeiten sind GMT
Gehe zu Seite 1, 2  Weiter
Seite 1 von 2

 
Gehe zu:  
Du kannst keine Beiträge in dieses Forum schreiben.
Du kannst auf Beiträge in diesem Forum nicht antworten.
Du kannst deine Beiträge in diesem Forum nicht bearbeiten.
Du kannst deine Beiträge in diesem Forum nicht löschen.
Du kannst an Umfragen in diesem Forum nicht mitmachen.


Powered by phpBB © 2001, 2005 phpBB Group
Deutsche Übersetzung von phpBB.de

Impressum