Информатика 10-11. Книга 2. Практика алгоритмизации и программирования. Шауцукова Л.З. - 103 стр.

UptoLike

Составители: 

Внимание: будет работать только если 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;
  Внимание: будет работать только если 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;