Форум программистов, компьютерный форум, киберфорум
Turbo Pascal
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.78/9: Рейтинг темы: голосов - 9, средняя оценка - 4.78
0 / 0 / 0
Регистрация: 23.05.2014
Сообщений: 1
1

Графика. Анимированные весы

11.06.2014, 13:12. Показов 1838. Ответов 1
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
При выполнении программы возникают дефекты по ходу движения фигур. Конкретно, чашечки весов стираются некорректно, не до конца. Намекните, что у меня не так.

Pascal
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.
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
11.06.2014, 13:12
Ответы с готовыми решениями:

Изобразить анимированные весы
Нужно сделать программу анимированные весы. Помогите плиз))) заранее благодарен)

Анимированные Кнопки
Ребят подскажте можно ли в Бейсике сделать нормальные кнопки при наведении курсора что они...

Анимированные смайлики
Какими компонентами можно добавить анимированные смайлики в чат? и если можно пример кода поиск...

Анимированные button
Други, помогите пожалуйста.... В флеше CS3 пока новичок, поэтому желательно с подробностями. А...

1
Почетный модератор
64304 / 47599 / 32743
Регистрация: 18.05.2008
Сообщений: 115,181
11.06.2014, 16:12 2
Замени setfillstyle(0,0) на setfillstyle(1,15)

Добавлено через 16 секунд
везде
1
11.06.2014, 16:12
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
11.06.2014, 16:12
Помогаю со студенческими работами здесь

Анимированные менюшки
Анимированные менюшки Здравствуйте. к сожалению, здесь нет раздела &quot;для начинающих&quot;, поэтому я со...

Анимированные кнопки
Необходимо &quot;оживить&quot; кнопочки в среде VB.NET, добавив небольшую анимацию плавной смены изображений...

Анимированные графики в GUI
Добрый день! Хотел сделать анимированные графики в приложение на GUI. Точка, аки маркер движется...

Анимированные кнопки(увеличение)
Как можно сделать такие кнопки через тег &lt;a&gt; и что бы при наведении они увеличивались не...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
2
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru