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

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
Lawlliet
2 / 2 / 0
Регистрация: 25.03.2010
Сообщений: 145
#1

Движение окружностей с изменением цвета - C++

12.12.2012, 10:25. Просмотров 344. Ответов 0
Метки нет (Все метки)

Доброго времени суток!
Есть олимпийские кольца и рамка для них. Все они движуться вниз по экрану.
вот мой код:

Classes.H
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
#include <iostream.h>
#include <math.h>
#include <conio.h>
#include <graphics.h>
 
class Figure
{
   public:
       virtual int GetCoordinates(int fl) =0;  
       virtual int Getcolor() =0;  
       virtual void Paint(int dx,int dy) =0;    
};
 
class Circle:public Figure
{ 
  int X,Y,R,color;
 
public:
  Circle(int x,int y, int r, int col)
  {
     R=r;
     X=x;
     Y=y;
     color=col;
     }
  ~Circle(){};
 
  int GetCoordinates(int fl)
  {
    if(fl==1)return Y;
    else if(fl==2)return X;
  }  
   
  int GetR()
  {
  return R;   
  }
  
  int Getcolor()  
  {
  return color;
  }
 
  void Paint(int sx,int sy)
  { 
    setcolor(color);
    circle(X+sx,Y+sy,R);                                
  }         
 
};
 
class Rectangl:public Figure
{ 
  int X1,Y1,X2,Y2,color;
public:
  Rectangl(int x1,int y1, int x2,int y2, int col)
  {
     X1=x1;
     Y1=y1;
     X2=x2;
     Y2=y2;
     color=col;
   }
  ~Rectangl(){};
 
  int GetCoordinates(int fl)
  {
    if(fl==1)return Y1;
    else if(fl==2)return X1;
    else if(fl==3)return Y2;
    else if(fl==4)return X2;
   }    
 
  int Getcolor() 
  {   
      return color;
  }
 
  void Paint(int sx,int sy)  
  {
   setcolor(color);
   rectangle(X1+sx,Y1+sy,X2+sx,Y2+sy);
  }        
};
main.cpp
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
#include <iostream.h>
#include <math.h>
#include <conio.h>
#include <graphics.h>
#include "Classes.H"
 
int main ()
{
    Figure **F=new Figure*[7];
    F[0]=new Circle(200,100,40,9);
    F[1]=new Circle(280,100,40,0);
    F[2]=new Circle(360,100,40,12);
    F[3]=new Circle(240,140,40,14);
    F[4]=new Circle(320,140,40,10);
    F[5]=new Rectangl(150,50,410,190,0);
    F[6]=new Rectangl(146,46,414,194,0);
    
    
int s,y;
     std::cout<<"Enter sy\n";
     std::cin>>s;
     initwindow(600,600);
     cleardevice();
     setbkcolor(15);
    for(y=s;y<getmaxy()-F[6]->GetCoordinates(6)-50;y+=s)
    {
     cleardevice();
     F[0]->Paint(0,y);
     F[1]->Paint(0,y);
     F[2]->Paint(0,y);
     F[3]->Paint(0,y);
     F[4]->Paint(0,y);
     F[5]->Paint(0,y);
     F[6]->Paint(0,y);
     delay(700);
   }
   
   getch();
   closegraph();
     return 0;
     }
Помогиет пожалуйста!
Нужно сделать так чтобы окружности меняли свой цвет ,когда двигаютсья, каждая в отдельности!

Заране большое спасибо

Добавлено через 1 час 48 минут
актуально

Добавлено через 6 часов 35 минут
разобрался...
может кому надо будет

Classes.H
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
#include <iostream.h>
#include <math.h>
#include <conio.h>
#include <graphics.h>
 
class Figure
{
   public:
       virtual int GetCoordinates(int fl) =0;  
       virtual int Getcolor() =0;  
       virtual void Paint(int dx,int dy, int color) =0; 
};
 
class Circle:public Figure
{ 
  int X,Y,R,color;
 
public:
  Circle(int x,int y, int r, int col)
  {
     R=r;
     X=x;
     Y=y;
     color=col;
     }
  ~Circle(){};
 
  int GetCoordinates(int fl)
  {
    if(fl==1)return Y;
    else if(fl==2)return X;
  }  
   
  int GetR()
  {
  return R;   
  }
  
  int Getcolor()  
  {
  return color;
  }
 
  void Paint(int sx,int sy,int color)
  { 
    setcolor(color);
    circle(X+sx,Y+sy,R);                                
  }         
 
};
 
class Rectangl:public Figure
{ 
  int X1,Y1,X2,Y2,color;
public:
  Rectangl(int x1,int y1, int x2,int y2, int col)
  {
     X1=x1;
     Y1=y1;
     X2=x2;
     Y2=y2;
     color=col;
   }
  ~Rectangl(){};
 
  int GetCoordinates(int fl)
  {
    if(fl==1)return Y1;
    else if(fl==2)return X1;
    else if(fl==3)return Y2;
    else if(fl==4)return X2;
   }    
 
  int Getcolor() 
  {   
      return color;
  }
 
  void Paint(int sx,int sy,int color) 
  {
   setcolor(color);
   rectangle(X1+sx,Y1+sy,X2+sx,Y2+sy);
  }        
};

main.cpp
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
#include <iostream.h>
#include <math.h>
#include <conio.h>
#include <graphics.h>
#include "Classes.H"
 
int main ()
{
    Figure **F=new Figure*[7];
    F[0]=new Circle(200,100,40,9);
    F[1]=new Circle(280,100,40,0);
    F[2]=new Circle(360,100,40,12);
    F[3]=new Circle(240,140,40,14);
    F[4]=new Circle(320,140,40,10);
    F[5]=new Rectangl(150,50,410,190,0);
    F[6]=new Rectangl(146,46,414,194,0);
    
int y,c1,c2,c3,c4,c5;
     srand(0);
     initwindow(600,600);
     cleardevice();
     setbkcolor(15);
    for(y=5;y<getmaxy()-F[6]->GetCoordinates(6)-50;y+=5)
    {
     c1=rand()%RAND_MAX*12+1;
     c2=rand()%RAND_MAX*13+1;
     c3=rand()%RAND_MAX*14+1;
     c4=rand()%RAND_MAX*15+1;
     c5=rand()%RAND_MAX*16+1;                                                   
     cleardevice();
     F[0]->Paint(0,y,c1);
     F[1]->Paint(0,y,c2);
     F[2]->Paint(0,y,c3);
     F[3]->Paint(0,y,c4);
     F[4]->Paint(0,y,c5);
     F[5]->Paint(0,y,0);
     F[6]->Paint(0,y,0);
     delay(700);
   }
   getch();
   closegraph();
     return 0;
     }
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
12.12.2012, 10:25
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Движение окружностей с изменением цвета (C++):

Начертить 100 окружностей случайного диаметра и цвета - C++
Написать программу, которая вычерчивает на экране узор из 100 окружностей случайного диаметра и цвета.

Вывести на экран узор из 100 окружностей случайного диаметра и цвета - C++
Составить программу, которая выводит на экран узор из 100 окружностей случайного диаметра и цвета

Даны координаты центров n окружностей и их радиусы. Определить число пересекающихся окружностей - C++
Допуск к экзамену в субботу а не решено еще 5 заданий по С++ 1.Даны координаты центров n окружностей и их радиусы. Определить число...

Движение планеты в системе двойной звезды или движение трех тел - C++
программа должна выводить координаты движения звезд и планеты в файл (рисую в gnuplot). во-первых, не понимаю, почему выходит, что все...

С++ Builder Циклы с условием (при вводе адреса цвета (например, 0 255 0) выдавать имя цвета) - C++
Help, не могу решить задачку ЛБ: нужно написать программу, при вводе адреса цвета (на пример 0 255 0 выдавал имя цвета). ...

Из паскаля в c++ с небольшим изменением - C++
Ребят помогите написать прогу на с++, а так же переделать под файлы. (Само задание:Пусть дан файл целых чисел. Создайте новый файл,...

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
12.12.2012, 10:25
Привет! Вот еще темы с ответами:

Программа с изменением BMP файлов - C++
Написать программу, формирующую по исходному BMP файлу новый BMP файл, содержащий самый яркий квадрат заданного размера N. N задать в...

Реализовать динамический список с добавлением, изменением и удалением элементов по индексу - C++
Подскажите класс, для хранения динамических списков классов. Не хочу изобретать велосипед, а пока ничего адекватного не нашел... В...

Площадь окружностей - C++
Задача: Рассматриваются н лучей, проведенных в плоскости из точки О. Углы между соседними лучами равны 2П/н. На лучах выбраны точки а1, а2...

Площади окружностей - C++
Задание звучит так: &quot;Запросить у пользователя массив из 5 радиусов окружностей. В другой массив записать площади этих окружностей. Вывести...


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

Или воспользуйтесь поиском по форуму:
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru