Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

Восстановить пароль

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 07.01.2010, 18:25   #11
serj-07
Пользователь
 
Аватар для serj-07
 
Регистрация: 07.03.2009
Сообщений: 68
По умолчанию

Вот что уменя получилось с таймерами, но осталось все как раньше.
человек прыгает потом только телега едет, одновременно не получилось.
и теперь не могу сделать движение телеги равнозамедленное.

Код:

Код:
procedure Cart(xt,yt:INTEGER);
  begin
   with Form1.Image1.Canvas DO
     begin
         // телега
      brush.Color:= clRed;
      pen.Color:=clblack;
      Rectangle (xt,yt,xt+100,yt+5);
      Ellipse(xt+10,yt+5,xt+30,yt+25);
      Ellipse(xt+70,yt+5,xt+90,yt+25);
     end;
  end;

procedure Person(xp,yp:INTEGER);
   begin
    with Form1.Image1.Canvas DO
       begin
             // человек
        brush.Color:= clRed;
        pen.Color:=clblack;
        Ellipse(xp+5,yp,xp+20,yp+15);
        polygon([point(xp,yp+15), point(xp+12,yp+40),
        point(xp+25,yp+15),point(xp,yp+15)]);
        MoveTo(xp,yp+15);
        LineTo(xp,yp+35);
        MoveTo(xp+25,yp+15);
        LineTo(xp+25,yp+35);
        MoveTo(xp+8,yp+35);
        LineTo(xp+8,yp+55);
        MoveTo(xp+16,yp+35);
        LineTo(xp+16,yp+55);
       end;
   end;

procedure TForm1.FormCreate(Sender: TObject);
  begin
    With Image1.Canvas do
       begin
        DoubleBuffered:=true;
        Image1.Canvas.Brush.Color:=RGB(55,155,255);
        Image1.Canvas.FillRect(rect(0,0,image1.Width,image1.Height));
                   

         sss:=TBitMap.Create;
         sss.Width:=CartWidth;
         sss.Height:=CartHeight;

         aaa:=TBitMap.Create;
         aaa.Width:=PersonWidth;
         aaa.Height:=PersonHeight;
        end;
   end;

procedure TForm1.Timer1Timer(Sender: TObject);
  var
  x,y: Word;
 begin
    With Image1.Canvas do
    begin
     For x:=260 DownTo 210 do
        begin
          aaa.Canvas.CopyRect(Rect(0, 0, aaa.Width, aaa.Height),
          Image1.Canvas,Rect(x, 90, PersonWidth + x, 90 + PersonHeight));
          Person(x, 90);
          Application.ProcessMessages;
          Image1.Canvas.Draw(x, 90, aaa);
        end;
           begin
             for y:=90 TO 115 DO
               begin
                aaa.Canvas.CopyRect(Rect(0,0,aaa.Width,aaa.Height),
                Image1.Canvas,Rect(210,y,PersonWidth+210,y+PersonHeight));
                Person(210,y);
                Application.ProcessMessages;
                Image1.Canvas.Draw(210,y,aaa);
                brush.Color:= RGB(55,155,255);
                pen.Color:=RGB(55,155,255);
                polygon([point(260,105),point(272,130),point(285,105),point(260,105)]);
                Ellipse(265,90,280,105);
                MoveTo(260,105);
                LineTo(260,125);
                MoveTo(285,105);
                LineTo(285,125);
                MoveTo(268,125);
                LineTo(268,145);
                MoveTo(276,125);
                LineTo(276,145);

                if y=115 then
                  brush.Color:= clRed;
                if y=115 then
                 pen.Color:=clblack;
                 Ellipse(215,115,230,130);
                 polygon([point(210,130),point(222,155),point(235,130),point(210,130)]);
                 MoveTo(210,130);
                 LineTo(210,150);
                 MoveTo(235,130);
                 LineTo(235,150);
                 MoveTo(218,150);
                 LineTo(218,170);
                 MoveTo(226,150);
                 LineTo(226,170);
                 timer1.Enabled:= false;

               end;
        end;
    end;
 end;

 procedure TForm1.Timer2Timer(Sender: TObject);
  var
  x: Word;
 begin
   With Image1.Canvas do
     begin
     For x := 250 to 400 do
        begin
          sss.Canvas.CopyRect(Rect(0, 0, sss.Width, sss.Height),
          Image1.Canvas,Rect(x, 145, CartWidth + X, 145 + CartHeight));
          CART(x,145);
          Application.ProcessMessages;
          Image1.Canvas.Draw(x,145,sss);

           brush.Color:= RGB(55,155,255);
           pen.Color:=RGB(55,155,255);
           Ellipse(320,150,340,170);
           Ellipse(260,150,280,170);
           Rectangle (250,145,350,150);

           if x=400      then
           brush.Color:= clRed;
           if x=400      then
           pen.Color:=clblack;
           Ellipse(470,150,490,170);
           Ellipse(410,150,430,170);
           Rectangle (400,145,500,150);
           timer2.Enabled:= false;

         end;
     end;
 end;

 procedure TForm1.Button1Click(Sender: TObject);
   begin
     timer1.Enabled:= true;
     timer2.Enabled:= true;
   end;

end.
Вложения
Тип файла: rar Копия графика.rar (174.2 Кб, 7 просмотров)
Мы все учились понемногу
Чему-нибудь и как-нибудь!!!
serj-07 вне форума Ответить с цитированием
Старый 07.01.2010, 19:53   #12
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

serj-07
тёзка, Вы всё время делаете ОДНУ и ТУ ЖЕ ошибу!
Забудьте про циклы!
НЕ ПИШИТЕ НИКАКИХ FOR x:= ... FOR y:= ...
и не нужно Вам ДВА таймера!

наращивание x и y должно быть в ОДНОМ таймере!

видимо, прийдётся мне на основе Вашего кода пример написать..
Serge_Bliznykov вне форума Ответить с цитированием
Старый 07.01.2010, 19:59   #13
rusell
Пользователь
 
Аватар для rusell
 
Регистрация: 30.03.2009
Сообщений: 20
По умолчанию

у тебя вначале проделается 1 цикл, а потом 2ой! Соответственно вначале передвинется одно, затем другое! двигай одновременно!

как уже говорили (Картинка1+ху Картинка2+ху) - это 1 шаг, по твоей программе это 1 проход цикла! и так далее
Самый приятный момент в написании кода, это когда кажется, что код почти готов!
rusell вне форума Ответить с цитированием
Старый 07.01.2010, 20:02   #14
serj-07
Пользователь
 
Аватар для serj-07
 
Регистрация: 07.03.2009
Сообщений: 68
По умолчанию

я еще только учусь, сообразить не могу
с примером было бы наверное наглядней.
Мы все учились понемногу
Чему-нибудь и как-нибудь!!!
serj-07 вне форума Ответить с цитированием
Старый 07.01.2010, 21:39   #15
DeKot
Участник клуба
 
Аватар для DeKot
 
Регистрация: 12.08.2008
Сообщений: 1,977
По умолчанию

Много раз приводил этот пример ( см. вложение), где много персонажей одновременно двигаются, плюс фон, плюс текст плюс ...
Короче, вот пример во вложении. Без бибилиотек и посторонних модулей. Чисто на канве. Тут главное принцип понять, а рисовать можно что угодно.
Вложения
Тип файла: rar ManySpr.rar (688.3 Кб, 20 просмотров)
И не сомневайся даже ... отдых - кайф, работа - лажа!
DeKot вне форума Ответить с цитированием
Старый 07.01.2010, 22:57   #16
serj-07
Пользователь
 
Аватар для serj-07
 
Регистрация: 07.03.2009
Сообщений: 68
По умолчанию

мне до такого еще надо учиться и учиться.
Мы все учились понемногу
Чему-нибудь и как-нибудь!!!
serj-07 вне форума Ответить с цитированием
Старый 10.01.2010, 02:18   #17
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

вот простой пример на основании твоего кода.
Единственное, промучился с битмапами sss и aaa, которые ты туда-сюда двигал, до конца так и не разобрался и выкинул их нафиг.
по мне, так код стал короче, проще и понятнее...

и ещё, всё константы должны выноситься в секцию
Const, иначе такой код тяжело понимать, изменять и сопровождать...
Вложения
Тип файла: rar Grafika.rar (3.7 Кб, 13 просмотров)
Serge_Bliznykov вне форума Ответить с цитированием
Старый 10.01.2010, 10:39   #18
serj-07
Пользователь
 
Аватар для serj-07
 
Регистрация: 07.03.2009
Сообщений: 68
По умолчанию

Всем за помощь большое спасибо.
Начал понимать, думаю разбирусь дальше сам.

подскажите как закрыть тему.
Мы все учились понемногу
Чему-нибудь и как-нибудь!!!
serj-07 вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Анимация nimf Общие вопросы Delphi 6 07.08.2009 10:21
Анимация в С++ Streb Общие вопросы C/C++ 28 07.06.2009 19:07
анимация Juffin Общие вопросы Delphi 2 26.05.2009 20:04
Анимация BuTeK1 Паскаль, Turbo Pascal, PascalABC.NET 0 19.01.2009 00:30
Анимация SanekIrk Общие вопросы Delphi 11 08.08.2008 15:24