konsolenapplikation C zeilenwechsel

#503419
Lesenswert?

Hallo zusammen

Ich habe ein kleines Spiel in c programmiert (konsolenapplikation).
Das Spielfeld wird jeweils in Form einer Tabelle ausgegeben.
Nach jeder Runde wird die Tabbelle aktualisiert und erneut ausgegeben.

damit jetzt aber nicht immer eine neue Tabelle unter der vorherigen 
ausgegeben wird, möchte ich die Alte überschreiben.

mit \b kann man die zeichen löschen (backspace), aber nur auf einer 
zeile. wie komme ich auf die obere zeile zurück?

im Hyperterminal funktioniert das mit  der ESC- Sequenz Putchar "ESC[A"
oder
  putchar (0x1b);
  putchar ('[');
  putchar ('A');

in der konsole werden nur die zeichen selbst '<-[A' ausgegeben.

hat jemand eine gute Idee?

Gruss Raphael
Gast #503432
Lesenswert?

Nun. Die Steuerbefehle hängen davon ab, welches Terminal das ist (bzw. 
welches emuliert wird). VT100, VT102, Linux Console, ANSI blabla etc.

Eine Zusammenstellung für Linux Console ist z.B: 
(http://www.rt.com/man/console_codes.4.html).

Generell, wenn das portabel sein soll, ist es aber besser man 
programmiert die Codes nicht fix ein, sondern verwendet eine Lib die das 
macht (und diverse, passende Codesätze kennt=, z.B: ncurses oder slang.

   Wiesi
Persönliche Seite #503538
Lesenswert?

Sofern Du die Windows-Konsole meinst, kannst Du auf dieser keine 
ANSI-Escape-Sequenzen verwenden. Die Windows-Konsole emuliert überhaupt 
kein Terminal, genausowenig, wie das DOS ohne ANSI.SYS tat.
Erst letzteres (ANSI.SYS) ist die Terminalemulation, kann aber nicht 
unter Windows verwendet werden (DOS-Devicetreiber ...).

Du wirst nicht umhinkommen, Dich mit den Win32-API-Funktionen zu 
beschäftigen, die unter "Console I/O" zusammengefasst werden.

http://msdn2.microsoft.com/en-us/library/ms682010.aspx

ist der Einstieg in deren Dokumentation. Für Dich interessant ist der 
Bereich "low-level console I/O".
Besonders einfach oder übersichtlich sind die Funktionen dort jedoch 
nicht.

http://msdn2.microsoft.com/en-us/library/ms682022.aspx

zeigt, wie der Inhalt der Konsole gelöscht werden kann.
Ein großer Unterschied zu "putc('\x0c');"!

Ein einfacherer Weg besteht möglicherweise darin, nach einem nativen 
Win32-Port von (n)curses zu suchen, der sollte den Job übernehmen.

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren