Добавил:
korayakov
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз:
Предмет:
Файл:
//‹ Ў ђ®¬л Њ®абЁ , ᤥ« лҐ ¤«п Ћ«Ё
//ЏҐаҐ¬ҐйҐЁҐ ЄагЈ®ў
#include <graphics.h>
#include <STDLIB.h>
#include <conio.h>
#include <dos.h>
class Window;
class Ball {
protected:
In(Window);
public:
int x,y,radius,color,dx,dy;
Ball(int,int,int,int,int,int);
int moveto(Window);
int show();
int hide();
~Ball() {};
};
class Window {
public:
int xl,xr,yt,yb;
Window(int,int,int,int);
int show();
~Window();
};
Ball::Ball(int nx, int ny, int rad, int col,int a,int b) {
x=nx;
y=ny;
radius=rad;
color=col;
dx=a;
dy=b;
};
int Ball::show() {
setcolor(color);
circle(x,y,radius);
return 1;
};
int Ball::hide() {
setcolor(getbkcolor());
circle(x,y,radius);
return 1;
};
int Ball::moveto(Window win) {
In(win);
x+=dx;
y+=dy;
return 1;
};
int Ball::In(Window win) {
if ((x+dx-radius-1)<win.xl || (x+dx+radius+1)>win.xr) dx=-dx;
if ((y+dy-radius-1)<win.yt || (y+dy+radius+1)>win.yb) dy=-dy;
return 1;
};
Window::Window(int x1,int y1, int x2, int y2) {
xl=x1;
yt=y1;
xr=x2;
yb=y2;
}
Window::~Window() {
};
int Window::show() {
setcolor(WHITE);
rectangle(xl,yt,xr,yb);
return 1;
};
void main() {
int gdriver = DETECT, gmode;
initgraph(&gdriver, &gmode, "E:\\C3.1\\bgi");
int r,x1=10,y1=10,x2=400,y2=400;
int num=3;
Window w(x1,y1,x2,y2);
w.show();
randomize();
r=random(20)+5;
Ball **balls;
for (int i=0; i<num; i++) balls[i]=new Ball(random(x2-r-x1-2)+x1+r+1,random(y2-r-2-y1)+y1+r+1,r,15,random(5)+1,random(5)+1);
while (!kbhit()) {
for (i=0; i<num; i++) balls[i]->show();
delay(10);
for (i=0; i<num; i++) balls[i]->hide();
for (i=0; i<num; i++) balls[i]->moveto(w);
};
for (i=0; i<num; i++) delete balls[i];
};