Работа с графикой

Модераторы: Hawk, Romeo, Absurd, DeeJayC, WinMain

Ответить
Salt
Сообщения: 2
Зарегистрирован: 12 апр 2013, 19:02

Здравствуйте, помогите разобраться с программой?
в результате должны получиться различные графические объекты, перемещающиеся по прямым траекториям с разными случайными векторами скоростей. и возможность добавления и удаления объектов.
вот все, что есть. программа не работает.

Код: Выделить всё

#include <stdlib.h>
#include <time.h>
#include <grx20.h>
#include <grxkeys.h>
struct TPoint{
 int x,y;
 int vx, vy;
 int color;
 TPoint(int ix,int iy,int icolor);
 virtual ~TPoint();
 virtual void Draw(int icolor);
 void Show();
 void Hide();
 void MoveXY(int ix, int iy);
};
struct TBox: public TPoint{
 int w,h;
 TBox(int ix,int iy,int icolor,int iw,int ih);
 virtual ~TBox();
 virtual void Draw(int icolor);
};
struct TCircle: public TPoint{
 int r;
 TCircle(int ix,int iy,int icolor,int ir);
 virtual ~TCircle();
 virtual void Draw(int icolor);
};
TPoint::TPoint(int ix,int iy,int icolor)
{
 x=ix; y=iy;
 vx=rand()%7-3;
 vy=rand()%11-5;
 color=icolor;
}
TPoint::~TPoint()
{
 Hide();
}
void TPoint: :D raw(int icolor)
{
 GrPlot(x,y,icolor);
 GrPlot(x+1,y,icolor);
 GrPlot(x,y+1,icolor);
 GrPlot(x+1,y+1,icolor);
}
void TPoint::Show()
{
 Draw(color);
}
void TPoint::Hide()
{
 Draw(0);
}
void TPoint::MoveXY(int ix,int iy)
{
 Hide();
 if (ix>GrMaxX())
 x=ix-GrMaxX()-1;
 if (iy>GrMaxY())
 y=iy-GrMaxY()-1;
 //a=va; s=vs;
 x=ix; y=iy;
 Show();
}
TBox::TBox(int ix,int iy,int icolor,int iw,int ih):
 TPoint(ix,iy,icolor)
{
 w=iw; h=ih;
}
TBox::~TBox()
{
 Hide();
}
void TBox: :D raw(int icolor)
{
 GrBox(x-w/50,y-h/50,x+(w-w/50),y+(h-h/50),icolor);
}
TCircle::TCircle(int ix,int iy,int icolor,int ir):
 TPoint(ix,iy,icolor)
{
 r=ir;
}
TCircle::~TCircle()
{
 Hide();
}
void TCircle: :D raw(int icolor)
{
 GrCircle(x,y,r,icolor);
}
#define M 100
int main()
int N=10;
{TPoint *obj[M];
GrKeyType key;
 do{
  while (!GrKeyPressed()){
   GrSleep(20);
   obj[i]->vx;
   obj[i]->vy;
   for(i=0;i<N;i++){
 
    obj[i]->MoveXY(obj[i]->x+vx, obj[i]->y+vy;//x+rand()%7-3,obj[i]->vs+rand()%7-3);
}
  }
  key=GrKeyRead();
    switch(key){
case GrKey_Insert:
if (N<M){
    GrSetMode(GR_default_graphics,2,3);
 srand(time(0));
 int i;
 for(i=0;i<N;i++){
    switch (1 + rand()%3) {
  case 1:
  obj[N]=new TPoint(rand()%(GrMaxX()+1),rand()%(GrMaxY()+1),15);
  obj[N]->Show();
  break;
  case 2:
  obj[N]=new TBox(rand()%(GrMaxX()+1),rand()%(GrMaxY()+1),15,rand()%(GrMaxX()+1),rand()%(GrMaxY()+1));
  obj[N]->Show();
  break;
  case 3:
  obj[N]=new TCircle(rand()%(GrMaxX()+1),rand()%(GrMaxY()+1),15,rand()%(GrMaxX()+1));
  obj[N]->Show();
  break;
  default:; }}
N++; //количество объектов увеличивается
}
break;
case GrKey_Delete:
if (N>0){
delete obj[N-1];
N--; //количество объектов уменьшается
}
break;
}}}
Ответить