梦幻吸血鬼和什么炼妖:高分就C++画圆函数

来源:百度文库 编辑:高校问答 时间:2024/04/29 14:02:23
14、编写一个程序实现点、圆的绘制,要求如下:
(1)定义位置类Cposition,有两个成员数据x,y,一个成员函数setposition设置位置;
(2)从Cposition派生点类Cpoint,增加成员函数show显示点,hide蕴藏点,
moveto移动点的位置;增加属性visible,表示点是否可以显示。
(3)从Cpoint派生圆Ccircle,增加成员函数area计算圆的面积,
增加成员数据radius,表示圆的半径;
(4)编写完整程序进行演示。
提示所有的图形绘制函数在graphics.h定义。

靠,没有类库调用么?

#define TRUE 1
#define FALSE 0
#include <graphics.h>
#include <stdio.h>
#include <conio.h>

class Cposition
{
protected:
int x,y;
public:
void setposition(int X, int Y) {x=X; y=Y; }
Cposition(int X, int Y) {x=X; y=Y; }
Cposition() {x=y=0; }
};

class Cpoint:public Cposition
{
protected:
bool m_bvisible;
public:
Cpoint(int X,int Y):Cposition(X,Y){;}
Cpoint():Cposition(){;}
virtual void show();
virtual void hide();
void moveto(int X, int Y)
{ if (m_bvisible) {hide(); x=X; y=Y; show();}
else {x=X;y=Y;} }
bool visible() {return m_bvisible;}
};
#define PI 3.1415926
void Cpoint::show()
{
putpixel(x,y,15);
m_bvisible=TRUE;
}

void Cpoint::hide()
{
putpixel(x,y,0);
m_bvisible=FALSE;
}

class Ccircle:public Cpoint
{
protected:
int radius;
public:
double area(){ return radius*radius*PI;}
Ccircle(int X,int Y,int R):Cpoint(X,Y) {radius=R;}
Ccircle():Cpoint() {radius=0;}
virtual void show();
virtual void hide();
};

void Ccircle::show()
{
setcolor(15);
circle(x,y,radius);
m_bvisible=TRUE;
}

void Ccircle::hide()
{
setcolor(0);
circle(x,y,radius);
m_bvisible=FALSE;
}

void main()
{
int GraphDriver; /* The Graphics device driver */
int GraphMode; /* The Graphics mode value */

GraphDriver = DETECT; /* Request auto-detection */
initgraph( &GraphDriver, &GraphMode, "" );
Cpoint a(10,20);
a.show();
Ccircle b(30,40,25);
b.show();
printf("area=%f",b.area());
Cpoint *p;
p=(Cpoint *)&a;
p->show(); p->moveto(50,50);
p=(Cpoint *)&b;
p->show(); p->moveto(50,50);
getch();
closegraph(); /* Return the system to text mode */

}