Пятница, 10.10.2025, 12:25 Приветствую Вас Гость

Решение задач любой сложности

Главная | Регистрация | Вход | RSS

Все статьи на сайте

Главная » Статьи » Решение заданий Delphi

Задача: Мигающий светофор
Задачи на светофор наверняка больше всего не нравятся автолюбителям. Еще бы - как часто, опаздывая, приходится ждать, когда загорится этот предательский зеленый или же наоборот погаснет красный - это уж кому как нравится. 
В этом плане программисты и их виртуальные светофоры живут гораздо более мирно. Захотел и написал, что сейчас загорится красный, захотел - зеленый. Приятно, когда от твоей воли зависит решительно все.
Ну да ладно, вступление более чем длинное, пора и честь знать. Сегодня на повестке дня анимированная задача на светофор. Нам нужно написать программу на Delphi, на лицевой панели которой размещены 3 объекта TShape: shRed, shYellow и shGreen -, символизирующие лампочки светофора. И нам требуется организовать следующую нехитрую анимацию по нажатию на кнопку btnStart: загорается красный объект - тухнет - загорается желтый - тухнет - загорается зеленый - тухнет - загорается красный и т.д.
Не трудно предположить, что алгоритм решения задания будет состоять из вереницы конструкций if then. И конечно, критерием того или иного действия должен стать цвет наших объектов TShape. Критерий обозначим переменной color типа integer и условимся, что при color:=0 - все объекты имеют свойство .brush.color:=clGray, при color:=1 - у нас загорается красный, color:=2 - желтый, color:=3 - зеленый. При этом учтем, что между сменой цветов должен быть момент, когда все объекты погашены. Ну и конечно, для реализации данной задачи поместим на форму еще и невидимый, но уже знакомый нам компонент, TTimer.
Как видите, в достаточно простой задаче при детальном рассмотрении появились дополнительные условия.
Все описанное выше я отразила в исходниках Delphi:

procedure TForm1.btnStartClick(Sender: TObject);
 begin
    color:=0;
    Timer1.Enabled:=true;

 end;

procedure TForm1.Timer1Timer(Sender: TObject);
 begin
    if color=0 then
      begin
        shRed.Brush.Color:=clRed;
        color:=1
      end
    else if color=1 then
               if shRed.Brush.Color=clRed then shRed.Brush.Color:=clGray
               else begin
                        shYellow.Brush.Color:=clYellow;
                        color:=2 
                      end
           else if color=2 then
                      if shYellow.Brush.Color=clYellow then shYellow.Brush.Color:=clGray
                      else begin
                                shGreen.Brush.Color:=clGreen;
                                color:=3
                             end
                 else begin
                          shGreen.Brush.Color:=clGray;
                          color:=0
                        end;
 end;


Как вы видите, я меняю значение переменной только тогда, когда загорается следующий TShape. Попробуйте менять ее значение раньше и у вас получится ерунда:) 
Если у вас возникли вопросы, свяжитесь со мной - напишу решение на заказ.
Категория: Решение заданий Delphi | Добавил: Мятка (21.10.2010) | Автор: Alexandra W
Просмотров: 8619 | Комментарии: 5 | Теги: программы на заказ, примеры Delphi, написать программу, алгоритм, решение заданий, Delphi исходники, решение на заказ, программирование на delphi | Рейтинг: 2.0/1
Всего комментариев: 2
2 Lavrentii6925  
0
у нас на этом сайте подобран огромный набор умных статей про http://medbaz.com/pages-more-711.html - массаж спины.

1 Sergii9564  
0
тут на этом блоге подобран большой ассортимент умных статей про http://ublaze.ru/forum/ftopic1072.html - личный кабинет дилера триколор

Имя *:
Email *:
Код *: