У вас вопросы?
У нас ответы:) SamZan.net

Лабораторная работа 4По предмету-Программирование и основы алгоритмизацииТема- ПРИМЕНЕНИЕ ПРИНЦИПОВ ОБ

Работа добавлена на сайт samzan.net: 2016-03-30

Поможем написать учебную работу

Если у вас возникли сложности с курсовой, контрольной, дипломной, рефератом, отчетом по практике, научно-исследовательской и любой другой работой - мы готовы помочь.

Предоплата всего

от 25%

Подписываем

договор

Выберите тип работы:

Скидка 25% при заказе до 3.2.2025

Федеральное агентство по образованию

Пермский государственный технический университет

Кафедра автоматики и телемеханики

Лабораторная работа №4
По предмету:
«Программирование и основы алгоритмизации»
Тема: «ПРИМЕНЕНИЕ ПРИНЦИПОВ ОБЪЕКТНО-ОРИЕНТИРОВАННОГО ПРОГРАММИРОВАНИЯ»

       

Выполнил ст. гр. ТК-11-1бзу

Бурылов С.В.

Проверил: доцент кафедры АТ

Кавалеров М.В.

Пермь 2012

Цель работы

Цель работы: получение навыков применения принципов объектно-ориентированного программирования.

Задание

Программа должна представлять собой графическую заставку по аналогии с той программой, которая была рассмотрена в лекции 14. В ходе проработки лекции 14 должна быть получена программа графической заставки, в процессе выполнения которой по графическому окну случайным образом перемещаются точки и прямоугольники. Надо дополнить эту программу следующим образом. Во-первых, к имеющимся точкам и прямоугольникам надо добавить окружности. Для этого добавьте перемещение объектов «Окружность» на основе принципа наследования по аналогии с тем, как это было сделано в случае объекта «Прямоугольник». При этом для объектов «Точка», объектов «Прямоугольник» и объектов «Окружность» надо использовать один и тот же массив obj. В итоге при выполнении графической заставки по графическому окну должны перемещаться точки, прямоугольники и окружности.

Во-вторых, добавьте объект, который отображается в виде пары рядом расположенных букв: первой буквы имени и фамилии студента, выполняющего данное задание. При этом буквы должна быть нарисованы с использованием графических элементов (линии, эллипсы, дуги эллипсов), а не с помощью функции GTextXY. Буквы в паре должны располагаться на одной горизонтальной линии. Расстояния между буквами в паре не должны превышать ширину этих букв. Кроме того, размер букв пары должен случайным образом выбираться при создании соответствующего объекта. Для того, чтобы сильно не снижать быстродействие программы, рекомендуется размеры букв делать не больше, чем 30 на 30 пикселей, а также общее количество всех объектов не делать слишком большим.

Таким образом, в результате выполнения лабораторной работы должна быть реализована программа, представляющая собой графическую заставку. При ее выполнении на экране должны случайным образом перемещаться точки, прямоугольники, окружности и пары букв указанного вида.


Исходный текст программы

#include <graphics.h>

#include <stdlib.h>

#include <conio.h>

#include <time.h>

#include <dos.h>

class cfigure {

private:

int c;

int dx, dy;

protected:

int x, y;

public:

cfigure();

void move();

virtual void draw() = 0;

};

cfigure::cfigure()

{

x = random(640);

y = random(480);

c = random(15)+1;

dx = random(10)-5;

dy = random(10)-5;

}

void cfigure::move()

{

setcolor(0);

draw();

x+=dx;

if((x>=640)|(x<0)) dx=-dx;

y+=dy;

if((y>=480)|(y<0)) dy=-dy;

setcolor(c);

draw();

}

class cpoint : public cfigure {

public:

virtual void draw();

};

void cpoint::draw()

{

putpixel(x, y, getcolor());

}

class crectangle : public cfigure {

private:

int w, h;

public:

crectangle();

virtual void draw();

};

crectangle::crectangle()

{

w = random(50);

h = random(30);

}

void crectangle::draw()

{

rectangle(x-w/2, y-h/2, x+w/2, y+h/2);

}

class ccircle : public cfigure {

private:

int r;

public:

ccircle();

virtual void draw();

};

ccircle::ccircle()

{

r = random(20);

}

void ccircle::draw()

{

circle(x, y, r);

}

class cletters: public cfigure {

private:

float k;

public:

cletters();

virtual void draw();

};

cletters::cletters()

{

k = random(20)/10.0 + 1.0;

}

void cletters::draw()

{

line(x, y, x, y+30*k);

line(x, y, x + 20*k, y);

arc(x+8*k, y+20*k, 230, 135, 10*k);

ellipse(x+40*k, y+15*k, 45, 315, 10*k, 15*k);

}

int main(int argc, char* argv[])

{

time_t t;

 time(&t);

srand((unsigned) time(&t));

srand(random(RAND_MAX));

int driver = VGA;

int mode = VGAHI;

initgraph(&driver, &mode, "");

 cfigure* obj[100];

 int i;

for (i=0;i<100;i++) {

 switch(random(4)) {

  case 0: obj[i] = new cpoint; break;

  case 1: obj[i] = new crectangle; break;

  case 2: obj[i] = new ccircle; break;

  case 3: obj[i] = new cletters; break;

 }

}

 while (!kbhit()) {

 for (i=0;i<100;i++) {

  obj[i]->move();

 }

 delay(100);

}

 for (i=0;i<100;i++) delete obj[i];

 closegraph();

return 0;

}




1. РЕФЕРАТ НА ТЕМУ- ldquo;Холераrdquo; студента І курсу історичного факульт
2. Цокольные равнины
3. то вслух лицом к лицу со скучающей секретаршей
4. Аттестации гражданских государственных и муниципальных служащих
5. раздуваетесь от остаточного воздуха выпускайте отработанный воздух через рот
6. Клиническая психология
7. Метод контурных токов
8. Разработка функциональных узлов, выполняющих типовые для цифровых устройств микрооперации
9. Об утверждении разъяснения
10. вариант Как повлияет уменьшение постоянных расходов на критический объем продаж- B критический объем умен