运动的太阳

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 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轨迹*/

相关文档
最新文档