Druck auf Pfeiltaste soll Text ausgeben
-
Hi,
unten stehender Code, ermöglicht mir es mit den Tasten WASD den entsprechenden Text im terminal auszugeben.
Dies möchte ich nun aber gerne mit dem Pfeiltasten ausgeben lassen.
Wie muss der Code dazu abgeändert werden?#include <stdlib.h> /* fuer atexit() */ #include <ncurses.h> #include <stdio.h> #include <curses.h> int main (int argc, char *argv[]) { char a; initscr(); /*init ncurses*/ while (a!='q') { a=getch(); if (a=='w') { //clear(); printf("oben"); } if (a=='a') { //clear(); printf("links"); } if (a=='s') { //clear(); printf("rechts"); } if (a=='d') { //clear(); printf("unten"); } } endwin(); return 0;
-
getch() von ncurses gibt im Gegensatz zum getch() aus der conio.h
keinen char zurück, sondern einen int!
int getch(void);Die Sondertasten haben damit dann entsprechende Werte,
(die nicht in einen char hineinpassen)
die in der curses.h mit defines definiert sind.
Für die Pfeiltassten wären das:KEY_DOWN
KEY_UP
KEY_LEFT
KEY_RIGHTBtw.
Nimm statt den ganzen if-Verschachtelungen ein switch
Das Ganze könnte dann so aussehen:#include <stdlib.h> /* fuer atexit() */ #include <ncurses.h> #include <stdio.h> #include <curses.h> int main (int argc, char *argv[]) { int a = 0; initscr(); /*init ncurses*/ keypad(stdscr,TRUE) //EDIT: Sondertasten aktivieren while ( (a=getch()) !='q') { switch(a) { case KEY_DOWN: printf("down"); break; case KEY_UP: ... } } endwin(); return 0; }
(ungetestet)
Und das Ganze ist kein Ansi-C, kommt also ins Linux/Unix Forum.
-
Dieser Thread wurde von Moderator/in Tim aus dem Forum ANSI C in das Forum Linux/Unix verschoben.
Im Zweifelsfall bitte auch folgende Hinweise beachten:
C/C++ Forum :: FAQ - Sonstiges :: Wohin mit meiner Frage?Dieses Posting wurde automatisch erzeugt.
-
Storm.Xapek.de schrieb:
Und das Ganze ist kein Ansi-C, kommt also ins Linux/Unix Forum.
Hallo Storm.Xapek.de,
ich habe als Anfaenger da mal eine durchaus ernstgemeinte Frage: Warum ist das kein Ansi-C und kommt also ins Linux/Unix, ist das wegen der Einbindung von ncurses?
Der Rest waere dann doch aber Ansi C oder verstehe ich das falsch?
Gibt es eigentlich ncurses nur fuer Linux oder auch fuer Windows?
Gruss
Guenther
-
ich habe als Anfaenger da mal eine durchaus ernstgemeinte Frage: Warum ist das
kein Ansi-C und kommt also ins Linux/Unix, ist das wegen der Einbindung von ncurses?Deine Frage bezog sich auf die ncurses-Bibliothek,
welche man zum Programmieren von halbgrafischen
(so heißen die glaub ich) Programmen unter Unix verwendet.
Darum gehört dieser Thread ins Unix/Linux Forum.Hätte sich die Frage auf den Ansi-C-Teil des Programms
bezogen, hätte es ins Ansi-C Forum gehört.Der Rest waere dann doch aber Ansi C oder verstehe ich das falsch?
Das der Rest Ansi-C ist spielt keine Rolle, da sich die Frage
eben auf eine plattformspezifische Bibliothek bezieht.Gibt es eigentlich ncurses nur fuer Linux oder auch fuer Windows?
Soweit ich es weiß ist ncurses nur für den Einsatz unter
Unix Systemen gedacht. Eine Alternative unter Windows
wäre die "Improved Console"
-
Storm.Xapek.de schrieb:
Deine Frage bezog sich auf die ncurses-Bibliothek,
welche man zum Programmieren von halbgrafischen
(so heißen die glaub ich) Programmen unter Unix verwendet.
Darum gehört dieser Thread ins Unix/Linux Forum.Hätte sich die Frage auf den Ansi-C-Teil des Programms
bezogen, hätte es ins Ansi-C Forum gehört.Nein, bitte nicht falsch verstehen. Die Ursprungsfrage war nicht von mir und mein Teil der Frage war durchaus ernstgemeint und sollte keinesfalls als Kritik an der Verschiebung des Threads verstanden werden.
-
gboelter schrieb:
Nein, bitte nicht falsch verstehen. Die Ursprungsfrage war nicht von mir...
Ja, das hatte ich leider zu spät bemerkt
...und mein Teil der Frage war durchaus ernstgemeint...
Ich hab sie ja auch ernst genommen und beantwortet.
...und sollte keinesfalls als Kritik an der Verschiebung des Threads verstanden werden
So hab ich es auch nicht verstanden.
Ich glaub ich sollte in meinen Postings mehr Smilies verwenden,
mein Schreibstil scheint wohl auf dich "genervt oder verstimmt" zu wirken.
-
Storm.Xapek.de schrieb:
Soweit ich es weiß ist ncurses nur für den Einsatz unter
Unix Systemen gedacht. Eine Alternative unter Windows
wäre die "Improved Console"Falsch. Ncurses gibt es sehr wohl auch für Windows und bietet natürlich weit mehr Features als Improved Console.
-
Apewoman schrieb:
Storm.Xapek.de schrieb:
Soweit ich es weiß ist ncurses nur für den Einsatz unter
Unix Systemen gedacht. Eine Alternative unter Windows
wäre die "Improved Console"Falsch. Ncurses gibt es sehr wohl auch für Windows und bietet natürlich weit mehr Features als Improved Console.
Ich sagte ja: Soweit ich weiß.
Aber wie wäre es wenn du vll. auch einen passenden Link
dazu posten würdest? So bringt deine Aussage leider
keinerlei mehrwert.