[ домой ] [ следующий ] [ начало главы ] [ предыдущий ] [ содержание ]

Пример 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.

[ домой ] [ следующий ] [ начало главы ] [ предыдущий ] [ содержание ]