c语言,画矩形并使其旋转
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
目录
一、题目 (2)
二、问题描述 (2)
三、程序设计说明 (2)
1、应用程序功能的详细说明 (2)
2、应用程序的功能模块描述,各模块间的层次结构以及模块之间的信息交换说明 (3)
3、算法设计 (3)
4、参考文献 (3)
四、程序流程图 (4)
五、源程序代码 (5)
六、运行结果 (7)
七、结束语 (8)
一、题目:在屏幕上画一个矩形要求:每按一次键盘,该矩形转动45度。矩形的大小和转动的方向有键盘输入,并将输入的数据送文件保存,按回车键程序结束(功能延伸:改变数据文件的内容后,再根据数据文件里的数据绘制矩形)
二、题目内容的描述:
1、在屏幕上画一个矩形。
2、每按一次键盘,该矩形转动45度。
3、矩形的大小和转动的方向有键盘输入,并将输入的数据送文件保存,按
回车键程序结束。
4、功能延伸:改变数据文件的内容后,再根据数据文件里的数据绘制矩形。
三、系统设计说明
1、系统用到的功能分析:
程序设计一般由两部分组成:算法设计和数据结构,合理地选择和实现一个程序结构和处理这些数据结构有同样的重要性,主要包括如下:
#include
#include
#include
1、main主函数中调用scanf()函数,实现数据的输入,并通过调用save(),实现文件的保存,通过调用graphics.h画出正立的初始矩形。
2、save()文件写入函数
前面讲到的数据输入和输出是以中端为对象的,当程序关闭后,数据也丢失了,所以为了能随时查阅数据,必须将数据输出到磁盘文件上保存起来,使用时再从磁盘中读入到内存中,这就用到了磁盘文件的读写操作。
3、initgraph()画正立的初始矩形
从主函数传入定义矩形的高与长,还有输入转向命令0或1,控制矩形左转或右转45度。用initgraph(&GraphDriver,&GraphMode,“”)中的库文件来实现画矩形的算法。调用子函数画矩形并实现左右旋转功能。用line()函数按规律连接线条,画出矩形,调用floodfill函数对矩形填色。
4、moveto()实行矩形的左右转动
通过判断输入的数,控制矩形的左转或右转。
5、lineto()画直线函数
用当前颜色当前画线类型和宽度,在所示坐标之间画一条直线不修改光标当前位置。
6、floodfill()图形填充函数
用当前选定的刷子在指定的设备场景中填充一个区域。区域是由颜色color定义。
三、算法设计
1、主函数中调用scanf()函数,实现数据的输入。由输入的数据控制矩形的的大小,还有输入转向命令,控制矩形的左转或右转。
2、通过调用save(),实现文件的保存。
3、通过函数initgraph(),调用子函数,用line()画出矩形。
4、通过moveto(),实现矩形的左转动45度或右转45度。
二、系统包括的功能模块,模块功能描述,各模块间的层次结构(即相互调用关系)以及模块之间的信息交换问题。
1、本程序是一个简单的动画程序,利用turboc2.0软件来运行。
2、本程序功能:创建磁盘文件并保存写入磁盘的值,绘制矩形,由键盘输入来控制矩形的大小和转动方向,每次转动45度。按回车结束。
四、参考文献
1、《计算机绘图》刘静华、王永生主编,新编计算机绘图。北京航空航天大学出版社,1998。
2、《计算机图形学》何援军著。机械工业出版社2006-01-01版。
3、网络书库:。
程序流程图:
五、源程序代码#include
#include
#include
#include
void polygon(int n, int x, int y, int r, int color, float arg, int fillstyle); int main()
{
int GraphDriver;
int GraphMode;
float arg = 45, argd;
int a;
int direction;
int r;
int n = 4;
FILE *fp;
char szfilename[255] = {"c: \\cube.txt"};
GraphDriver = DETECT;
printf("Input size of cube: ");
scanf("%d", &r);
printf("Input direction(0-1): ");
scanf("%d", &direction);
if (direction == 0)
{
argd = 45;
}
else
{
argd = -45;
}
initgraph(&GraphDriver, &GraphMode, "");
polygon(n, 300, 200, r, 12, arg, 0);
while(1)
{
while(kbhit())
{
a = getch();
if (a == 27)
{
if ((fp = fopen(szfilename, "wt")) != NULL)
{
fprintf(fp, "%d\n%d\n", r, direction);
fclose(fp);