Пример 8.6.
Программа демонстрирует получение эффекта движения изображения
прицела под управлением клавишей-стрелок клавиатуры с выводом координат
центра прицела.
Демонстрация
Внимание: будет работать только если Turbo Pascal установлен в каталог C:\TP и каталог C:\TP\BGI содержит необходимый файл egavga.bgi.
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.