c语言流星雨程序下载,c语言 流星雨的实现.doc

1 题目 流星雨的实现题目 流星雨的实现 学院 学院 班级 班级 姓名 姓名 学号 学号 指导教师 指导教师 时间 时间 2 目录目录 一一 课程设计目的课程设计目的 2 二二 设计内容与要求设计内容与要求 3 三三 概要设计概要设计 3 四四 详细设计详细设计 4 五五 运行界面运行界面 5 六六 设计总结设计总结 15 七七 教师评语教师评语 16 3 一一 课程设计目的课程设计目的 程序模拟一组流星飞向地面的情境 地面用多行 来表示 流星 用大写字母表示 二二 设计内容与要求设计内容与要求 1 内容 程序产生一组流星 比如 10 个 从屏幕顶部下降 飞向地面 2 一组流星中 每个流星的字符颜色是随机的 下降的位置 是随机的 下降的速度也是随机的 一个流星下落只能去掉一个 号 当最后一行地面有 被去掉时 程序终止 三三 概要设计概要设计 首先定义二维数组 screen 表示地面和天空 此数组是一个 1 24 行 81 列的字符数组 上面的行表示天空 数组单元的值是空格 最下面的几行 如 5 行 表示地面 数组单元的值是 整个屏幕 的大小是 80 25 即 25 行 80 列 为了在输出最后一行时不换行滚 屏 程序只能利用上面的 24 行空间 把数组定义成 81 列的目的是 每行的最后字符赋值成 0 就可以按照字符串的方式输出每行文本 了 编写的程序在下降过程中 程序必须知道流星的字符 颜色 2 位置 速度 因此程序需要定义以下几个数组变量 存放流星字符 4 的数组 存放流星字符颜色的数组 存放流星行位置的数组 存放 流星列位置的数组 存放流星下降速度的数组 输出时程序首先输出地面和天空 即输出定义的二维数组 3 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 相应的单元赋值为空格 流星字 符也要赋值为空格 以表示流星消失 5 当 screen 23 中任何一个单元格是空格时 程序终止 4 四四 详细设计详细设计 模块一 输入天空和地面 天空和地面都是静止的 模块二 产生一组流星 流星的表示 模块三 流行的颜色 位置 速度 模块四 若碰到 号 流星和 号同时消失 模块五 若第 24 行的流星被碰到 程序终止 流星的实现 输入天空和地 面 产生一组流星流行的颜色 位置 速度 若碰到 号 流星和 号同 6 五五 运行界面运行界面 1 程序框图 2 程序清单 include include include 7 include include define ROW24 define COL81 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 ground REAL COL int test 0 int cycle end 0 8 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 setSky while end flag check last row for int a 0 a NUM a word end a 0 list 0 cycle end 0 word n down 9 system pause return 0 static void setSky for int b 0 b REAL b for int c 0 c COL 1 c sky ground b c sky ground b COL 1 0 for int d ROW 5 d ROW d for int e 0 e COL 1 e sky ground d e sky ground d COL 1 0 10 static void display gotoxy 0 0 for int f 0 f ROW f printf s sky ground f int random int num return rand num int check last row for int g 0 g COL g if sky ground 23 g 11 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 12 system pause exit 0 for int i 0 i ROW return 0 sky ground begin test speed position if begin list speed 19 13 for int z 19 z ROW z if sky ground z position sky ground z position word end 1 cycle end break else sky ground begin list speed position word return 0 void gotoxy int x int y COORD coord coord X x 14 coord Y y SetConsoleCursorPosition GetStdHandle STD OUTPUT HANDLE coord 3 系统运行结果 15 六六 设计总结设计总结 经过一个星期的上机实践学习 使我对C语言有了更进一步 的认识和了解 要想学好它要重在实践 要通过不断的上机操作 才能更好地学习它 通过实践 我也发现我的好多不足之处 首 先是自己在指法上还不行 经常按错字母 通过学习也有所改进 再有对C语言的一些标准库函数不太了解 还有对函数调用的正 确使用不够熟悉 还有对C语言中经常出现的错误也不了解 通 过实践 使我在这几个方面的认识有所提高 虽然设计时完成了 但是我觉得其中还是由一些不足之处 1 警告句 程序中缺少一些警告句 例如 是否真的删除 y n 1 2 重名的情况 由于考虑的不周全 没有设计遇到重名的情 况该怎么处理 3 选择单一 我们设计的程序中 只设计了按名 字选择 进行操作 忽略了重名的情况 短短的一周课程设计结 束了 但是这段时间里 我又学到了更多C 知识 如 对象数组 string类 文件流等 同时我也被提醒以后办事的时候要认真 仔 细 考虑周全 也看到了团队精神和互帮互助的重要性 这一 点会让我终生受益 通过实践的学习 我认到学好计算机要重视 实践操作 不仅仅是学习C语言 还是其它的语言 以及其它的 计算机方面的知识都要重在实践 所以后在学习过程中 我会更 加注视实践操作 使自己便好地学好计算机 1 七七 教师评语教师评语 评阅教师 评阅时间

展开阅读全文

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值