Движение обьекта
Сначала надо было организовать просто движение любого из классов.
Код:
void FigureMove(GeomFigure* pFig,int dx,int dy, int dtime, int count);
int main(void)
{
int gdriver = DETECT, gmode, errorcode;
initgraph(&gdriver, &gmode, PATCHTODRIVER);
errorcode = graphresult();
if (errorcode != grOk)
{
printf("Graphics error: %s\n", grapherrormsg(errorcode));
printf("Press any key to halt:");
getch();
exit(1);
}
int maxx, maxy; maxx = getmaxx(); maxy = getmaxy();
int x0,y0; x0= maxx/2; y0=maxy/2;
Circle A1(50,300,240); A1.Draw();
// ColorRect S1(30,50,150,100,2,3,4,5);
/// S1.Draw();
getch();
ColorRect S2(0,360,200,100,BLUE,GREEN,RED,BROWN,YELLOW); S2.Draw();
///+ FigureMove(&A1,15,5,750,12);
// FigureMove(&S1,5, -3, 150, 20);
// getch();
FigureMovebyCircle (&S2,20,20,20);
getch();
closegraph();
return 0;
}
/*void FigureMove(GeomFigure* pFig,int dx,int dy, int dtime, int count)
{
for(int i=1; i<=count; i++)
{
pFig->Draw();
delay(dtime); // getch();
pFig->Hide();
pFig->Shift(dx,dy);
}
}
Код:
а теперь надо сделать движение по кругу(класс Circle) другого класса Например (colortxtrect)
Код:
x=r*cos(f)
y=r*sin(f)
f+=df
y=r*sin(f)
f+=df
f - угол
df - приращение угла
r - радиус окружности
а делать тоже в цикле?
и получается будет 5 переменных?
Цитата: Lulik
спасибо.
а делать тоже в цикле?
и получается будет 5 переменных?
а делать тоже в цикле?
и получается будет 5 переменных?
ессна, там где приращение - там обычно и цикл...
Код:
void FigureMovebyCircle(GeomFigure* Circle, int dtime, int count, int Radius, int x0,int y0)
{
///Radius=R;
;
for(int i=1; i<=count; i++)
{
Circle->Draw();
delay(dtime); // getch();
dx=R*cos(f);
dy+R*sin(f) ;
f+=df
pFig->Shift(dx,dy);
// Circle(10.10.50);
// Circle-> delay; // getch();
Circle->Hide();
Circle->Shift(x0,y0);
}
}
Код:
не получается(
Код:
double df = 2*M_PI/count;
for (double f = 0; f<=2*M_PI; f+=df)
{
double x = R*cos (f);
double y = R*sin (f);
Circle->Shift(x,y);
delay(dtime);
}
for (double f = 0; f<=2*M_PI; f+=df)
{
double x = R*cos (f);
double y = R*sin (f);
Circle->Shift(x,y);
delay(dtime);
}
double df = 2*M_PI/count;
Деля 2*M_PI (два пи) на число шагов, мы получаем приращение.
Поправь, если я недопонял.
движение происходит, но не по кругу(((
{
pFig->Shift(x0,y0);
double df=2*M_PI/count;
for (double f=0; f<=2*M_PI; f+=df)
{
double dx=Radius*cos(f)+Radius*df;
double dy=Radius*sin(f)+Radius*df;
pFig->Draw();
delay(dtime);
pFig->Shift (dx,dy);
}
}