Главная Случайная страница Контакты | Мы поможем в написании вашей работы! | ||
|
Процедура Window определяет текстовое окно – область экрана, которая в дальнейшем будет рассматриваться процедурами вывода как весь экран. Сразу после вызова процедуры курсор перемещается в левый верхний угол окна, а само окно очищается (заполняется цветом фона). По мере вывода курсор смещается вправо и при достижении правой границы окна переходит на новую строку, а если он к этому моменту находился на последней строке, содержимое окна сдвигается вверх на одну строку, т.е. осуществляется «прокрутка» окна. Заголовок процедуры:
Procedure Window(XI,Y1,X2,Y2: Byte);
Здесь X...Y – координаты левого верхнего (X1,Y1) и правого нижнего (X2,Y2) углов окна. Они задаются в координатах экрана, причем левый верхний угол экрана имеет координаты (1,1) – горизонтальная координата увеличивается слева направо, а вертикальная — сверху вниз.
В следующем примере иллюстрируется вывод сообщений о цвете текста в двух разных окнах в обратных цветах цветовой палитры CRT.
Program DemoWindows;
Uses CRT;
Var i,j:integer;
Begin
TextBackGround(Blue);
ClrScr;
For i:=0 to 7 do
begin
Window(2,1,25,24);
TextBackGround(i);
ClrScr;
For j:=0 to 15 do
begin
TextColor(j);
writeln('Цвет №', j);
end;
Window(27,1,50,24);
TextBackGround(15-i);
ClrScr;
For j:=0 to 15 do
begin
TextColor(15-j);
writeln('Цвет №', 15-j);
end;
Readln;
end;
End.
Обращение к процедуре Window игнорируется, если какая – либо из координат выходит за границы экрана или если нарушается одно из условий: Х2>Х1 и Y2>Y1. Каждое новое обращение к Window отменяет предыдущее определение окна. Границы текущего окна запоминаются в двух глобальных переменных модуля CRT: переменная WindMin типа Word хранит XI и Y1 (X1 — в младшем байте), а переменная того же типа WindMax — Х2 и Y2 (Х2 — в старшем байте). При желании можно изменять их нужным образом без обращения к Window. Например, вместо оператора Window(40,2,70,17); можно использовать два оператора:
WindMin:= 39+(1 shl 8);
WindMax:= 69+(16 shl 8);
(в отличие от обращения к Window координаты, хранящиеся в переменных WindMin и WindMax, соответствуют началу отсчета 0,0).
Границы процедуры Window можно определять через относительные координаты. Например, следующая программа создает два белых окна в большом окне синего цвета:
Program DemoWindows;
Uses CRT;
Var i:integer;
Begin
TextbackGround(0);
ClrScr;
Window(25,2,55,24);
TextBackGround(Blue);
ClrScr;
i:=2;
Window(40,i,42,i+1);
TextBackGround(white);
ClrScr;
i:=6;
window(40,i,42,i+1);
ClrScr;
readln;
End.
Из этого примера видно, что использование комбинаций процедур Window позволяют создавать иллюзию простейших графических образов. Можно создавать иллюзию движения простейших фигур ипользованием метода последовательного наложения окон. Например, иллюзию движения кубика белого цвета в окне синего цвета нажатием на клавишу Enter, можно создаеть следующим образом:
Program DemoDvigenie;
Uses CRT;
Var i:integer;
Begin
TextbackGround(0);
ClrScr;
for i:=2 to 23 do
begin
Window(25,2,55,24); {Создаем новое окно, при этом }
TextBackGround(Blue); {все что было в старом стирается}
ClrScr;
Window(40,i,42,i+1); {Рисуем кубик с новыми}
TextBackGround(white); {координатами}
ClrScr;
readln;
end;
End.
Дата публикования: 2015-06-12; Прочитано: 182 | Нарушение авторского права страницы | Мы поможем в написании вашей работы!