Pfeiltaste mit getch einlesen

Diese Seite verwendet Cookies. Durch die Nutzung unserer Seite erklären Sie sich damit einverstanden, dass wir Cookies setzen. Weitere Informationen

  • Pfeiltaste mit getch einlesen

    Hi, Leute!
    Ich hänge jetzt schon ein ganze weile an dem Theme Pfeiltasten fest, und bekomme es einfach nicht hin.
    Alles was ich dazu im Internet gefunden habe funktioniert nicht bzw. springt auch auf andere Tasten an.
    Das folgende geht soweit reagiert aber auch auf 'A', 'B', 'C' und 'D':

    Quellcode

    1. int c = getch();
    2. if (c == 0 || c == 27) {
    3. switch ((c = getch())) {
    4. case 'A': // 65
    5. printf("Sie haben den Pfeil nach oben gedrückt! (%d)\n", c);
    6. break;
    7. case 'B': // 66
    8. printf("Sie haben den Pfeil nach unten gedrückt! (%d)\n", c);
    9. break;
    10. case 'C': // 67
    11. printf("Sie haben den Pfeil nach rechts gedrückt! (%d)\n", c);
    12. break;
    13. case 'D': // 68
    14. printf("Sie haben den Pfeil nach links gedrückt! (%d)\n", c);
    15. break;
    16. }
    17. } else
    18. printf("Sie haben %c gedrückt! (%d)\n", c, c);
    Alles anzeigen


    Ich hoffe dass irgendjemand eine Lösung hat! 8o
    Danke schon mal im Voraus!

    PS: Der Syntax-Editor macht einen ja wahnsinnig! 8|

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von Jezziem ()

  • Oh man, ist es denn so schwer ein paar Zeilen deines Codes hier zu zeigen, damit ich sehe was dir Schwierigkeiten bereitet?
    Es gibt da mehrere Lösungswege. Versuche dein Problem in wenigen Zeilen Code zu demonstrieren.

    Wahrscheinlich gibt es schon einen Lösungsweg von mir hier im Forum. Der funktioniert früher unter DOS. Aber Microsoft hat da etwas geändert, wenn du mit deren Produkten arbeitest. Oder werkelst du unter Linux?

    MfG bcc-fan
  • Den Quelltext editieren auf dem ein Beitrag basiert, sollte man nur bei Tippfehlern oder ähnlichem, was ganz aus dem Ruder gelaufen ist. Das möglichst ohne den Sinn des Beitrags zu ändern, wenn schon Antworten geschrieben worden sind.

    Wird die Frage erweitert, dann chronologisch weiter schreiben, damit man das besser nachvollziehen kann.



    Hier der alte Beitrag aus diesem Forum zu den Cursortasten:
    Daten Einlesen

    Weiss nicht warum du immer mit 'A', 'B', 'C', 'D' im Quelltext herum machst. Nein, lass den Quelltext nun oben so wie der ist. Änderungen schreib hier nach ;)

    Auch noch verbreitet zur Spielesteuerung sind die Tasten 'w', 'a', 'd' und 'y'. Statt 'y' wird auch 's' oft genutzt. Der Quellcode ist dann minimal einfacher für Programmieranfänger und die Tasten liegen halbwegs ergonomisch ;)

    Hier mal ein programmiertechnisch nicht nicht guter Beitrag von N10B, der aber wahrscheinlich funktioniert:
    html.de/c-c-c-java-visual-basi…ten-co-der-konsole-c.html
    Solltet ihr nur verwenden, wenn ihr den Quelltext sauberer schreibt ;)
    Der Hinweis mit DEV 4.9.9.2 compilieren deutet oft darauf hin das der Schreiber nicht so ganz verstanden hat was er macht. Der DEV ist eine IDE und der Compiler darunter meist ein alter MinGW 3.4.2 oder 3.4.5. Seltener läuft unter dem DEV cygwin.

    Unter VisualStudio C++ das MSDN zu dem Thema lesen. Da muss der Quelltext ein wenig erweitert werden.

    Unter Linux könnt ihr euch ncurses oder vergleichbares ansehen.
    MAC weiss ich nicht, aber auch da könnte ncurses verfügbar sein.

    MfG bcc-fan

    Dieser Beitrag wurde bereits 2 mal editiert, zuletzt von bcc-fan ()

  • Unter Linux hat ncurses.h funktioniert :)

    Quellcode

    1. #include<ncurses.h>
    2. int main(void) {
    3. int c;
    4. initscr();
    5. keypad(stdscr, TRUE);
    6. noecho();
    7. printw("Drücken sie eine Taste (<CTRL + C> zum beenden...\n)");
    8. while ((c = getch()) != KEY_EXIT) {
    9. switch (c) {
    10. case KEY_UP:
    11. printw("Sie haben die Pfeiltaste nach oben gedrückt!\n");
    12. break;
    13. case KEY_DOWN:
    14. printw("Sie haben die Pfeiltaste nach unten gedrückt!\n");
    15. break;
    16. case KEY_RIGHT:
    17. printw("Sie haben die Pfeiltaste nach rechts gedrückt!\n");
    18. break;
    19. case KEY_LEFT:
    20. printw("Sie haben die Pfeiltaste nach links gedrückt!\n");
    21. break;
    22. default:
    23. printw("Sie haben %c gedrückt!\n", c);
    24. break;
    25. }
    26. }
    27. endwin();
    28. }
    Alles anzeigen