c语言 流星雨的实现.doc_第1页
c语言 流星雨的实现.doc_第2页
c语言 流星雨的实现.doc_第3页
c语言 流星雨的实现.doc_第4页
c语言 流星雨的实现.doc_第5页
免费预览已结束,剩余12页可下载查看

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

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类 文件流

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论