C-Konsolenprogramm - Cursor setzen

Hi

Ich hab mit C ein kleines Konsolenspiel für Windows geschrieben (Es wird ein Level generiert und ein 'X' als Männchen kann darin rumlaufen). Jetzt hab ich das Problem, dass es bei jedem Neuzeichnen des Bildschirms flackert, da ja zuerst der Bildschirm per system("cls") gelöscht wird. Soweit ich weiß ist gepuffertes Zeichnen in einer Konsole nicht möglich, was ja ansonsten die normale vorgehensweise gewesen wäre.
Ich habe mir jetzt überlegt, wie man eventuell den Ansatz von gepuffertem Zeichnen auch in der Konsole realisieren könnte und kam auf die Idee, den Bildschirm nicht zu löschen sondern einfach zu überzeichnen. Ich möchte also system("cls") weglassen und stattdessen den Cursor für das neuzeichnen des Levels einfach wieder in die obere linke Ecke versetzen und dann die alte Levelansicht überzeichnen. Gibt es eine Möglichkeit die Cursorposition in der Windowskonsole zu manipulieren? Oder gibt es vielleicht sogar eine noch bessere Möglichkeit, das Flackern loszuwerden, auf die ich gar nicht gekommen bin?
Danke schonmal für eure Hilfe!

cu, Heinzi
 
Es gibt eine lib conio, die gotoxy bereitstellt. Die Funktion macht genau das, was du willst, naemlich den cursor auf eine bestimmte Position zu setzen.

alternativ, von hier: http://www.iceteks.com/forums/index.php?act=ST&f=12&t=2232&
kopiert

Code:
#include <windows.h>
#include <iostream>
using namespace std;

void gotoxy( short x, short y ) {

HANDLE hStdout = GetStdHandle(STD_OUTPUT_HANDLE);
COORD position = { x, y };

SetConsoleCursorPosition( hStdout, position );
}

int main() {

cout << "top left" << endl;
cout << "next line";

gotoxy(0, 0);

cout << "top left again";

return 0;
}
 
Zurück
Oben