Void main ( ). { // создается три объекта , три невидимых точки

{ // создается три объекта, три невидимых точки

point A (150, 70);

point B; // координаты по умолчанию равны x=0 и y=0

point D (400, 200);

//инициализация графики

int dr = DETECT, // тип драйвера и адаптера - режим авто определения

mod; // режим работы адаптера

initgraph (&dr, &mod, "D:\\Borlandc\\BGI"); // -

// - перевод в графический режим

int errorcode=graphresult();

if(errorcode!=grOk){cout<<grapherrormsg(errorcode);

getch(); exit(0);}

// установка цвета

setcolor(7); // установка цвета для линий и символов

A.show (); // показать на экране точку А

getch (); // подождать до нажатия клавиши

B.show (); // показать на экране точку В

getch (); // подождать до нажатия клавиши

D.show (); // показать на экране точку D

getch (); // подождать до нажатия клавиши

A.move (); // переместитьточку А в начало координат

getch (); // подождать до нажатия клавиши

B.move(50, 60); // переместить точку B

getch (); // подождатьдо нажатия клавиши

*/

Рассмотрим класс “ пятно”

// определение класса spot находится в модуле spot.cpp

#ifndef SP

#define SP 1

#include “point.cpp”

class spot: public point { // класс spot производный от класса point

protected: //защищенные данные производного класса

int rad; // радиус пятна

int vis; // признак видимости пятна на экране

int tag; // признак сохранения образа пятна в памяти

char *pspot; //указатель на область ОП для изображения пятна

//(битового образа)

public:

spot(int xi, int yi, int ri):point(xi, yi) //конструктор производного класса с

//вызовом конструктора базового класса

{

int size; vis =0; tag =0; rad =ri;

size = imagesize (xi-ri, yi-ri, xi+ ri, yi+ ri);

// определяется объем памяти в байтах для

// для сохранения образа квадратного участка экрана, на котором будет

// изображено пятно

pspot=new char[size]; } //выделение памяти под битовый образ

~spot() //деструктор производного класса

{hide (); // удаление с экрана изображения пятна

tag =0;

delete []pspot;} // освободить память, выделенную под битовый образ

void show() //функция – изображения пятна на экране

{ if (tag ==0) // если в памяти нет битового образа пятна

//то его не может быть на экране

| //рисуем на экране и помещаем в память

{ circle(x, y, rad); // нарисовать окружность

floodfill (x, y, getcolor()); // заполнить произвольную замкнутую фигуру

// x, y -координаты точки внутри фигуры, последний

// параметр задает цвет границы

getimage(x-rad,y-rad,x+rad,y+rad, pspot);

// помещает в память копию прямоугольного фрагмента

// изображения – битовый образ

tag=1; // признак наличия образа в памяти

}

else // если пятно есть в памяти

if (vis ==0) //но его нет на экране

putimage(x-rad, y-rad, pspot, XOR_PUT);

// выводит в заданную область экрана копию изображения, размещенного в

// памяти последний параметр определяет способ копирования – если //изображение вывести на экран в то место, где уже есть тоже изображение, то //оно исчезнет

vis=1; // признак видимости пятна на экране для обоих случаев

}

void hide () // функция убирающая изображение пятна с экрана

{ if (vis ==0) //если изображения нет на экране

return;

putimage(x-rad, y-rad, pspot, XOR_PUT); // замазать изображение

vis=0;

}

void move (int xn, int yn) //функция перемещения пятна на экране

{ hide(); // убрать пятно в т. x,y

x=xn; y=yn; // координатам задать новое значение

show(); } // изобразить пятно в новой точке экрана

void vary (float dr) // функция изменяющая размеры пятна

{ float a;

int size;

hide(); // убрать изображение пятна с экрана

tag=0; // признак освобождения памяти

delete pspot; // освободить память, где находится битовый образ

a=dr*rad; // вычислить новый радиус

if(a<=0) rad =0;

else rad=(int)a;

size=imagesize(x-rad,y-rad,x+rad,y+rad);

//определить размер в байтах под битовый образ

pspot=new char[size]; //выделить память

show(); // изобразить пятно на экране

}

int& GetR() {return rad;} // функция возвращает радиус пятна

};


Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow
Сейчас читают про: