网站大量收购独家精品文档,联系QQ:2885784924

C语言_流星雨的实现.doc

  1. 1、本文档共12页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
C语言_流星雨的实现

HUNAN UNIVERSITY 程序设计训练报告 题目 流 星 雨 的 实 现 学生姓名 毛 宇 锋 学生学号 201208060116 专业班级 信息安全一班 学院名称 信息科学与工程学院 指导老师 李 丽 娟 2013年7月8日 (一)程序要求及功能简介 程序模拟一组流星飞向地面的情景。地面用多行#来表示,流星用大写字母表示。程序产生一组流星(比如10个),从屏幕顶部下降飞向地面。一组流星中,每个流星的字符颜色是随机的,下降的位置是随机的,下降的速度也是随机的。一个流星下落只能去掉一个#号,当最后一行地面有#被去掉时,程序终止,程序在下降过程中,程序必须知道流星的字符、颜色、位置、速度。 (二)基本算法思想说明 定义一个二维数组screen[24][80],代表25行80列的程序界面,由于DOS界面在输出第25行的时候会发生滚屏的现象,所以只利用上面24行,通过sky数组和ground数组对screen数组进行初始化和更改。 利用随机数产生一组十个流星的数据,包括流星的字符、出现位置、颜色和速度,分别保存在letter,lie,color,speed数组里。 流星坠落的实现就是将上一行出现的字符在下一行出现并将上一行的字符更改为0,坠落的速度是每次替换的行数,替换的多则坠落的快,少则坠落的慢,流星的颜色可以用SetConsoleTextAttribute函数进行更改。 (三)模块的功能及程序说明 调用函数介绍 load函数:初始化sky,ground,heng,lie数组,给他们赋初始值。 make函数:用随机数制造一组流星的数据,包括流星的字符、颜色、初始位置、速度。 combine函数:将经过初始化或者经过改变后的sky与ground数组赋给screen数组。 output函数:程序界面的输出,将包含流星信息的screen函数输出到屏幕上。 gotoxy函数:光标移动函数,将光标移动到初始位置重新输出以达到替换屏幕从而实现流星坠落的效果。这个函数也可以用clearscreen这个系统函数来代替,可是clearscreen函数会造成屏幕的闪烁,影响最终效果。 fall函数:通过替换和替换的次数来实现流星在screen数组里的位置改变和改变速度的快慢,达到流星坠落的效果。 exist_or函数:判断屏幕上是否还有流星,如果没有流星则产生新的流星。 (四)算法流程图 否 是 (五)核心源程序 本程序的核心部分是流星雨的制造和通过替换实现流星雨的下落,在源程序中分别被定义为make函数和fall函数。 make函数通过随机数产生流星的字符、颜色、速度性质并传给其他函数进行运算,它所要解决的最重要的问题是如何使流星产生在不同的列和如何将列序号从小到大排列,使得在output函数里能通过SetConsoleTextAttribute函数给流星不同的颜色而不影响整个背景的颜色。解决第一个问题的方法是通过产生随机数逐次比较来筛选掉出现重复的流星列位置,解决第二个问题的方法是将所有产生的列位置进行冒泡排序。该函数的源代码如下: void make(char screen[24][80],char sky[24][80],char letter[10],int lie[10],int heng[10],int color[10],int speed[10],int exist[10]) { int i1,i2,t,change,base=1; for(i1=0;i110;i1++) { heng[i1]=0; letter[i1]=(abs(rand())%26+65);//随机产生一个字母作为流星 color[i1]=abs(rand())%3; while(1) //保证流星不产生在同一列的筛选函数 { base=0; t=(abs(rand())%80); for(i2=0;i210;i2++) if(

文档评论(0)

haihang2017 + 关注
实名认证
内容提供者

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

1亿VIP精品文档

相关文档