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();
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);
}
}
движение
В файлах описывается различные геометрические фигуры с разными параметрами.
Сначала надо было организовать просто движение любого из классов.
Код:
А теперь надо сделать движение по кругу. Причём класс ColorRect должен двигатся по классу Circle.
с этим возникли большие проблемы.
Код:
void FigureMovebyCircle(GeomFigure* pFig, int dtime,int x0,int y0,int Radius)
{
Circle (320,240,50).Draw(); getch();
setcolor(4);
const float PI=3.1416;
int Width; int Height;
int x1=x0-Radius*6;
int x2=Width/2;
int y2=Height/2;
int y1=y0-Radius*6;
pFig->Shift(x1,y1);
pFig->Draw();
for (double f=0; f<=2*M_PI; f=f+PI/14)
{
double df=f*Radius;
double dx=Radius*cos(f);
double dy=Radius*sin(f);
pFig->Draw();
delay(dtime);
pFig->Shift (dx,dy);
}
}
{
Circle (320,240,50).Draw(); getch();
setcolor(4);
const float PI=3.1416;
int Width; int Height;
int x1=x0-Radius*6;
int x2=Width/2;
int y2=Height/2;
int y1=y0-Radius*6;
pFig->Shift(x1,y1);
pFig->Draw();
for (double f=0; f<=2*M_PI; f=f+PI/14)
{
double df=f*Radius;
double dx=Radius*cos(f);
double dy=Radius*sin(f);
pFig->Draw();
delay(dtime);
pFig->Shift (dx,dy);
}
}
причём переменные x0 и y0 надо брать из класса Colorrect, но не получаеться сделать указатель.