Ich komme mir vor als sei ich zurückversetzt in die Zeiten von DOS, 8Bit-PC und Turbopascal.
Da gab es die Procedure GotoXY(x,y).
Mit der Konsole geht das auch.
Delphi-Quellcode:
{$APPTYPE CONSOLE}
uses
SysUtils, Windows;
var
TextWindow: TSmallRect;
BufferInfo: TConsoleScreenBufferInfo;
StdOut: THandle;
i,j:Integer;
procedure GotoXY(X, Y: Smallint);
var NewPos: TCoord;
begin
Inc(X, TextWindow.Left - 1);
Inc(Y, TextWindow.Top - 1);
if (X >= TextWindow.Left) and (X <= TextWindow.Right) and
(Y >= TextWindow.Top) and (Y <= TextWindow.Bottom) then
begin
NewPos.X := X;
NewPos.Y := Y;
SetConsoleCursorPosition(StdOut, NewPos);
end;
end;
begin
Rewrite(Output);
StdOut := TTextRec(Output).Handle;
GetConsoleScreenBufferInfo(StdOut,BufferInfo);
TextWindow.Left := 0;
TextWindow.Top := 0;
TextWindow.Right := BufferInfo.dwSize.X - 1;
TextWindow.Bottom := BufferInfo.dwSize.Y - 1;
// hier mal eine Diagonale
for i:=1 to 20 do
begin
j:=i*2+10;
gotoxy(i,j);write('x');
end;
readln;
Acht Linien brauchen wir in der richtigen Reihenfolge.
Wenn ich mich richtig erinnere 8! = 8*7*6*5*4*3*2 = 40320 Möglichkeiten.
Viel Spaß beim probieren.