Пример 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.7. Программа рисует человечка, делающего утреннюю зарядку.
Program Animation;    Uses Crt, Graph;  {подключение к программе библиотек Crt и Graph}    Const {вертикальные и горизонтальные координаты положения рук}    Vert : Array[1..3] of Integer…
10.06.2016. Пример 8.8. Эта программа демонстрирует возможности изображения объёмных предметов и столбиковых диаграмм.
Program Design;    Uses    Graph, Crt; {подключение к программе библиотек Crt и Graph}    Const    Height : Array[1..8] of Integer=(40,150,90,240,190,120,50,90);  …
10.06.2016. Пример 8.9. Эта программа демонстрирует работу с пикселами, случайными эллипсами и секторами.
Program RandomFigures;    Uses Graph, Crt;    Var    Key   : Char;    GrDriver, GrMode : Integer;    Radius, MaxX, MaxY, Ugol : Word; {параметры процедур}  BEGIN   …
10.06.2016. Пример 8.10. Программа изображает планету, вращающуюся вокруг Солнца на фоне мерцающих звезд и расходящейся галактики.
Перемещение и изменение размеров изображений на экране можно организовать по разному. Так, в примере 8.6 эффект движения изображения достигается следующим образом: выводится изображение, затем оно стирается…
10.06.2016. Пример 8.11. Программа рисует прямоугольную систему координат, отображает в ней заданное множество точек и строит все возможные пары треугольников с вершинами в этом множестве такие, чтобы один треугольник лежал строго внутри другого.
Для работы программы необходимо предварительно создать в текущем каталоге текстовый файл dan.dat, содержащий координаты точек множества. Файл должен иметь структуру: x1  y1  x2  y2 ...  xn  yn , где…