#include <iostream> using namespace std; class Figure { public: void erease() //定义擦除函数 { cout<<"Figure's erase is being called"<<endl; //提示基类的擦除函数正在被调用 system("CLS"); //清除矩形画三角形 } void draw() //定义绘制函数 { cout<<"Figure's draw is being called"<<endl; //提示基类的绘制函数正在被调用 } };
class rectangle:public Figure //以public的方式声明派生类rectangle {public: void show(); void draw() { cout<<"Make a rectangular"<<endl; //提示绘制了一个矩形
for(int i=0;i<length;i++) cout<<"*"; cout<<endl; for(int i=0;i<width;i++) { cout<<"*"; for(int j=0;j<length-2;j++) cout<<" "; cout<<"*"<<endl; } for(int i=0;i<length;i++) cout<<"*"; cout<<endl;
} void center() //成员函数调用erase和draw { erease(); cout<<"rectangle's erase is been called"<<endl; draw(); cout<<"rectangle's draw is been called"<<endl; } private: int width; int length;
};
void rectangle::show() { cin>>width; cin>>length;
}
class triangle:public Figure //以public的方式声明派生类treangle { public: void display(); void draw(); { cout<<"Make a treangle" <<endl; //提示绘制一个三角形 for(n=1;n<=r;n++) { for(k=0; k <r-n;k++) { cout<<" "; } cout<<"*"; for(k=1;k <=2*n-2;k++) { if(n != r) { cout<<" "; } else { cout<<"*"; } } if(n != 1) { cout<<"*"; } cout<<endl; }
cout<<endl;
} void center() { erease(); cout<<"triangle's erase is been called."<<endl; draw(); cout<<"triangle's draw is been called."<<endl; } private: int n; int j; int k; int c; int r;
};
void triangle::display() { cin>>n; cin>>j; cin>>k; cin>>c; cin>>r; }
int main() //定义主函数 { rectangle r; triangle t; cout<<"Please input twice the rectangle's width ang lenth:"<<endl; r.show(); r.center ();
cout<<"Now striking the any key erase to drawing"<<endl; cout<<endl; cout<<endl; system("PAUSE"); cout<<"Please input the n and c:"<<endl; t.display(); t.center ();
return 0;
你要什么样的绘图?想“画图软件”那样?那就不是这里能帮你解决的了。
类库的OOP思想已经基本都完成了,你要实现的就是派生后的类,根据不同的图形(类)定义好需要的参数(比如正方形是边长、长方形是长和宽、圆是半径等等),然后在draw里实现就好。
你给出的类里已经有基于文本输出形式的图形绘制功能了。你还有需求。。。这个就不是C++刚刚起步的问题了。
简单的绘制矩形和三角行怎么改啊!
哈哈,怎么又是你?上次赚了你60积分很不好意思。本来想帮你彻底解决下的,但是绘图的问题不太好解决。我感觉这道题的主要意图就是让你明白虚函数。图形的输出感觉你写的差不多了;把重点放在虚函数那块吧。
嗯!上次看你的还有宏什么的有点晕。
于是就自己参考者写写了
现在又不知如何去真正实现画圆功能了
求解!
@Playboy88:
#include "stdafx.h"
#include <graphics.h>
#include <conio.h>
void main()
{
initgraph(640,480);
setcolor(YELLOW);
setfillstyle(GREEN);
fillcircle(100,100,50);
fillcircle(200,200,50);
getch();
}
@Playboy88: 嘿嘿,你随便百度下载一个EasyX。将其解压后将.h文件放到你的vc6.0(vs2008)的Include目录下,lib文件放到lib文件下(不建议这样做)。建议你将下载到的.lib和.h文件放到你建的工程目录下。遇到问题可以百度,这本身也是一项本领。有了这个开源库之后就可以如下编写程序:
我是把下载到的.h文件和.lib文件放到工程目录下的:
#include "stdafx.h"
#include "include\graphics.h"
#include "conio.h"
void main()
{
initgraph(640,480);
setcolor(YELLOW);
setfillstyle(GREEN);
fillcircle(100,100,50);
fillcircle(200,200,50);
getch();
}
这个也是我根据网上的程序,自己试着琢磨出来的,fillcircle的三个参数前两个是圆心,第三个是半径。
我也是接到你的问题后才学会的。这里有一篇文章的连接,关于EasyX的用法,感兴趣的话你可以尝试下。http://wenku.baidu.com/view/4eda60bffd0a79563c1e721b.html
其实这种开源软件多的是。但是正规项目里一般是不让用的,一是因为使用开源软件的项目理论上本身也需要开源;二是万一出现了bug难定位。
我们私下里出于兴趣学习是可以的。
希望能帮到你。
加油!