c语言 流星雨的实现

上传人:枫** 文档编号:505057485 上传时间:2022-07-28 格式:DOC 页数:19 大小:111.50KB
返回 下载 相关 举报
c语言 流星雨的实现_第1页
第1页 / 共19页
c语言 流星雨的实现_第2页
第2页 / 共19页
c语言 流星雨的实现_第3页
第3页 / 共19页
c语言 流星雨的实现_第4页
第4页 / 共19页
c语言 流星雨的实现_第5页
第5页 / 共19页
点击查看更多>>
资源描述

《c语言 流星雨的实现》由会员分享,可在线阅读,更多相关《c语言 流星雨的实现(19页珍藏版)》请在金锄头文库上搜索。

1、题目:流星雨的实现学院:班级:姓名:学号:指导教师:时间:整理为word格式目录 一 课程设计目的2二 设计内容与要求3三 概要设计3四 详细设计4五 运行界面5六 设计总结15七 教师评语16整理为word格式一 课程设计目的程序模拟一组流星飞向地面的情境,地面用多行#来表示,流星用大写字母表示。二 设计内容与要求1 内容:程序产生一组流星(比如10个),从屏幕顶部下降飞向地面。2 一组流星中,每个流星的字符颜色是随机的,下降的位置是随机的,下降的速度也是随机的。一个流星下落只能去掉一个#号,当最后一行地面有#被去掉时,程序终止。三 概要设计 首先定义二维数组screen表示地面和天空,此数

2、组是一个24行81列的字符数组。上面的行表示天空,数组单元的值是空格;最下面的几行(如5行)表示地面,数组单元的值是#;整个屏幕的大小是80*25,即25行80列, 为了在输出最后一行时不换行滚屏,程序只能利用上面的24行空间。把数组定义成81列的目的是,每行的最后字符赋值成0,就可以按照字符串的方式输出每行文本了。 编写的程序在下降过程中,程序必须知道流星的字符、颜色、位置、速度,因此程序需要定义以下几个数组变量:存放流星字符的数组,存放流星字符颜色的数组,存放流星行位置的数组,存放流星列位置的数组,存放流星下降速度的数组。整理为word格式 输出时程序首先输出地面和天空,即输出定义的二维数

3、组screen中的字符串,前21行是空行,后3行是#号。这样screen2481的字符矩阵就与整个屏幕对应起来。然后随时机产生一组流星数据,包括字符、颜色、位置和速度。速度用一次下降多少行来表示,最大的速度是4。由于要随机产生这些数据,因此需要调用random函数。(random函数的原型是 int random(int num); 这个函数产生一个0num-1之间的一个随机数。 流星字符可以这样产生:random(26)+A; 流星字符的颜色可以这样产生:random(16)+1;流星下降的位置可以这样产生:random(4)+1;流星的行位置一开始都是1; 流星的列位置可以这样产生:ran

4、dom(80)+1;但要保证所有流星的列位置不能相同。调用random之前,用randomize()库函数进行初始化。 两个库函数都在stdlib.h文件中。)设置后,每个流星按照自己的速度下落,所谓的下落就是逐行移动流星字符: 在下一行新的位置上显示流星字符,在原来的位置上显示空格以便擦除流星字符,然后再延迟等待几十毫秒。这样循环往复就构成了流星下落的动画。 但要注意,流星的速度各不相同,而一次下落多行的流星也要逐行下落。如果流星的新位置所对应的screen的单元格的值是#,则表示撞到了地面。 这种情况下在流星的新位置上输出空格,擦除#号,并且对screen相应的单元赋值为空格,流星字符也要

5、赋值为空格,以表示流星消失。整理为word格式当screen23中任何一个单元格是空格时,程序终止。四 详细设计模块一:输入天空和地面,天空和地面都是静止的。模块二:产生一组流星,流星的表示。模块三:流行的颜色,位置,速度。模块四:若碰到#号,流星和#号同时消失。模块五:若第24行的流星被碰到,程序终止。流星的实现输入天空和地面产生一组流星流行的颜色,位置,速度若碰到#号,流星和#号同 整理为word格式五 运行界面1 程序框图2 程序清单#include #include #include 整理为word格式#include #include #define ROW24#define COL

6、81#define REAL100#define NUM10 #define SPEED4 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_groundREALCOL;int test = 0;int cycle_end

7、= 0;整理为word格式int word_endNUM;int list = 0;int beginNUM;int positionNUM;int wordNUM;int speedNUM;int main()int end_flag = 0;time_t t; srand(unsigned) time(&t);setSky();while(!(end_flag = check_last_row()for(int a=0;aNUM;a+)word_enda = 0;list = 0;cycle_end = 0;word_n_down();整理为word格式system(pause);retu

8、rn 0;static void setSky()for(int b=0;bREAL;b+)for(int c=0;cCOL-1;c+)sky_groundbc = ;sky_groundbCOL-1 = 0;for(int d=ROW-5;dROW;d+)for(int e=0;eCOL-1;e+)sky_groundde = #;sky_grounddCOL-1 = 0;整理为word格式static void display()gotoxy(0,0);for(int f=0;fROW;f+)printf(%s,sky_groundf);int random(int num)return(

9、rand() % num);int check_last_row()for(int g=0;gCOL;g+)if(sky_ground23g = )整理为word格式return 1;return 0;void word_n_down()for(int h=0;h= NUM)break;test = list-1;if(test 0)test = 0;if(check_last_row()整理为word格式system(pause);exit(0);for(int i=0;i= ROW)return 0;sky_groundbegin+test*speedposition = ;if(begi

10、n+list*speed = 19)整理为word格式for(int z=19;zROW;z+)if(sky_groundzposition = #)sky_groundzposition = ;*word_end = 1;cycle_end +;break;elsesky_groundbegin+list*speedposition = word;return 0;void gotoxy(int x,int y)COORD coord;整理为word格式coord.X=x;coord.Y=y;SetConsoleCursorPosition( GetStdHandle( STD_OUTPUT

11、_HANDLE ), coord );3、系统运行结果整理为word格式六 设计总结经过一个星期的上机实践学习,使我对C语言有了更进一步的认识和了解,要想学好它要重在实践,要通过不断的上机操作才能更好地学习它,通过实践,我也发现我的好多不足之处,首先是自己在指法上还不行,经常按错字母,通过学习也有所改进;再有对C语言的一些标准库函数不太了解,还有对函数调用的正确使用不够熟悉,还有对C语言中经常出现的错误也不了解,通过实践,使我在这几个方面的认识有所提高。虽然设计时完成了,但是我觉得其中还是由一些不足之处:1. 警告句。程序中缺少一些警告句,例如:“是否真的删除(整理为word格式y/n)?”。

12、2. 重名的情况。由于考虑的不周全,没有设计遇到重名的情况该怎么处理。3. 选择单一。我们设计的程序中,只设计了按名字选择,进行操作,忽略了重名的情况。短短的一周课程设计结束了,但是这段时间里,我又学到了更多C 知识,如:对象数组,string类,文件流等,同时我也被提醒以后办事的时候要认真,仔细,考虑周全。,也看到了团队精神和互帮互助的重要性。这一点会让我终生受益。通过实践的学习,我认到学好计算机要重视实践操作,不仅仅是学习C语言,还是其它的语言,以及其它的计算机方面的知识都要重在实践,所以后在学习过程中,我会更加注视实践操作,使自己便好地学好计算机。整理为word格式七 教师评语评阅教师: 评阅时间: 友情提示:本资料代表个人观点,如有帮助请下载,谢谢您的浏览! 整理为word格式

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 高等教育 > 其它相关文档

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号