Статья: Законченная программа

};

Глаза и рот - отдельные и независимые объекты, которые создает конструктор my_shape:

myshape::myshape(point a, point b) : (a,b)

{

int ll = neast().x-swest().x+1;

int hh = neast().y-swest().y+1;

l_eye = new line(

point(swest().x+2,swest().y+hh*3/4),2);

r_eye = new line(

point(swest().x+ll-4,swest().y+hh*3/4),2);

mouth = new line(

point(swest().x+2,swest().y+hh/4),ll-4);

}

Объекты глаза и рот порознь рисуются заново функцией shape_refresh(), и в принципе могут обрабатываться независимо из объекта my_shape, которому они принадлежат. Это один способ определять средства для иерархически построенных объектов вроде my_shape. Другой способ демонстрируется на примере носа. Никакой нос не определяется, его просто добавляет к картинке функция draw():

void myshape::draw()

{

rectangle::draw();

put_point(point(

(swest().x+neast().x)/2,(swest().y+neast().y)/2));

}

my_shape передвигается посредством перемещения базового прямоугольника rectangle и вторичных объектов l_eye, r_eye и mouth (левого глаза, правого глаза и рта):

void myshape::move()

{

rectangle::move();

l_eye->move(a,b);

r_eye->move(a,b);

mouth->move(a,b);

}

Мы можем, наконец, построить несколько фигур и немного их подвигать:

К-во Просмотров: 310
Бесплатно скачать Статья: Законченная программа