Турбо Паскаль позволяет пользователю в любом месте экрана определить окно. Когда в окно производится запись, оно ведет себя точно так, как если бы вы использовали полный экран, оставшаяся часть экрана при этом неприкосновенна. В графическом режиме окна формируются с помощью процедуры SetViewPort.
Описание: SetViewPort(x1, y1, x2, y2, Clip).
Примечания: Точка (x1, y1) задает верхний левый угол области просмотра, а точка с координатами (x2, y2) определяет правый нижний угол области просмотра. Булевская переменная Clip определяет, будет ли изображение отсекаться текущими границами области просмотра. Определены следующие константы: ClipOn:=True; ClipOff:=False.
Процедура SetViewPort(0, 0, GetMaxX, GetMaxY, ClipOn) всегда задает в качестве области просмотра все поле графического экрана.
Все графические команды зависят от текущей области просмотра.
Процедуры InitGraph, ClearDevice и SetGraphMode сбрасывают определение текущей области просмотра и устанавливают в качестве области просмотра весь экран. Текущее определение области просмотра можно получить с помощью процедуры GetViewSettings.
Пример программы:
Program Examp_19;
Программирование движущихся объектов
Очень часто хочется "оживить" картинку, "заставить" что-нибудь двигаться. Как сделать это, не используя анимационные программы средствами модуля Graph? Движение простых объектов может быть имитировано с помощью некоторых не очень сложных приемов. Один из самых простых приемов имитации движения – использование операторов цикла. В теле цикла нужно нарисовать объект заданным цветом, сделать паузу, затем нарисовать этот объект цветом фона. при этом положение двух одинаковых объектов должно изменяться в соответствии с параметрами цикла.
Рассмотрим самый простой случай: пусть движется шарик. На основе приведенной программы выполните движение шарика вверх или вниз, с ускорением, по диагонали.
Program Examp_20;
А теперь заставим двигаться более сложный объект – кораблик.
Program Examp_21;
Следующий наша работа: осуществить поворот фигуры, изображающей стрелу, вокруг заданной точки на заданный угол. Поворот выполнять, пока не будет нажата клавиша Esc. Изобразить оси координат, точку поворота и указать значения координат точки поворота на соответствующей оси.
Program Examp_22;
Написать программу, итогом работы которой будет движение шарика. Его движение должно определяться тем, какая из клавиш управления курсором нажата (вверх, вниз, влево, вправо).
В Турбо Паскале имеются операторы, которые способны определить, нажата ли какая-нибудь клавиша на клавиатуре, и если нажата, то в специально зарезервированную переменную передается значение, соответствующее именно этой клавише. Другими словами, все клавиши на клавиатуре имеют так называемые "скан-коды". И в случае нажатия на клавишу именно ее скан-код и передается в нашу программу через заранее выбранную переменную. Договоримся, что программа будет выполняться до тех пор, пока не будет нажата клавиша Esc.
Program Examp_23;
Составить программу, рисующую на экране картинку – "Снежную бабу" При нажатии на клавиши <стрелка влево> и <стрелка вправо> картинка должна двигаться по экрану в соответствующем направлении, но не должна выходить за границы экрана.