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
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
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?
Wie wäre es mit einem "clear Screen" und das ganze einfach neu machen? Also nicht überschreiben.
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.
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
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.