




下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、 流星雨的实现1 设计要求与功能介绍:编写程序来模拟一组流星飞向地面的情景。地面用多行#来表示,流星用大写字母来表示。程序产生一组流星(比如10个),从屏幕顶部下降飞向地面。一组流星中,每个流星的字符颜色是随机的,下降的位置是随机的,下降的速度也是随机的。一个流星下落只能去掉一个#号,当最后一行地面有#被去掉时,程序终止。2 设计思路: 首先定义二维数组screen表示地面和天空,此数组是一个24行81列的字符数组。上面的行表示天空,数组单元的值是空格;最下面的几行(如5行)表示地面,数组单元的值是#;整个屏幕的大小是80*25,即25行80列, 为了在输出最后一行时不换行滚屏,程序只能利用上
2、面的24行空间。把数组定义成81列的目的是,每行的最后字符赋值成0,就可以按照字符串的方式输出每行文本了。 编写的程序在下降过程中,程序必须知道流星的字符、颜色、位置、速度,因此程序需要定义以下几个数组变量:存放流星字符的数组,存放流星字符颜色的数组,存放流星行位置的数组,存放流星列位置的数组,存放流星下降速度的数组。 输出时程序首先输出地面和天空,即输出定义的二维数组screen中的字符串,前21行是空行,后3行是#号。这样screen2481的字符矩阵就与整个屏幕对应起来。然后随时机产生一组流星数据,包括字符、颜色、位置和速度。速度用一次下降多少行来表示,最大的速度是4。由于要随机产生这些
3、数据,因此需要调用random函数。(random函数的原型是 int random(int num); 这个函数产生一个0num-1之间的一个随机数。 流星字符可以这样产生:random(26)+A; 流星字符的颜色可以这样产生:random(16)+1;流星下降的位置可以这样产生:random(4)+1;流星的行位置一开始都是1; 流星的列位置可以这样产生:random(80)+1;但要保证所有流星的列位置不能相同。调用random之前,用randomize()库函数进行初始化。 两个库函数都在stdlib.h文件中。)设置后,每个流星按照自己的速度下落,所谓的下落就是逐行移动流星字符:
4、在下一行新的位置上显示流星字符,在原来的位置上显示空格以便擦除流星字符,然后再延迟等待几十毫秒。这样循环往复就构成了流星下落的动画。 但要注意,流星的速度各不相同,而一次下落多行的流星也要逐行下落。如果流星的新位置所对应的screen的单元格的值是#,则表示撞到了地面。 这种情况下在流星的新位置上输出空格,擦除#号,并且对screen相应的单元赋值为空格,流星字符也要赋值为空格,以表示流星消失。当screen23中任何一个单元格是空格时,程序终止。 3 程序框图4 程序代码#include#include /调用random时需用#include#includevoid main() char
5、 screen2481; struct chr char ch; /character int color,rank,line; /定义颜色 位置 速度 star10; int i,j,k,flag,flag1=80; for(i=0;i=8;i+) for(j=0;j=79;j+) /输出天空和地面 screenij= ; screeni80=0; for(i=21;i=23;i+) for(j=0;j=79;j+) screenij=#; screeni80=0; clrscr(); textcolor(5);/* for(i=0;i=23;i+) gotoxy(1,i+1); cprin
6、tf(%s,screeni);while(!kbhit()|flag1=0) randomize();for(k=0;k10;k+) /用random函数随机决定星星的颜色位置 速度stark.ch=random(26)+A;/控制星星的字符stark.rank=random(80)+1;/控制流星下落的位置stark.line=random(4)+1;/控制流星的速度stark.color=random(16)+1;/控制流星的颜色 flag=10; for(k=0;k0)/控制流星的达到下方后的运行情况,流星和#一起消失for(i=21;i=24;i+)for(k=0;k=i)gotoxy
7、(stark.rank,i);printf( );flag-;flag1-;else gotoxy(stark.rank,1+stark.line); textcolor(stark.color); cprintf(%c,stark.ch); delay(500); for(k=0;k0) /while(!kbhit().5 程序中遇到的问题和解决方案:要想随机决定星星下落的位置,速度和星星的颜色,要用到random函数,该函数以前没有接触过,要通过搜索加上老师的提示来解决。对于同一事物有不同方面的因素共同决定着,所以要定义多个数组共同来控制。6体会:这是一个由多方面共同控制事物的程序,要依次处理好每一方面,才能达到预想的结果。做
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 乙方违约房屋合同范例
- 农村老宅分家合同范例
- 2008新劳动合同范例
- 二手机械设备拆解合同范例
- 传媒公司订购合同范例
- 代采购服务合同范例
- 全屋订购合同范例
- 人保车险合同范例
- 付款欠款合同范例
- 公司欠款还款合同范例
- (一模)东北三省三校2025年高三第一次联合模拟考试 生物试卷(含答案)
- 金属熔融岗位培训课件
- 污水处理厂工程设备安装施工方案及技术措施
- 2025年海南海口市水务局招聘事业单位人员35人历年高频重点模拟试卷提升(共500题附带答案详解)
- 2025年关联公司资金往来协议
- 交警大队合同范本
- 产业转移课件-2024-2025学年高三一轮复习人教版(2019)地理选择性必修2
- 2025年02月中国科协所属单位公开招聘社会在职人员14人笔试历年典型考题(历年真题考点)解题思路附带答案详解
- 2025-2030年中国电动滑板车市场运行动态及发展规划分析报告
- 中考英语专题总复习-题型9省公开课一等奖百校联赛赛课微课获奖课件
- 河北省石家庄市栾城区冶河镇初级中学-励志主题班会-拒绝间歇性努力不做45青年【课件】
评论
0/150
提交评论