{ Внимание! Для работы этой программы необходимо, чтобы:
1) Turbo Pascal был установлен в каталог C:\TP;
2) каталог C:\TP\BGI содержал файл egavga.bgi ;
3) в меню Options/Directories был указан путь
к файлу graph.tpu, например, С:\TP\UNITS.
Если Turbo Pascal установлен в другом каталоге, нужно изменить
путь к нему в процедуре InitGraph.
}
Program Sight;
Uses Crt, Graph; { подключение к программе библиотек Crt и Graph }
Const Step = 5; { шаг изменения координат центра прицела }
Instr = 'УПРАВЛЕНИЕ ДВИЖЕНИЕМ ПРИЦЕЛА - СТРЕЛКИ, ВЫХОД - ESC';
Var
GrDriver, GrMode : Integer; {тип и режим работы графического драйвера}
X, Y : Integer; { координаты центра прицела }
XStr, YStr : String;
Ch : Char;
{-----------------------------------------------------------}
Procedure MakeSight(X, Y : Integer); { процедура рисования прицела }
Begin SetColor(White);
Circle(X, Y, 80);
SetColor(LightGreen);
Line(X-80, Y, X+80, Y); Line(X, Y-63, X, Y+63); { вывод осей прицела }
SetColor(LightRed); Circle(X, Y, 2); { окружность в центре прицела }
Str(X, XStr); Str(Y, YStr); { перевод координат в строковый тип }
SetColor(Yellow);
OutTextXY(X+5, Y-35, 'x=' + XStr); { вывод координат центра прицела }
OutTextXY(X+5, Y-20, 'y=' + YStr)
End;
{-----------------------------------------------------------}
BEGIN
GrDriver := Detect;
InitGraph(GrDriver, GrMode, 'C:\TP\BGI');
SetColor(LightGray);
X := GetMaxX div 2; Y := GetMaxY div 2; { координаты центра экрана }
Rectangle(50, 425, 600, 460); { рисование рамки }
OutTextXY(120, 440, Instr);
MakeSight(X, Y); { рисование прицела в центре экрана }
While TRUE do { цикл работы программы до прерывания по клавише ESC }
begin
Ch := ReadKey;
Case Ch of
#27: begin CloseGraph; Halt(1) end; { выход по клавише ESC }
#75: X := X-Step; {изменение координат x, y нажатием стрелок}
#77: X := X+Step; {"влево", "вправо", "вверх", "вниз" }
#72: Y := Y-Step;
#80: Y := Y+Step
end;
ClearViewPort; { очистка графического экрана }
SetColor(LightGray); { восстановление рамки с надписью }
Rectangle(50, 425, 600, 460);
OutTextXY(120, 440, Instr);
MakeSight(X, Y) { рисование прицела в текущих координатах }
end;
CloseGraph;
END.