Форум программистов, компьютерный форум CyberForum.ru

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

Восстановить пароль Регистрация
 
Salty
0 / 0 / 0
Регистрация: 10.04.2013
Сообщений: 6
27.04.2013, 17:57     Работа с графикой #1
Здравствуйте, помогите разобраться с программой?
в результате должны получиться различные графические объекты, перемещающиеся по прямым траекториям с разными случайными векторами скоростей. и возможность добавления и удаления объектов.
вот все, что есть. программа не работает.
Код
#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::Draw(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::Draw(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::Draw(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;
}}}
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
27.04.2013, 17:57     Работа с графикой
Посмотрите здесь:

C++ Работа с графикой
Работа с ГРАФИКОЙ C++
РАБОТА С ГРАФИКОЙ C++
C++ Работа с графикой
C++ работа с графикой
C++ Работа с графикой
Работа с графикой C++
Работа с графикой C++

Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Ответ Создать тему
Опции темы

Текущее время: 16:46. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru