Модифицирование программы для определения класса, реализующего понятие геометрической фигуры в графической системе (Лабораторная работа № 2)

Страницы работы

Содержание работы

Министерство образования и науки Российской Федерации

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

Лабораторная работа №2

Классы

Факультет: ПМИ

Группа: ПМ-55

Студент:       Быданов А.А.

Преподаватель: Еланцева И.Л

Дата сдачи:

Новосибирск 2006г.

1. Задание

Модифицировать программу, разработанную в лабораторной работе №1, так чтобы в ней был определен класс, реализующий понятие геометрической фигуры в графической системе.

2. Описание функций

Функции класса Romb:

Внешние:

Romb() - инициализирующая класс функция, устанавливает 

                 стандартные графические параметры

~Romb() - деструктор.

voidGet(intz) – извлечение данных из класса: координаты точек пересечения диагоналей ромбов, длины этих диагоналей, углы наклона по часовой стрелке. Z -  номер извлекаемого элемента в списке.

voidGetxy(intz) – извлечение данных из класса: координаты вершин ромбов.

Z -  номер извлекаемого элемента в списке.

void enter(int xo, int yo,int dx1,int dy1,int angle1,int xoo,int yoo,int dx2,int dy2,int angle2) - функция ввода, полученные данные – координаты точек пересечения диагоналей ромбов, длины этих диагоналей, углы наклона по часовой стрелке, далее использует calculation() для вычисления координат вершин ромбов.

voidcontromb() - рисует контур ромба (незакрашенный ромб), для построения используются координаты «внешнего» ромба.

voidcoloromb() - рисует закрашенный ромб, для построения используются координаты «внешнего» ромба.

voiddupromb() - рисует два ромба, один из которых («внешний») вложен в другой («внутренний»), для построения используются координаты двух ромбов.

voidload() - загружает данные из файла load.txt (в том числе и графические параметры).

voidsave() - сохраняет данные в файл save.txt (в том числе и графические параметры.

intmove(intrx, intry) - изменяет координаты вершин ромба на заданный вектор (x,y) (т.е. перемещает ромб).

voidoptions(intfl,inttl,intcl,inttf,intcf) - графические опции, устанавливает указанные толщину, тип, цвет линии и тип, цвет заливки.

Внутренние:

voiddrawromb() - рисует контур ромба, в отличие от contromb() графические параметры не учитываются.

voidcalculation() - вычисляет координаты вершин ромба, используя для этого координаты точки пересечения диагоналей ромба, длины этих диагоналей и угол наклона ромба по часовой стрелке.

Функции демонстрационной программы:

intcheck1() - проверка на попадание ромба в пределы экрана, в случае выхода ромба за пределы экрана выводится сообщение об ошибке.

1 – если ромб попадает за экран, 0 – если все нормально

intcheck2() - проверка на вложенность фигур, в случае, когда фигуры не вложены, выводится сообщение об ошибке.

1 – если ромбы не вложены, 0 – если все нормально

void enter() – функция ввода параметров для построения ромба: координаты точки пересечения диагоналей, длины диагоналей, угол наклона по часовой стрелке, а также передачи этих данных объекту класса Romb.

void Goptions() – функция ввода графических параметров: толщина, тип, цвет линий и тип, цвет заливки. Передача этих параметров объекту класса Romb (функция options).

void Vektor() – функция ввода вектора, на который должен сместиться ромб, передача данных объекту класса ромб (функция move).

void Change() – функция частичного изменения параметров ромба, передача данных объекту класса Romb.

void Output() – функция вывода параметров ромба (объект класса Romb) на экран.

void main() – головная функция программы, инициализирует графический режим, запускает демонстрационное меню.

3. Программа

Файл - clasromb.cpp

--------------------------------------------------------------------------------

#include <graphics.h>

#include <stdlib.h>

#include <stdio.h>

#include <conio.h>

#include <math.h>

class Romb

{int lx, ly, llx, lly, alf, bet, x[10], y[10], n;

 int fatline, typeline, colorline, typefill, colorfill;

 public:

 Romb();

 ~Romb();

 void enter(int xo, int yo,int dx1,int dy1,int angle1,int xoo,int yoo,int dx2,int dy2,int angle2);

 void contromb();

 void coloromb();

 void dupromb();

 void load();

 void save();

 void move(int rx, int ry);

 void options(int fl,int tl,int cl,int tf,int cf);

 int Get(int z);

 int Getxy(int z);

 private:

 void drawromb();

 void calculation();

};

Romb::Romb()

{fatline=1;

 typeline=0;

 colorline=7;

 typefill=1;

 colorfill=15;

}

//----------------------Vvod dannyh-------------------------

void Romb::enter(int xo, int yo,int dx1,int dy1,int angle1,int xoo,int yoo,int dx2,int dy2,int angle2)

{x[0]=xo;

 y[0]=yo;

 lx=dx1;

 ly=dy1;

 alf=angle1;

 x[9]=xoo;

 y[9]=yoo;

 llx=dx2;

 lly=dy2;

 bet=angle2;

 n=4;

 calculation();

}

//-------------------Get-----------------

int Romb::Get(int z)

{int ret;

 switch (z)

 {case 1: ret=x[0]; break;

Похожие материалы

Информация о работе