mikrocontroller.net

Forum: PC-Programmierung konsolenapplikation C zeilenwechsel


Autor: Kartoffel Salat (kartoffelsalat)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Wiesi (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Kartoffel Salat (kartoffelsalat)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
wie finde ich heraus welches terminal simuliert wird?
es ist ja eigentlich kein richtiges terminal, sondern lediglich eine 
console wie der cmd promt...

ist dies überhaupt möglich in dieser konsole?

Autor: Schoaschi (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Wie wäre es mit einem "clear Screen" und das ganze einfach neu machen? 
Also nicht überschreiben.

Autor: Kartoffel Salat (kartoffelsalat)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
wie geht den das?

Autor: Rufus Τ. Firefly (rufus) (Moderator) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Kartoffel Salat (kartoffelsalat)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Danke für eure Hilfe.

ich habe es so gelöst:

system("cls");

löscht die gesamte konsole... funkt perfekt...

manchmal ist es einfacher als man denkt.

Ich arbeite mit windows Xp Prof.
und dem dev-C compiler
(windowskonsole..)
gruss raphael

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.