Графика и мультимедиа___________________________________365

short int X = Xpos-revers*H*cos(Angi);

Imagel->Canvas->MoveTo(X-(Xpos-X),Ypos) ;

Imagel->Canvas->LineTo(X,Yb);                // нога

if (cadr != Ncadr / 2-1)
Imagel->Canvas->LineTo(Xpos,Ypos);          // другая нога

Imagel->Canvas->MoveTo(X,Yb) ;

Imagel->Canvas->LineTo(X,Yt);                // туловище

short int XI = X - revers * (Yb-Ypos);

Imagel->Canvas->MoveTo(XI,Yt+5-(Xpos-X));

Imagel->Canvas->Ellipse(Xl-Rhead / 2,Yt+5-(Xpos-X)-Rhead / 2,
Xl+Rhead / 2,Yt+5-(Xpos-X)+Rhead / 2);

Imagel->Canvas->LineTo(X,Yt+5);              // рука

if (cadr != Ncadr / 2-1)

(

Imagel->Canvas->Ellipse(Xl-Rhead / 2,Yt+5+(Xpos-X)-Rhead / 2,
Xl+Rhead / 2, Yt+5+(Xpos-X)+Rhead / 2);

Imagel->Canvas->LineTo(XI,Yt+5+(Xpos-X));         // другая рука

}

// шляпа

Imagel->Canvas->E11ipse(X-Rhead,Yt-2*Rhead,X+Rhead,Yt) ;

Imagel->Canvas->Rectangle(X-Rhead,Yt-2*Rhead-4,X+Rhead,Yt-2*Rhead-l) ;

}

//————————————————————————

void _fastcall TFormI::BRunClick(TObject *Sender)
(

Timerl->Enabled = ! Timerl->Enabled;

}

//—————————————————————————

void _fastcall TFormI::TimerlTimer(TObject *Sender)
{

Draw();

cadr = (cadr+1) % Ncadr;

if (cadr == 0)

if ((Xpos < Imagel->Picture->Width-revers*3*H) &&(Xpos>-revers*3*H) )
Xpos += revers*H*l.41;

else revers = -revers;

Draw() ;

}

//————————————————————————

void   fastcall TFormI::FormCreate(TObject *Sender)
(    —

Image!->Canvas->MoveTo(O.Ypos+3) ;

Imagel->Canvas->Pen->Width = 4;

Imagel->Canvas->LineTo(Imagel->ClientWidth,Ypos+3); // земля

Imagel->Canvas->Pen->Width = 1;

Imagel->Canvas->Pen->Mode = pmNotXor;

Timerl->Interval = 600 / Ncadr;

Draw() ;

}

В этом коде использованы математические функции sin и cos. Поэтому в код
надо добавить директиву препроцессора

ftinclude <math.h>

Рассмотрим коротко приведенный код.

Процедура FormCreate отличается от той, что была в первом приложении, то-
лько оператором, задающим выдержку таймера (свойство Interval) путем деления
600 на константу Ncadr, которая задает число кадров на один цикл движения —
на один шаг человечка. Как видно, длительность одного шага выбрана равной 600
миллисекунд. Вы, конечно, можете изменить это значение, как и значение Ncadr,
выбранное равным 16.