1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
| Program DyLibra;
Uses Graph,crt;
Var Driver,Mode:Integer;
x1,y1,x2,y2:integer; fat:word; r,i:real;
Begin
x1:=130; {координаты описывают крайние положения коромысла}
y1:=100;
x2:=510;
y2:=200;
r:=196.468827; {радиус коромысла}
Driver:=Detect;
InitGraph(Driver,Mode,'C:\TP\BGI');
SetBkColor(15); {Белый цвт фона}
SetColor(1); {синий цвет рисунка}
SetFillStyle(1,1); {заливка синим}
Bar(315,40,325,440); {штекер}
Bar(130,420,510,440); {подставка}
Bar(200,400,440,420);
Sector(130,440,0,180,35,20); {закруглния подставки}
Sector(510,440,0,180,35,20);
SetFillStyle(1,14); {заливка синим с желтой каймой}
FillEllipse(320,400,15,15); {нижний круг}
FillEllipse(320,300,15,15); {средни круг}
FillEllipse(320,40,15,15); {верхни круг}
while NOT keypressed do
begin
while y2<=200 do
begin {описывает опускание левой части и подъём правой}
setcolor(1);
setfillstyle(1,1);
Bar(315,125,325,175); {!заплатка! штекера}
x1:=320+round(r*cos(i)); {коор. крайних точек коромысла}
y1:=150+round(r*sin(i));
x2:=320-round(r*cos(i));
y2:=150-round(r*sin(i));
setfillstyle(1,14);
SetLineStyle(0,fat,3); {рисует коромысло}
line(x1,y1,x2,y2);
SetLineStyle(0,fat,1);
FillEllipse(x1,y1,15,15);
Line(x1,y1+15,x1-50,y1+90);
Line(x1,y1+15,x1,y1+90);
Line(x1,y1+15,x1+50,y1+90);
Sector(x1,y1+90,180,360,60,10);
FillEllipse(x2,y2,15,15);
Line(x2,y2+15,x2-50,y2+90);
Line(x2,y2+15,x2,y2+90);
Line(x2,y2+15,x2+50,y2+90);
Sector(x2,y2+90,180,360,60,10);
delay(500); {задержка}
setcolor(15);
SetLineStyle(0,fat,3); {закрашивает коромысло цветом фона}
line(x1,y1,x2,y2); {(стирает его так же, как и нарисовал)}
SetLineStyle(0,fat,1);
SetFillStyle(0,0); {стирает часть штекера}
FillEllipse(x1,y1,15,15); {заплатка выше}
Line(x1,y1+15,x1-50,y1+90);
Line(x1,y1+15,x1,y1+90);
Line(x1,y1+15,x1+50,y1+90);
Sector(x1,y1+90,180,360,60,10);
FillEllipse(x2,y2,15,15);
Line(x2,y2+15,x2-50,y2+90);
Line(x2,y2+15,x2,y2+90);
Line(x2,y2+15,x2+50,y2+90);
Sector(x2,y2+90,180,360,60,10);
i:=i-0.01; {шаг изменения координат}
end;
while y1<=200 do
begin {описывает подъём левой части и опускание правой}
setcolor(1);
setfillstyle(1,1);
Bar(315,125,325,175);
x1:=320+round(r*cos(i));
y1:=150+round(r*sin(i));
x2:=320-round(r*cos(i));
y2:=150-round(r*sin(i));
setfillstyle(1,14);
SetLineStyle(0,fat,3);
line(x1,y1,x2,y2);
SetLineStyle(0,fat,1);
FillEllipse(x1,y1,15,15);
Line(x1,y1+15,x1-50,y1+90);
Line(x1,y1+15,x1,y1+90);
Line(x1,y1+15,x1+50,y1+90);
Sector(x1,y1+90,180,360,60,10);
FillEllipse(x2,y2,15,15);
Line(x2,y2+15,x2-50,y2+90);
Line(x2,y2+15,x2,y2+90);
Line(x2,y2+15,x2+50,y2+90);
Sector(x2,y2+90,180,360,60,10);
delay(500);
setcolor(15);
SetLineStyle(0,fat,3);
line(x1,y1,x2,y2);
SetLineStyle(0,fat,1);
SetFillStyle(0,0);
FillEllipse(x1,y1,15,15);
Line(x1,y1+15,x1-50,y1+90);
Line(x1,y1+15,x1,y1+90);
Line(x1,y1+15,x1+50,y1+90);
Sector(x1,y1+90,180,360,60,10);
FillEllipse(x2,y2,15,15);
Line(x2,y2+15,x2-50,y2+90);
Line(x2,y2+15,x2,y2+90);
Line(x2,y2+15,x2+50,y2+90);
Sector(x2,y2+90,180,360,60,10);
i:=i+0.01;
end;
end;
readln;
closegraph;
end. |