71 lines
1.7 KiB
ObjectPascal
71 lines
1.7 KiB
ObjectPascal
// Рисование курсором в консольном окне
|
|
// Иллюстрация GotoXY, TextBackGround
|
|
// Для запуска программы используйте Shift+F9 !!!
|
|
uses Crt;
|
|
|
|
var
|
|
draw: boolean;
|
|
color: integer;
|
|
|
|
function IsCoordCorrect(x,y: integer): boolean;
|
|
begin
|
|
Result := (x in [1..WindowWidth]) and (y in [1..WindowHeight]);
|
|
end;
|
|
|
|
procedure MyGotoXY(x,y: integer);
|
|
begin
|
|
if not IsCoordCorrect(x,y) then
|
|
exit;
|
|
GotoXY(x,y);
|
|
end;
|
|
|
|
procedure DrawSymbol(x,y: integer; c: char);
|
|
begin
|
|
if not IsCoordCorrect(x,y) then
|
|
exit;
|
|
GotoXY(x,y);
|
|
write(c);
|
|
GotoXY(x,y);
|
|
end;
|
|
|
|
begin
|
|
draw := True;
|
|
color := Green;
|
|
ClrScr;
|
|
SetWindowTitle('Рисование курсором (Esc-выход, Num 5 - изменение цвета)');
|
|
TextBackGround(color);
|
|
GotoXY(WindowWidth div 2,WindowHeight div 2);
|
|
var c: char;
|
|
repeat
|
|
c := ReadKey;
|
|
if c=#32 then
|
|
draw := not draw;
|
|
if c=#0 then
|
|
begin
|
|
c := ReadKey;
|
|
case c of
|
|
// Изменение цвета по клавише Num 5
|
|
{5} #12: begin
|
|
color := color + 1;
|
|
if color=16 then
|
|
color := 0;
|
|
TextBackGround(color);
|
|
end;
|
|
{RU}#33: MyGotoXY(WhereX+1,WhereY-1);
|
|
{RD}#34: MyGotoXY(WhereX+1,WhereY+1);
|
|
{LD}#35: MyGotoXY(WhereX-1,WhereY+1);
|
|
{LU}#36: MyGotoXY(WhereX-1,WhereY-1);
|
|
{L} #37: MyGotoXY(WhereX-1,WhereY);
|
|
{U} #38: MyGotoXY(WhereX,WhereY-1);
|
|
{R} #39: MyGotoXY(WhereX+1,WhereY);
|
|
{D} #40: MyGotoXY(WhereX,WhereY+1);
|
|
#67: ClrScr;
|
|
end;
|
|
if draw then
|
|
DrawSymbol(WhereX, WhereY,' ');
|
|
end;
|
|
until c=#27;
|
|
TextBackGround(Black);
|
|
GotoXY(1,25);
|
|
end.
|