运动的太阳
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
运动的太阳系
白少川 贾秋生
09电气3班
2009445099,2009445239
一 课题分析
1.1 设计要求
1.1.1 星体运动
形体的坐标随着时间而改变,切沿椭圆轨迹然地球运动,star1沿直线运动。
1.1.2 字体颜色变化 程序中程序名称文字的颜色随着时间而变化。 1.2 实现功能
一.整个程序由密码确认和星系动画两部分系统组成,在输入密码正切的正确下才可进入星系的动画。
1. 密码起初设置为123。在输入正确的条件下进入星系动画,错误时提示再次输入并提
醒剩余输入次数,若输入次数超过限制的次数,则程序陷入死循环。
2. 太阳系中包含一个太阳和五个行星,其中可以分为四种星体,第一种为太阳,第二种
为地月系,第三种为按照椭圆轨道运行的其他行星,第五种为和太阳并列的另一恒星。真个星系中所有星球下面均有文字标注。并且在最后有程序的名字。
⑴ 太阳颜色参数设置为黄色,在屏幕正中间不动。
⑵ 地月系包括地球和围绕它运动的月球,其中地球可以显示出经纬度和运行轨迹,颜色参数为蓝色。以椭圆轨迹围绕太阳运动。月球以椭圆轨迹绕地球运动。
装
订
线
⑶其他行星包括star1 star2 star3,其中由于为了防止阻碍其他星体的运动,只画出了star2的运动轨迹。
⑷最后一种为另一恒星star4,以一条直线从屏幕划过,并且在运行的过程中半径逐渐变小,从而显示出太阳系是“运动的太阳系”。
⑸程序的名字以变化颜色的英文组成。
二整体设计
2.1框架设计
#包含的头文件;
宏定义参数;
定义的全局变量;
对子函数的声明;
主函数
{
……
密码系统;
……
星系系统;
……
}
void star1()
{
……
}
void star2()
{
……
}
void star3()
{
……
}
void star4()
{
……
}
void draw_earth()
{
……
}
void draw_sun()
{
……
}
void zi()
{
……
}
2.2 功能设计 通过全局变量的改变和do~while 语句的循环改变星体的大小,位置以及字体的颜色。 三 详细设计
3.1 程序编写
#include
#include
#include
#include
#include
#include
#include
#define PI 3.14159
double sita=10,r=20;
int x=100,y=200;
void star1();
void star2();
装
订
线
void star3();
void star4();
void draw_sun();
void draw_earth();
void zi();
int z;
main()
{
int gmode=VGAMED,gdriver=VGA,midx,i,cx=1,cy;
int key,a,j;
initgraph(&gdriver,&gmode,"d:\\tc\\bgi"); /*好像是必要的驱动,图形家在模式*/
printf("please input the key:\n"); /*输入密码才能进入*/
scanf("%d",&key);
for(j=6,a=0;j!=0;a++)
{
if(key==123) break; /*密码设定为123*/
else
{
printf("the key is wrong!please input again(left %d times):\n",--j-1); /*提醒输入剩余次数*/
if(j==0)
for(;;) /*输入密码超过次数程序陷入死循环*/
printf("error!!!\t");
scanf("%d",&key);
}
}
do /*主函数中动画参数和运行原理*/
{
setactivepage(1); /*将第1页置为作图页*/
clearviewport();
setcolor(BLUE);
setfillstyle(SOLID_FILL,BLACK); /*地球的轨迹*/
setcolor(GREEN);
setfillstyle(SOLID_FILL,BLACK); /*star2的轨迹*/ fillellipse(300,180,150,25);
draw_sun(); /*画太阳*/
draw_earth(); /*花地球*/
star1(); /*画star1*/
star2(); /*画star2*/
star3(); /*画star3*/
star4(); /*画star4*/
zi();/*写字*/
setvisualpage(1); /*将第1页置为显示页*/
setactivepage(0); /*将第0页置为作图页*/
clearviewport();
setcolor(BLUE);
setfillstyle(SOLID_FILL,BLACK); /*地球的轨迹*/ fillellipse(300,180,200,7*10);
setcolor(GREEN);
setfillstyle(SOLID_FILL,BLACK); /*star2的轨迹*/ fillellipse(300,180,150,25);
draw_sun();
draw_earth();
star1();
star2();
star3();
star4();
zi();
setvisualpage(0); /*将第0页置为显示页*/
}
while(!kbhit()); /*不按键时重复上述过程*/
getch();
closegraph(); /*关闭程序*/
}
void star1()
{
x=x+3; /*star1的x轨迹*/