计算机技术基础(c语言)课程设计 雪花飘落

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

计算机技术基础课程设计

C语言

设计报告

题目:雪花飘落

一、选题背景:

本例实现一个综合的雪花飘落现象,用户可以观察到雪花飘落的过程、用户通过控制输入雪花的大小,雪花的数量,飘落的速度等实现雪花飘落。

二、设计思想:

编程思路:首先在程序开始处,开通语句#include引入头函数,建立函数,然后定义结构体变量Snow,并且编写雪花的一系列操作的函数;最后在main函数的内部实现对各子函数的调用,实现雪花飘落的过程。

三.主要解决问题的方法及技术关键

1.用keyx,keyy函数完成对内存空间保存,用DrawSnow函数完具体实现,change函数改变雪的颜色,Choose选择演示内容

Init(void),Close(void)函数完成图形驱动和关闭等。

2.结构体函数实现图形的关闭,区域保存,在雪中输出文字等.

用While,for循环,If语句等完成雪花的设计,包括速度、颜色、显示标题、闪烁效果等。

3.用起泡排序、汉诺塔、双链表、起泡排序、基数排序、二分查找、二叉树遍历等设置雪花颜色。

四.程序流程图

五、程序清单:

/* 源程序*/

/***dsdemo.c演示系统***/

#include

#include

#define ESC 0x011b

#define ENTER 0x1c0d

#define DOWN 0x5000

#define UP 0x4800

struct Snow/*雪的一些参数*/ {

int x;

int y;

int speed;/*雪花的速度*/

}snow[100];

struct Star/*星星的一些参数*/ {

int x;

int y;

int color;

}star[200];

int key;/*按键变量*/

int keyx,keyy;/*选项键的坐标*/

int snownum=0;/*雪的个数*/

int size;/*保存区域的大小*/

int change=10;/*变颜色有关*/

void *save1,*save2;/*保存空间*/

void Copy(void);/*保存区域*/

void DrawSnow(void);/*具体实现*/

void Pr(void);/*输出字体*/

void Choose(void);/*选择演示内容*/

void DrawStar(void);/*最后的星星效果*/

void DrawBall(int x,int y,int color);/*画选择的球体*/

void Init(void);/*图形驱动*/

void Close(void);/*图形关闭*/

void main(void)

{

Init();

Copy();

DrawSnow();/*雪花飘动*/

Choose();/*选择演示内容*/

DrawStar();/*结束画面*/

Close();

exit(0);

}

void Init(void)

{

int gd=DETECT,gm;

initgraph(&gd,&gm,"c:\\tc");

cleardevice();

}

void Close(void)/*图形关闭*/

{

getch();

closegraph();

}

void Copy(void)/*保存区域*/

{

setcolor(0);

setfillstyle(SOLID_FILL,15);

fillellipse(200,200,4,4);

size=imagesize(196,196,204,204);/*定义保存图象区域大小*/ save1=malloc(size);/*申请空间*/

save2=malloc(size);

getimage(196,196,204,204,save1);/*保存雪花*/

getimage(96,96,104,104,save2); /*保存背景黑色*/

}

void Pr(void)/*在雪中输出文字*/

{

settextstyle(0,0,1);

if(change>=20&&change<=30||change>=50&&change<=60||

change>=100&&change<=110)/*闪烁效果*/

setcolor(YELLOW);

else

setcolor(BLACK);

outtextxy(250,250,"anykey to continue");

setcolor(change/10);/*变换颜色显示标题*/

settextstyle(0,0,3);

outtextxy(100,200,"Data Structure Demo");/*标题*/

}

/*显示雪花的具体过程*/

void DrawSnow(void)

{

int i;

int sx[62];

randomize();

for(i=0;i<62;i++) /*定义雪花的x坐标*/

sx[i]=(i+2)*10;

cleardevice();

while(!kbhit())

{

Pr();

if(snownum!=100)/*生成新的雪花*/

{

snow[snownum].speed=2+random(5);/*速度随机定,但不小于2*/ i=random(62);

snow[snownum].x=sx[i];/*随机取x坐标*/

snow[snownum].y=10-random(100);

}

for(i=0;i

putimage(snow[i].x,snow[i].y,save2,COPY_PUT);

Pr(); /*显示标题*/

if(snownum!=100)

snownum++;

setfillstyle(SOLID_FILL,15);/*画雪*/

for(i=0;i

{

snow[i].y+=snow[i].speed;

putimage(snow[i].x,snow[i].y,save1,COPY_PUT);

if(snow[i].y>500)

snow[i].y=10-random(200);

相关文档
最新文档