Пример 8.6. Программа демонстрирует получение эффекта движения изображения прицела под управлением клавишей-стрелок клавиатуры с выводом координат центра прицела.




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.

Другие записи

10.06.2016. Пример 8.1. Эта программа демонстрирует работу процедур управления текстовым выводом на экран дисплея.
Program ColorTable;   Uses Crt; {подключение к программе библиотеки Crt}   Const P = ' ';   Var i, j : Integer;  BEGIN ClrScr; {очистка экрана} Window(1, 1, 80, 7); {определение окна для заголовочной…
10.06.2016. Пример 8.2. Эта программа демонстрирует возможности изображения линий в графическом режиме.
Program Lines;    Uses Graph, Crt; {подключение к программе библиотек Crt и Graph}    Var    Key   : Char;    LineStyle   : Word; {номер стиля рисования линии}    Style …
10.06.2016. Пример 8.3. Эта программа демонстрирует возможности изображения символов в графическом режиме (требует наличия в текущем каталоге файлов шрифтов *.chr).
Program Symbols;    Uses Graph, Crt; {подключение к программе библиотек Crt и Graph}    Var    Key   : Char;    Font : String; {названия шрифтов }    Size, MyFont …
10.06.2016. Пример 8.4. Эта программа рисует закрашенный прямоугольник, меняя случайным образом цвет, тип штриховки и высоту тона звукового сопровождения.
Program MusicColor;    Uses Crt, Graph; {подключение к программе библиотек Crt и Graph}    Var    GrDriver, GrMode: Integer; {тип и режим работы графического драйвера}  BEGIN    GrDriver := Detect;…
10.06.2016. Пример 8.5. Эта программа рисует на экране звезду и закрашивает её, используя 12 типов штриховки.
Program Star;    Uses Crt, Graph;  {подключение к программе библиотек Crt и Graph}    Const { массив координат вершин многоугольника (звезды) }    TopsStar: Array[1..18] of Integer = (300,…