Stilllegung des Forums
Das Forum wurde am 05.06.2023 nach über 20 Jahren stillgelegt (weitere Informationen und ein kleiner Rückblick).
Registrierungen, Anmeldungen und Postings sind nicht mehr möglich. Öffentliche Inhalte sind weiterhin zugänglich.
Das Team von spieleprogrammierer.de bedankt sich bei der Community für die vielen schönen Jahre.
Wenn du eine deutschsprachige Spieleentwickler-Community suchst, schau doch mal im Discord und auf ZFX vorbei!
Werbeanzeige
C-/C++-Quelltext |
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 |
enum key_state { KS_NONE = 0, KS_PRESSED, KS_PRESSING, KS_RELEASED }; key_state up_key_state = KS_NONE; key_state down_key_state = KS_NONE; const sf::Input& input = App.GetInput(); if( input.IsKeyDown( sf::Key::Up ) && up_key_state == KS_NONE ) up_key_state = KS_PRESSED; else if( input.IsKeyDown( sf::Key::Up ) && up_key_state == KS_PRESSED ) up_key_state = KS_PRESSING; else if ( !input.IsKeyDown( sf::Key::Up ) && ( up_key_state == KS_PRESSED || up_key_state == KS_PRESSING ) ) up_key_state = KS_RELEASED; else if( !input.IsKeyDown( sf::Key::Up ) ) up_key_state = KS_NONE; if( up_key_state == KS_PRESSED ) ++Auswahl; |
C-/C++-Quelltext |
|
1 2 |
key_state up_key_state = KS_NONE; key_state down_key_state = KS_NONE; |
Zitat
Achja: TGGC hat schon Recht, ich verbitte mir das du den Ton von TGGC verbittest! Denn hier ist das angebracht.
Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von »Checkmateing« (16.09.2011, 14:36)
Du Fragst ab ob was KS_NONE ist. JA! Also weiter: Ist etwas KS_PRESSED? JA! Also weiter: Ist etwas KS_PRESSED und KS_RELEASED? JA! Also weiter: Taste oben gedrückt? Ja, also KS_NONE setzen.
Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von »Checkmateing« (16.09.2011, 15:09)
C-/C++-Quelltext |
|
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 |
// Key-State enum definiert für eine Taste einen bestimmten Zustand, enum key_state { KS_NONE = 0, // Nicht gedrückt KS_PRESSED, // Gerade gedrückt KS_PRESSING, // Länger gedrückt KS_RELEASED // Gerade losgelassen }; key_state up_key_state = KS_NONE; // Down state logischerweise analog zum up_state zu realisieren.... key_state down_key_state = KS_NONE; void check_input() { const sf::Input& input = App.GetInput(); // Wenn die Taste jetzt gedrückt ist, vorher nocht nicht gedrückt war, dann ist sie jetzt gerade eben gedrückt worden if( input.IsKeyDown( sf::Key::Up ) && up_key_state == KS_NONE ) up_key_state = KS_PRESSED; // Ist die Taste gedrückt und war auch vorher schon gedrückt, dann ist sie schon länger gedrückt else if( input.IsKeyDown( sf::Key::Up ) && up_key_state == KS_PRESSED ) up_key_state = KS_PRESSING; // Ist die Taste nicht gedrückt, war es aber gerade eben noch, dann ist sie jetzt gerade losgelassen worden else if ( !input.IsKeyDown( sf::Key::Up ) && ( up_key_state == KS_PRESSED || up_key_state == KS_PRESSING ) ) up_key_state = KS_RELEASED; // Ist die Taste nicht gedrückt, aber auch nicht gerade eben gedrückt gewesen, dann ist sie nicht gedrückt. else if( !input.IsKeyDown( sf::Key::Up ) ) up_key_state = KS_NONE; // Nur wenn die Taste gerade eben gedrückt wurde, wird die Auswahl erhöht. if( up_key_state == KS_PRESSED ) ++Auswahl; } |
Werbeanzeige