C语言流星雨的实现.doc

C语言流星雨的实现.doc

ID:50368388

大小:191.00 KB

页数:12页

时间:2020-03-08

C语言流星雨的实现.doc_第1页
C语言流星雨的实现.doc_第2页
C语言流星雨的实现.doc_第3页
C语言流星雨的实现.doc_第4页
C语言流星雨的实现.doc_第5页
资源描述:

《C语言流星雨的实现.doc》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库

1、HUNANUNIVERSITY程序设计训练报告题目流星雨的实现学生姓名毛宇锋学生学号201208060116专业班级信息安全一班学院名称信息科学与工程学院指导老师李丽娟2013年7月8日(一)程序要求及功能简介程序模拟一组流星飞向地面的情景。地面用多行#来表示,流星用大写字母表示。程序产生一组流星(比如10个),从屏幕顶部下降飞向地面。一组流星中,每个流星的字符颜色是随机的,下降的位置是随机的,下降的速度也是随机的。一个流星下落只能去掉一个#号,当最后一行地面有#被去掉时,程序终止,程序在下降过程中,程序必须知道流星的字符、颜色、位置、速

2、度。(二)基本算法思想说明定义一个二维数组screen[24][80],代表25行80列的程序界面,由于DOS界面在输出第25行的时候会发生滚屏的现象,所以只利用上面24行,通过sky数组和ground数组对screen数组进行初始化和更改。利用随机数产生一组十个流星的数据,包括流星的字符、出现位置、颜色和速度,分别保存在letter,lie,color,speed数组里。流星坠落的实现就是将上一行出现的字符在下一行出现并将上一行的字符更改为0,坠落的速度是每次替换的行数,替换的多则坠落的快,少则坠落的慢,流星的颜色可以用SetConso

3、leTextAttribute函数进行更改。(三)模块的功能及程序说明调用函数介绍load函数:初始化sky,ground,heng,lie数组,给他们赋初始值。make函数:用随机数制造一组流星的数据,包括流星的字符、颜色、初始位置、速度。combine函数:将经过初始化或者经过改变后的sky与ground数组赋给screen数组。output函数:程序界面的输出,将包含流星信息的screen函数输出到屏幕上。gotoxy函数:光标移动函数,将光标移动到初始位置重新输出以达到替换屏幕从而实现流星坠落的效果。这个函数也可以用clearsc

4、reen这个系统函数来代替,可是clearscreen函数会造成屏幕的闪烁,影响最终效果。fall函数:通过替换和替换的次数来实现流星在screen数组里的位置改变和改变速度的快慢,达到流星坠落的效果。exist_or函数:判断屏幕上是否还有流星,如果没有流星则产生新的流星。(四)算法流程图产生一组流星的数据初始化并输出经过数组screen根据流星的位置、颜色和下落速度对初始化的地面和天空进行改变,如果落到地面,则#与流星同时变为空字符否光标移动到(0,0),重新输出screen第24行的#被碰到是程序终止(五)核心源程序本程序的核心部分

5、是流星雨的制造和通过替换实现流星雨的下落,在源程序中分别被定义为make函数和fall函数。make函数通过随机数产生流星的字符、颜色、速度性质并传给其他函数进行运算,它所要解决的最重要的问题是如何使流星产生在不同的列和如何将列序号从小到大排列,使得在output函数里能通过SetConsoleTextAttribute函数给流星不同的颜色而不影响整个背景的颜色。解决第一个问题的方法是通过产生随机数逐次比较来筛选掉出现重复的流星列位置,解决第二个问题的方法是将所有产生的列位置进行冒泡排序。该函数的源代码如下:voidmake(charsc

6、reen[24][80],charsky[24][80],charletter[10],intlie[10],intheng[10],intcolor[10],intspeed[10],intexist[10]){inti1,i2,t,change,base=1;for(i1=0;i1<10;i1++){heng[i1]=0;letter[i1]=(abs(rand())%26+65);//随机产生一个字母作为流星color[i1]=abs(rand())%3;while(1)//保证流星不产生在同一列的筛选函数{base=0;t=(ab

7、s(rand())%80);for(i2=0;i2<10;i2++)if(t==lie[i2])base=1;if(base==0)break;}lie[i1]=t;speed[i1]=(abs(rand())%3)+1;sky[0][lie[i1]]=letter[i1];exist[i1]=1;}for(i1=0;i1<10;i1++)//每一列冒泡排序for(i2=0;i2<9;i2++){if(lie[i2]>lie[i2+1]){change=lie[i2];lie[i2]=lie[i2+1];lie[i2+1]=change;

8、}}}fall函数的主要作用是让流星以不同的速度实现逐行的替换,并且保证流星撞到地面时消失。流星的速度是产生一个大于0的随机数来作为循环最大值,在每一次下落中因为循环的不同导致第二次出现的位置

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。