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

Опишите код - какая функция за что отвечает? - C++

Восстановить пароль Регистрация
 
truhin_evgeniy
3 / 3 / 0
Регистрация: 23.01.2014
Сообщений: 47
05.02.2014, 23:32     Опишите код - какая функция за что отвечает? #1
опишите плиз код какая функция за что отвечает?


код:

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
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
#include <stdlib.h>
#include <time.h>
#include <grx20.h>
#include <grxkeys.h>
#include <stdio.h>
 
//описание класса Точка
struct TPoint{
 int x,y,vx,vy,vt;
 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;
 vx=rand()%17-8;
 vy=rand()%17-8;
 vt=rand()%46+5;}
TPoint::~TPoint()
{
 Hide();}
 
//функция рисования объекта Точка
void TPoint::Draw(int icolor)
{
 GrPlot(x,y,icolor);
 GrPlot(x,y+1,icolor);
 GrPlot(x+1,y,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((rand()%100)==50)
    {
        vx=rand()%17-8;
        vy=rand()%17-8;
    }
 if(ix>GrMaxX())//если координата по x заходит за правый край экрана
    {
        ix=ix-GrMaxX()-1;//x устанавливается в нулевое значение
    }
 if(ix<0)//если координата по x заходит за левый край экрана
    {
        ix=ix+GrMaxX()+1;//x устанавливается в правый край экрана
    }
    if(iy>GrMaxY())//если координата по y заходит за нижний край экрана
    {
        iy=iy-GrMaxY()-1;//y устанавливается в нулевое значение
    }
    if(iy<0)//если координата по y заходит за верхний край экрана
    {
        iy=iy+GrMaxY()+1;//y устанавливается в нижний край экрана
    }
    x=ix;//задаем новые координаты по x и y
    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,y,r,icolor);}
 
//Объявление константы для максимального количества объектов
#define M 10000
main()
{int N=1;
 
//Создание массива объектов класса Точка с максимальным количеством объектов
 TPoint *obj[M];
 GrSetMode(GR_width_height_graphics,1024,768);
  srand(time(0));
 
int i;
int count;
i=0;
 
//в нулевой элемент массива заносится ведущий объект Окружность с радиусом 2 и цветом   10
 obj[i]=new TCircle(rand()%(GrMaxX()+1),rand()%(GrMaxY()+1),10,2);
 
//цикл создания ведомых объектов
for(i=1;i<N;i++){
     count=rand()%3;
     switch(count)//Проверка полученного числа
     {case 1://если 1
     obj[i]=new TBox(rand()%(GrMaxX()+1),rand()%(GrMaxY()+1),15,rand()%10,rand()%10);
     //в текущую позицию массива заносится объект Прямоугольник
     break;//завершение ветвления
 
      case 2://если 2
      obj[i]=new TCircle(rand()%(GrMaxX()+1),rand()%(GrMaxY()+1),15,rand()%20);
       //в текущую позицию массива заносится объект Окружность
      break;//завершение ветвления
 
      default://иное значение
      obj[i]=new TPoint(rand()%(GrMaxX()+1),rand()%(GrMaxY()+1),15);};
      //в текущую позицию массива заносится объект Точка
  obj[i]->Show();//отображение объекта
 }
 
  GrKeyType key;//переменная для чтения нажатой клавиши
  int s;//переменная для генерирования случайного числа
 
do{
    while (!GrKeyPressed()){//цикл работы с клавиатурой
    GrSleep(30);//формирование задержки в миллисекундах
    for(i=0;i<N;i++){//цикл случайного изменения вектора    скоростей
 
s=rand()%100;//формирование случайного числа
if (s=50)//если генератор случайных чисел выдал 50
{
obj[i]->MoveXY(obj[i]->x+obj[i]->vx,obj[i]->y+obj[i]->vy);
}//выполняем случайное изменение вектора скоростей}
 
   //цикл присвоения каждому ведомому объекту приближения на "свое" расстояние к ведущему объекту
   for (i=1;i<N;i++){
       obj[i]->vx=((obj[0]->x-obj[i]->x)/obj[i]->vt+rand()%7-3);
       obj[i]->vy=((obj[0]->y-obj[i]->y)/obj[i]->vt+rand()%7-3);    }  };
 
  key=GrKeyRead();//считывание нажатой клавиши
    switch(key){
   case GrKey_Insert://если Insert
 
    //если количество объектов меньше    максимального
    if (N<M){
//цикл добавления объектов
        for(i=0;i<N;i++){
        count=rand()%3;//получение случайного числа
        switch(count)//проверка полученного значения
            {case 1://если 1
obj[N]=new TBox(rand()%(GrMaxX()+1),rand()%(GrMaxY()+1),15,rand()%10,rand()%10);
            //добавление объекта Прямоугольник
            break;//завершение ветвления
             case 2://если 2
obj[N]=new TCircle(rand()%(GrMaxX()+1),rand()%(GrMaxY()+1),15,rand()%20);
            //добавление объекта Окружность
            break;//завершение ветвления
 
default://иное значение
obj[N]=new TPoint(rand()%(GrMaxX()+1),rand()%(GrMaxY()+1),15);};
            //добавление объекта Точка
 
obj[i]->Show();//показать добавленный объект
 }
     N++;//количество объектов увеличивается на 1    }
    break;//завершение проверки выбора клавиши
 
   case GrKey_Delete://если Delete
    if (N>1){//если количество объектов больше 1
     delete obj[N-1];
     N--;//количество объектов уменьшается на 1    }
    break;//завершение проверки выбора клавиши  }
 }while(key!=GrKey_Escape);//продолжать цикл пока не нажат Escape
 
  for(i=0;i<N;i++){//цикл удаления объектов из памяти
  delete obj[i]; }}
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Ded_Vasilij
 Аватар для Ded_Vasilij
229 / 211 / 15
Регистрация: 01.09.2012
Сообщений: 2,103
06.02.2014, 08:13     Опишите код - какая функция за что отвечает? #2
truhin_evgeniy, так тут же все прокомментировано самым подробнейшим образом, А чтобы понять за что отвечает каждая функция - не проще ли отладчиком пройтись?
ValeryS
Модератор
6376 / 4842 / 442
Регистрация: 14.02.2011
Сообщений: 16,045
06.02.2014, 08:24     Опишите код - какая функция за что отвечает? #3
Цитата Сообщение от Ded_Vasilij Посмотреть сообщение
так тут же все прокомментировано самым подробнейшим образом,
ага только что означают свойства точки
Цитата Сообщение от truhin_evgeniy Посмотреть сообщение
int x,y,vx,vy,vt;
*int color;
ну x,y я так понимаю это координаты
color это цвет
а vx,vy,vt; это что????
скорость? смешение?
ВАСИЛЕВС
555 / 478 / 60
Регистрация: 14.02.2012
Сообщений: 1,561
06.02.2014, 09:31     Опишите код - какая функция за что отвечает? #4
Цитата Сообщение от truhin_evgeniy Посмотреть сообщение
C++
1
2
obj[i]->MoveXY(obj[i]->x+obj[i]->vx,obj[i]->y+obj[i]->vy);
}//выполняем случайное изменение вектора скоростей}
ValeryS, наверно скорость.
Yandex
Объявления
06.02.2014, 09:31     Опишите код - какая функция за что отвечает?
Ответ Создать тему
Опции темы

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