Уральский Государственный Технический Университет – УПИ
Радиотехнический факультет
Кафедра Теоретических основ радиотехники
Дата_______________
Подпись____________
по лабораторной работе №2
«Oбъектно-ориентированное программирование »
Группа Р-219
Студенты
1.Задание
Написсать программу с использованием ООП, которая рисует треугольник произвольной формы и реализует:
Ø Перемещение фигуры по X,Y.
Ø Перемещение выбранных вершин по X,Y.
Ø Вращение фигуры относительно точки пересечения медиан.
Ø Изменение цвета контура фигуры.
2. Блок-схема
3. Описание функций
3.1 Init();
Инициализация графики
3.2 Skin();
3.3 Triang::Triang(int ix1,int iy1,int ix2,int iy2,int ix3,int iy3,int ic);
Графическаа оболчка программы
3.4 Triang::MoveF();
Интерфейс для перемещения фигуры.
Перенос производится функцией Triang::MoveTo(int NewX, int NewY);
3.5 Triang::RotateTo(float a);
Интерфейс для поворота фигуры и сам поворот фигуры.
3.6Triang::MoveT();
Интерфейс для перемещения вершин.
Перенос вершин производится функциями Triang::MoveTo1(int NewX, int NewY);
Triang::MoveTo2(int NewX, int NewY); Triang::MoveTo3(int NewX, int NewY);
3.7 Triang::ChangeColor();
Интерфейс для изменения цвета и изменение цвета.
3.8 Triang::Show(); Triang::Hide();
Показывают и скрывают фигуру.
4. Листинг программы
#include <stdio.h>
#include <stdlib.h>
#include <graphics.h>
#include <math.h>
#include <conio.h>
#include <complex.h>
#include <bios.h>
enum Boolean {false,true};
class Triang {
protected:
int xm,ym,x1,x2,x3,y1,y2,y3,color;
Boolean Visible;
public:
Triang(int ix1,int iy1,int ix2,int iy2,int ix3,int iy3,int ic);
void Show();
void Hide();
void MoveTo(int NewX, int NewY);
void MoveTo1(int NewX,float NewY);
void MoveTo2(int NewX,float NewY);
void MoveTo3(int NewX,float NewY);
void MoveF();
void MoveT();
void RotateTo(float a);
void ChangeColor();
};
/////////////////////////////////////////////////////////////////////////
/////////////////////////////////////////////////////////////////////////
Triang::Triang(int ix1, int iy1, int ix2,int iy2,int ix3,int iy3,int ic)
{ color=ic;
x1=ix1;x2=ix2;x3=ix3;
y1=iy1;y2=iy2;y3=iy3;
xm=(int)((x1+x2+x3)/3);
ym=(int)((y1+y2+y3)/3);
Visible=false;
};
void Triang::Show()
{ setcolor(color);
line(x1,y1,x2,y2);
line(x2,y2,x3,y3);
line(x3,y3,x1,y1);
setcolor(4);
circle(x1,y1,1);
setcolor(13);
circle(x2,y2,1);
setcolor(1);
circle(x3,y3,1);
line(x1,y1,(int)((x2+x3)/2),(int)((y2+y3)/2));
line(x2,y2,(int)((x1+x3)/2),(int)((y1+y3)/2));
line(x3,y3,(int)((x1+x2)/2),(int)((y1+y2)/2));
Visible=true;
};
void Triang::Hide()
{ setcolor(getbkcolor());
line(x1,y1,x2,y2);
line(x2,y2,x3,y3);
line(x3,y3,x1,y1);
circle(x1,y1,1);
circle(x2,y2,1);
circle(x3,y3,1);
line(x1,y1,(int)((x2+x3)/2),(int)((y2+y3)/2));
line(x2,y2,(int)((x1+x3)/2),(int)((y1+y3)/2));
line(x3,y3,(int)((x1+x2)/2),(int)((y1+y2)/2));
Visible=false;
};
void Triang::MoveTo1(int NewX,float NewY)
{
Hide();
x1=NewX;
y1=NewY;
xm=(x1+x2+x3)/3;
ym=(y1+y2+y3)/3;
Show();
};
void Triang::MoveTo2(int NewX,float NewY)
{
Hide();
x2=NewX;
y2=NewY;
xm=(x1+x2+x3)/3;
ym=(y1+y2+y3)/3;
Show();
};
void Triang::MoveTo3(int NewX,float NewY)
{
Hide();
x3=NewX;
y3=NewY;
xm=(x1+x2+x3)/3;
ym=(y1+y2+y3)/3;
Show();
};
void Triang::MoveTo(int NewX,int NewY)
{int dx,dy;
dx=NewX-xm;
dy=NewY-ym;
Hide();
xm=NewX;
ym=NewY;
x1+=dx;x2+=dx;x3+=dx;
y1+=dy;y2+=dy;y3+=dy;
Show();
};
void Triang::RotateTo (float a)
{
int e;
int xr,yr;
do{
e=bioskey(0);
if((e==19200)||(e==20480)){
Hide();
Уважаемый посетитель!
Чтобы распечатать файл, скачайте его (в формате Word).
Ссылка на скачивание - внизу страницы.