c语言流星雨的实现.docVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
题目:流星雨的实现 学院: 班级: 姓名: 学号: 指导教师: 时间: 目录 一 课程设计目的 2 二 设计内容与要求 3 三 概要设计 3 四 详细设计 4 五 运行界面 5 六 设计总结 15 七 教师评语 16 一 课程设计目的 程序模拟一组流星飞向地面的情境,地面用多行#来表示,流星用大写字母表示。 二 设计内容与要求 1 内容:程序产生一组流星(比如10个),从屏幕顶部下降飞向地面。 2 一组流星中,每个流星的字符颜色是随机的,下降的位置是随机的,下降的速度也是随机的。一个流星下落只能去掉一个#号,当最后一行地面有#被去掉时,程序终止。 三 概要设计 首先定义二维数组screen表示地面和天空,此数组是一个24行81列的字符数组。上面的行表示天空,数组单元的值是空格;最下面的几行(如5行)表示地面,数组单元的值是’#’;整个屏幕的大小是80*25,即25行80列, 为了在输出最后一行时不换行滚屏,程序只能利用上面的24行空间。把数组定义成81列的目的是,每行的最后字符赋值成’\0’, 编写的程序在下降过程中,程序必须知道流星的字符、颜色、位置、速度,因此程序需要定义以下几个数组变量:存放流星字符的数组,存放流星字符颜色的数组,存放流星行位置的数组,存放流星列位置的数组,存放流星下降速度的数组。 输出时程序首先输出地面和天空,即输出定义的二维数组screen中的字符串,前21行是空行,后3行是#号。这样screen[24][81]的字符矩阵就与整个屏幕对应起来。然后随时机产生一组流星数据,包括字符、颜色、位置和速度。速度用一次下降多少行来表示,最大的速度是4。由于要随机产生这些数据,因此需要调用random函数。(random函数的原型是 int random(int num); 这个函数产生一个0—num-1之间的一个随机数。 流星字符可以这样产生:random(26)+’A’; 流星字符的颜色可以这样产生:random(16)+1;流星下降的位置可以这样产生:random(4)+1;流星的行位置一开始都是1; 流星的列位置可以这样产生:random(80)+1;但要保证所有流星的列位置不能相同。调用random之前,用randomize()库函数进行初始化。 两个库函数都在stdlib.h文件中。)设置后,每个流星按照自己的速度下落,所谓的下落就是逐行移动流星字符: 在下一行新的位置上显示流星字符,在原来的位置上显示空格以便擦除流星字符,然后再延迟等待几十毫秒。这样循环往复就构成了流星下落的动画。 但要注意,流星的速度各不相同,而一次下落多行的流星也要逐行下落。如果流星的新位置所对应的screen的单元格的值是’#’,则表示撞到了地面。 这种情况下在流星的新位置上输出空格,擦除#号,并且对screen相应的单元赋值为空格,流星字符也要赋值为空格,以表示流星消失。 当screen[23]中任何一个单元格是空格时,程序终止。 四 详细设计 模块一:输入天空和地面,天空和地面都是静止的。 模块二:产生一组流星,流星的表示。 模块三:流行的颜色,位置,速度。 模块四:若碰到#号,流星和#号同时消失。 模块五:若第24行的流星被碰到,程序终止。 五 运行界面 1 程序框图 2 程序清单 #include stdio.h #include stdlib.h #include time.h #include windows.h #include conio.h #define ROW 24 #define COL 81 #define REAL 100 #define NUM 10 #define SPEED 4 int random(int num); static void setSky(); static void display(); int check_last_row(); void word_n_down(); int word_one_down(int begin,int position,int speed ,int word,int *word_end); void gotoxy(int x,int y); char sky_ground[REAL][COL]; int test = 0; int cycle_end = 0; int word_end[NUM]; int list = 0; int begin[NUM]; int position[NUM]; int word[NUM]; int speed[NUM]; int main() { int end_flag = 0; time_t t; srand((unsigned) time(t));

文档评论(0)

2749166188 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档