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

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

Восстановить пароль Регистрация
 
Lawlliet
2 / 2 / 0
Регистрация: 25.03.2010
Сообщений: 145
12.12.2012, 10:25     Движение окружностей с изменением цвета #1
Доброго времени суток!
Есть олимпийские кольца и рамка для них. Все они движуться вниз по экрану.
вот мой код:

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++
Площади окружностей C++
C++ Даны координаты центров n окружностей и их радиусы. Определить число пересекающихся окружностей
C++ Пересечение двух окружностей
С++ Builder Циклы с условием (при вводе адреса цвета (например, 0 255 0) выдавать имя цвета) C++
Начертить 100 окружностей случайного диаметра и цвета C++
C++ Реализовать динамический список с добавлением, изменением и удалением элементов по индексу
C++ Из паскаля в c++ с небольшим изменением

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

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

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