//Движение прямоугольника по треугольному контуру.
//Динамические объекты.
//Движение прямоугольника по треугольному контуру.
//Статические объекты.
#include <conio.h>
#include <graphics.h>
#include <iostream.h>
#include <process.h>
#include <string.h>
#include <dos.h>
class graphworld
{int driver,mode,grerror,colb,bkcl;
char path[80];
public:
graphworld();
void closegraphworld();
};
graphworld::graphworld()
{strcpy(path,"c:\\turboc30\\bgi");
driver=0;
initgraph(&driver,&mode,path);
grerror=graphresult();
if(grerror!=grOk)
{cout<<"\nОшибка открытия графического режима";
abort;
}
setcolor(RED);
setbkcolor(BLACK);
cleardevice();
}
void graphworld::closegraphworld()
{cleardevice();
closegraph();
}
class location
{protected:
int x,y;
public:
location(int initx,int inity);
int getx();
int gety();
};
location::location(int initx, int inity)
{x=initx;
y=inity;
}
int location::getx()
{return x;
}
int location::gety()
{return y;
}
class point:public location
{protected:
int visible;
void setvisible(int pr);
public:
point(int initx,int inity);
~point();
virtual void show();
virtual void hide();
int getvisible();
void moveto(int nx,int ny);
};
point::point(int initx,int inity):location(initx,inity)
{
}
point::~point()
{hide();
}
void point::moveto(int nx,int ny)
{hide();
x=nx;
y=ny;
show();
}
void point::setvisible(int pr)
{visible=pr;
}
void point::show()
{putpixel(x,y,getcolor());
|
|
setvisible(1);
}
void point::hide()
{putpixel(x,y,getbkcolor());
setvisible(0);
}
class pramoug:public point
{int dx,dy;
public:
pramoug(int initx,int inity,int initdx,int initdy);
~pramoug();
void show();
void hide();
};
pramoug::pramoug(int initx,int inity,int initdx,int initdy): point(initx,inity)
{dx=initdx;
dy=initdy;
}
void pramoug::show()
{line(x,y,x,y+dy);
line(x,y+dy,x+dx,y+dy);
line(x+dx,y+dy,x+dx,y);
line(x,y,x+dx,y);
}
void pramoug::hide()
{int r;
r=getcolor();
setcolor(getbkcolor());
line(x,y,x,y+dy);
line(x,y+dy,x+dx,y+dy);
line(x+dx,y+dy,x+dx,y);
line(x,y,x+dx,y);
setcolor(r);
}
pramoug::~pramoug()
{hide();
}
void main(void)
{graphworld world;
int x = 150,
y = 100;
getch();
cleardevice();
pramoug pt(x,y,200,100);
delay(750);
pt.show();
do
{do
{x += 3; y++;
pt.moveto(x,y);
delay(5);
}
while(!(y >= 200));
do
{x--; y++;
pt.moveto(x,y);
delay(5);
}
while(!(y >= 400));
do
{x--; y -= 3;
pt.moveto(x,y);
delay(5);
}
while(!(y <= 100));
}
while(!(kbhit()));
getch();
world.closegraphworld();
}
Литература
1 Павловская Т.А. C/C++. Программирование на языке высокого уровня. СПб.: Питер, 2001. – 464 с.
2 Павловская Т.А., Щупак Ю.А. C/C++. Структурное программирование: Практикум. СПб.: Питер, 2002. - 240 с.
3 Культин Н.Б. C/C++ в задачах и примерах. СПб.: БХВ-Петербург, 2001. – 288 с.
4 Керниган Б., Ритчи Д., Фьюэр А. Язык программирования Си. М.: Финансы и статистика, 1985. – 384 с.
5 Бондарев В.М., Рублинецкий В.И., Качко Е.Г. Основы программирования. Харьков: Фолио, 1997 г. – 368с.
6 ГОСТ 19.701-90 ЕСПД Схемы алгоритмов, программ, данных и систем. Условные обозначения и правила выполнения.
7 ГОСТ 7.32-2001 Система стандартов по информации, библиотечному и издательскому делу. Отчет по научно-исследовательской работе. Структура и правила оформления.