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

Графическая заставка С++ - C++

Восстановить пароль Регистрация
 
Рейтинг: Рейтинг темы: голосов - 10, средняя оценка - 4.90
SkArt
0 / 0 / 0
Регистрация: 21.05.2012
Сообщений: 3
21.05.2012, 21:15     Графическая заставка С++ #1
Здравствуйте,прошу помочь, есть программа графической заставки, в процессе выполнения которой по графическому окну случайным образом перемещаются точки,круги и прямоугольники.
Нужно Реализовать перемещение графических объектов по прямым траекториям с разными случайными векторами скоростей.
Для перемещения объекта по прямой траектории надо, чтобы для этого объекта сохранялся вектор скорости. Этот вектор скорости можно задавать двумя переменными vx и vy, которые соответственно определяют горизонтальную и вертикальную скорости. Каждый объект должен иметь свой вектор скорости, поэтому в описании объекта «Точка» надо добавить две переменные vx и vy типа int. При этом объекты «Прямоугольник» и «Окружность», а также другие объекты, порожденные от объекта «Точка», унаследуют эти переменные. Кроме того, надо выполнить начальную инициализацию этих переменных при создании экземпляра объекта. Для этого в конструкторе TPoint::TPoint надо присвоить этим переменным случайные значения, например, значения rand()%7-3. Тогда при появлении на экране графический объект будет иметь случайный вектор скорости. Для увеличения скорости перемещения можно использовать более широкий диапазон псевдослучайных чисел, например, rand()%11-5.
Вроде все описанно как делать,но у меня не получается, может кто подскажет?
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
#include <stdlib.h>
#include <time.h>
#include <grx20.h>
#include <grxkeys.h>
struct TPoint{
 int x,y;
 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;
 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();
 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/2,y-h/2,x+(w-w/2),y+(h-h/2),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+2,y+5,r-1,icolor);
}
#define N 10
main()
{TPoint *obj[N];
 GrSetMode(GR_default_graphics,640,480);
 srand(time(0));
 int i;
 for(i=0;i<N;i++){
 switch (1 + rand()%3) {
  case 1:
  obj[i]=new TPoint(rand()%(GrMaxX()+1),rand()%(GrMaxY()+1),15);
  obj[i]->Show();
  break;
  case 2:
  obj[i]=new TBox(rand()%(GrMaxX()+1),rand()%(GrMaxY()+1),15,rand()%(GrMaxX()+1),rand()%(GrMaxY()+1));
  obj[i]->Show();
  break;
  case 3:
  obj[i]=new TCircle(rand()%(GrMaxX()+1),rand()%(GrMaxY()+1),15,rand()%(GrMaxX()+1));
  obj[i]->Show();
  break;
  default:; }}
GrKeyType key;
 do{
  while (!GrKeyPressed()){
   GrSleep(20);
   for(i=0;i<N;i++){
    obj[i]->MoveXY(obj[i]->x+rand()%7-3,obj[i]->y+rand()%7-3);
}
  }
  key=GrKeyRead();
 }while(key!=GrKey_Escape);
for(i=0;i<N;i++){
  delete obj[i];
 }
}
Вложения
Тип файла: txt точки и прямоугольники и круги.txt (2.1 Кб, 25 просмотров)
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
21.05.2012, 21:15     Графическая заставка С++
Посмотрите здесь:

Графическая заставка на С C++
C++ заставка по линукс
Графическая библиотека C++ C++
Графическая оболочка C++
графическая оболочка C++
Графическая оболочка C++
C++ Графическая библиотека С++
Графическая задача C++

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
SkArt
0 / 0 / 0
Регистрация: 21.05.2012
Сообщений: 3
23.05.2012, 19:15  [ТС]     Графическая заставка С++ #2
Нужно в описании объекта «Точка» добавить две переменные vx и vy типа int и потом в конструкторе TPoint::TPoint надо присвоить этим переменным случайные значения. Кто нибудь знает как? У меня не выходит.
Yandex
Объявления
23.05.2012, 19:15     Графическая заставка С++
Ответ Создать тему
Опции темы

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