Лабораторная работа 2.
Цель работы: изучение графических возможностей средыTurboPascal7.0, а так же средств оформления и вывода текста, реализованных посредством стандартного модуляGraph.
Практическое задание 1:
Вывести на экран горизонтальный текст со следующими параметрами:
- растровый шрифт – Default, цвет – зеленый, размер по умолчанию для растрового шрифта – 1 (8*8 точек), вывести текст в произвольном месте экрана;
- шрифт – Default, цвет – синий, размер – 3, выравнивание по левому краю выводимого текста и по верхней линии символов строки;
- шрифт – Triplex, цвет – красный, размер – 1, выравнивание по центру выводимого текста и по нижней линии строки;
- шрифт – Triplex, цвет – желтый, размер – 4, выравнивание по левому краю выводимого текста и по центру символов строки;
- шрифт – Small, цвет – белый, размер – 1, выравнивание по правому краю выводимого текста и по верхней линии строки;
- шрифт – Small, цвет – сиреневый, размер – 4, выравнивание по центру выводимого текста и по нижней линии символов строки.
Очистить экран.
Вывести вертикальный текст с теми же параметрами, что и у горизонтального текста.
Текст программы:
program Lab_1_3;
uses Graph;
var
GraphDriver,
graphmode,
errorcode:integer;
text:string;
begin
graphdriver:=detect;
initgraph(graphdriver,graphmode,'c:\bp\bgi');
text:='ET-Forever';
setcolor(2);
settextstyle(0,0,1);
outtextXY(100,50,text);
setcolor(1);
settextstyle(0,0,3); settextjustify(0,2);
outtextXY(100,130,text);
setcolor(4);
settextstyle(1,0,1); settextjustify(1,0);
outtextXY(100,200,text);
setcolor(14);
settextstyle(1,0,4); settextjustify(0,1);
outtextXY(100,250,text);
setcolor(15);
settextstyle(2,0,1); settextjustify(2,2);
outtextXY(100,290,text);
setcolor(13);
settextstyle(2,0,4); settextjustify(1,0);
outtextXY(350,250,text);
Readln; cleardevice;
setcolor(2);
settextstyle(0,1,1);
outtextXY(100,50,text);
setcolor(1);
settextstyle(0,1,3); settextjustify(0,2);
outtextXY(100,130,text);
setcolor(4);
settextstyle(1,1,1); settextjustify(1,0);
outtextXY(100,200,text);
setcolor(14);
settextstyle(1,1,4); settextjustify(0,1);
outtextXY(100,250,text);
setcolor(15);
settextstyle(2,1,1); settextjustify(2,2);
outtextXY(100,290,text);
setcolor(13);
settextstyle(2,1,4); settextjustify(1,0);
outtextXY(350,250,text);
readln;
closegraph;
end.
Результат работы программы представлен на рис.3:
рис.3
Практическое задание 2:
Изобразить на экране шар, который движется влево до соприкосновения со стенкой и обратно.
Текст программы:
Program Lab2z2_el;
Uses Crt,Graph;
Var GraphDriver,GraphMode,Size,
ErrorCode,Width : Integer;
x,y,dx,dy,Heigth : Integer;
i,r,x1,x2,y1,y2 : Integer;
Saucer:Pointer;
Label Q;
Begin
GraphDriver := Detect;
InitGraph(GraphDriver, GraphMode, 'D:\TP7');
ErrorCode := GraphResult;
if ErrorCode <> grOk then
begin
Writeln('Ошибка:',GraphErrorMsg(ErrorCode);
Writeln ('Работа программы прервана');
ReadKey; Halt(1);
end;
SetBkColor(7);
Randomize;
r:=24;
x:=3*r+20; y:=4*r;
SetColor(8);
SetLineStyle(0,0,1);
SetFillStyle(1,8);
FillEllipse(x,y,20,7);
x:=3*r; y:=3*r;
SetColor(2);
SetFillStyle(1,2);
Circle(x,y,r);
FloodFill(x,y,2);
x1:=x-r-1; x2:=5*r; Width:=x2-x1+2;
y1:=y-r-1; y2:=4*r+7; Heigth:=y2-y1+2;
Size:=ImageSize(x1,y1,x2,y2);
GetMem(Saucer,Size);
GetImage(x1,y1,x2,y2,Saucer^);
PutImage(x1,y1,Saucer^,XorPut);
x:=GetMaxX div 2; y:=GetMaxY div 2;
dx:=-3; dy:=0;
Repeat
for i:=1 to 200 do
begin
PutImage(x,y,Saucer^,1);
Delay(1000);
PutImage(x,y,Saucer^,1);
x:=x+dx; y:=y+dy;
Q: if ( x+dx<1 ) or ( x+dx+Width >= GetMaxX ) then
begin
if dx>=0 then dx:=-random(3)-1
else dx:=random(3)+1;
goto Q;
end;
if ( y+dy<1 ) or ( y+dy+Heigth>GetMaxY ) or ( dy=0 ) then
begin
if dy>=0 then dy:=-random(3)-1 else dy:=random(3)+1;
goto Q;
end;
if keypressed then exit;
end;
Until keypressed;
Readkey;
CloseGraph;
End.
Результат работы программы представлен на рис.14:
рис.14