Größe der Konsole ermitteln
-
Ich hab ein Programm geschrieben, das einen Ball in einem Feld bewegt. Wies im moment ist, muss der Benutzer immer eingeben, wie groß er das Feld haben will. Ich möchte es aber so machen, dass das Programm die Größe der Konsole ermittelt und das Feld dann anpasst.
Dann möchte ich noch, dass der Benutzer, wenn er die Größe angeben will, das als Parameter übergibt (zb ./ball -x 50 -y 20)Hat da jemand ne Ahnung?
Danke schon mal im Voraus
-
Wenn du ncurses verwendest, gibts da ein Makro getmaxyx().
Ansonsten geht das mit dem ioctl TIOCGWINSZ. Findest du bestimmt ein Beispiel für.Programm argumente stehen in argv. Siehe beliebiges C/C++ Buch.
-
Hallo!
Nimm einfach die beiden Konstanten LINES und COLS nachdem du ncurses mit 'initscr();' initialisiert hast. Oder wie schon erwähnt nimm das Makro getmaxyx().
Gruß
Michael
-
Naja, ich möchte jetzt nicht extra die ganzen ncurses einbinden, damit das geht... gibts nicht ne möglichkeit ohne ncurses?
-
Ich hab mich jetzt im internet wegen den Parametern erkundigt...
Der Compiler gibt folgenden Fehler aus:
ball.cpp: In function `int main(int, char*)': ball.cpp:84: error: ISO C++ forbids comparison between pointer and integer ball.cpp:87: error: ISO C++ forbids comparison between pointer and integer ball.cpp:90: error: ISO C++ forbids comparison between pointer and integer
Hier der Code:
for (int i = 0; i < argc; i++) { if (argv[i] == "-g") geschw = argv[i+1]; else if (argv[i] == "-x") breite = argv[i+1]; else if (argv[i] == "-y") hoehe = argv[i+1]; }
Weiß da jemand was?
-
Na ja, man vergleicht Strings auch nicht mit dem Gleichheitsoperator.
Dafür gibt es man: strcmp.
-
Ich hab jetzt folgenden Code, aber es geht einfach net:
for (int i = 0; i < argc; i++) { const char *g = "-g"; const char *x = "-x"; const char *y = "-y"; char *bargv = argv; if (strcmp(bargv, g) == 0) geschw = argv[i+1]; else if (strcmp(bargv, x) == 0) breite = argv[i+1]; else if (strcmp(bargv, y) == 0) hoehe = argv[i+1]; }
was ist da noch falsch?
-
fvcbcvbc
-
hi,
ich hoffe folgender Code kann helfen:int geschwindigkeit, breite, hoehe; int main(int agrc, char* argv[]) { geschwindigkeit = breite = hoehe = 0; ............. for(int i=1; i<argc; i++) // da argv[0] der Name des Programms ist { if (strcmp(argv[i],"-g") == NULL) geschwindigkeit = atoi(argv[++i]); else if (strcmp(argv[i],"-b") == NULL) breite = atoi(argv[++i]); else if (strcmp(argv[i],"-h") == NULL) hoehe = atoi(argv[++i]); } ............ }
-
buffoon schrieb:
Ich hab jetzt folgenden Code, aber es geht einfach net:
for (int i = 0; i < argc; i++) { const char *g = "-g"; const char *x = "-x"; const char *y = "-y"; char *bargv = argv; if (strcmp(bargv, g) == 0) geschw = argv[i+1]; else if (strcmp(bargv, x) == 0) breite = argv[i+1]; else if (strcmp(bargv, y) == 0) hoehe = argv[i+1]; }
was ist da noch falsch?
char *bargv = argv; ist falsch, weil argv ein char[][] ist, bzw, char**. Das heißt , du musst char *bargv = argv[x]; machen, wo x eine Zahl ziwschen 0 und argc-1 ist.