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;i1<10;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;i2<10;i2++)

i

C语言程序模拟流星雨,C语言_流星雨的实现.doc相关推荐

  1. 8255a初始化c语言程序,8255A的c语言程序.doc

    8255A的c语言程序 8255A的c语言程序 [实例24]用8243扩展I/O端口 #include sbit ContrBit0=P1^0; sbit ContrBit1=P1^1; sbit C ...

  2. c语言程序如下,某C语言程序如下: #include stdio.h void main() { floa.._简答题试题答案...

    针对如下在IA-32+Linux+GCC平台上编译运行的C语言程序: struct Record { char name[5]; int code; short id; ...其他结构成员... } ...

  3. c语言实验分支程序设计二,C语言程序实验报告分支结构的程序设计(0页).doc

    C语言程序实验报告分支结构的程序设计(0页) 数学与软件科学学院 实验报告 学期:11至12___ 第_1 学期 2011年10 月 17 日 课程名称:程序设计基础教程-C语言 专业:2010级5_ ...

  4. c语言编程模拟选举,C语言编程题精选

    C语言编程题精选 C语言编程题精选 1. 编程实现对键盘输入的英文名句子进行加密.用加密方法为,当内容为英文字母时其在26字母中的其后三个字母代替该字母,若为其它字符时不变. 2. 编程实现将任意的十 ...

  5. c语言程序编写字体,c语言程序设计练习题

    c语言程序设计练习题 篇一:c语言程序设计基础单元总结与练习题及答案 <C语言程序设计>单元总结与练习题 答 案 单元一 程序设计宏观认识 单元总结提升 本单元中,核心内容有C语言程序框架 ...

  6. C语言程序项目计划书,C语言程序的设计课程的设计的计划书.doc

    C语言程序的设计课程的设计的计划书 C语言程序设计课程设计计划书一.目的1.熟悉并掌握C语言程序设计的基本方法与技能.2.掌握利用递归进行程序设计的方法.3.掌握对随机事件进行全程模拟的基本方法.4. ...

  7. 用c语言输出公差为1等差数列,(word)2012春江苏省高校计算机等级考试二级C语言上机题(C01)及其解答_张柏雄.doc...

    (word)2012春江苏省高校计算机等级考试二级C语言上机题(C01)及其解答_张柏雄 江苏省高等学校非计算机专业学生 计算机基础知识和应用能力等级考试上机试卷(2012春) 二级 C语言 试卷代号 ...

  8. 2013年10月20日江苏省高校计算机等级考试二级c语言,2012年10月14日江苏省高校计算机等级考试二级C语言上机题(C02)及其解答_张柏雄.doc...

    2012年10月14日江苏省高校计算机等级考试二级C语言上机题(C02)及其解答_张柏雄 [上机题命题评述]2012年10月14日C01套编程试题是求三位数的水仙花数及其反序数分别存入数组a和b.为本 ...

  9. 单片机 中断秒表 c语言程序,51单片机c语言的秒表设计.doc

    51单片机c语言的秒表设计.doc 课程设计报告 基于AT89C51单片机的秒表设计 院 系 电子信息工程学院 专 业 电子信息工程 1 姓 名 摘 要 本设计是设计一个单片机控制的多功能秒表系统. ...

最新文章

  1. AES加密时抛出java.security.InvalidKeyException:#160;Illegal#160;key#160;size#160;or#160;def...
  2. Systemd 入门及常用命令
  3. 双任务延时原理与空闲任务
  4. 实验三+067+冯艳芳
  5. js原生popup_JavaScript的popup框
  6. Gartner调查显示政府部门数字化转型尚处萌芽期
  7. INSTALL_FAILED_NO_MATCHING_ABIS: Failed to extract native libraries, res=-113
  8. 基于JAVA+SpringMVC+MYSQL的图书管理系统
  9. 如何安装Vmware ESXi 6.7(图文介绍)
  10. Flac3d v3.00.251
  11. 指针的运用——快慢指针
  12. python哪个版本好用-python用哪个版本好
  13. 涛思数据与优锘科技达成战略合作,可视化携手大数据引领物联网科技创新
  14. 暴漏React配置时报错Remove untracked files, stash or commit any changes, and try again.
  15. 计算机重新装xp系统软件,关于安装软件重启XP电脑后软件不见的处理方法
  16. mysql 求平均数 (AVG聚合函数)
  17. 「重磅」Python自创软件名字生成器:1.0-1.7
  18. tomcat闪退原因及解决方法
  19. div+css 制作表格
  20. IPv4地址分类(A类 B类 C类 D类 E类)

热门文章

  1. (重点)C#/Csharp桌面应用开发小作业小程序,测距仪,画圆,GDI画圆,画直线,绘制圆,绘制直线,绘制虚线,dashpattern的应用
  2. java给qq发消息_通过java给qq邮箱发送信息
  3. python观察者模式
  4. 1 Accuracy作为指标有哪些局限性
  5. dell optiplex 3050 aio 重装系统USB总线驱动安装不成功问题解决
  6. 什么是配煤?为什么要配煤?
  7. WIN10+MATLAB2018b+STK11.6+MATLAB_Connectors1.0.11安装记录
  8. sqoop导入数据遇到的参数问题 ,导出–staging-table
  9. selenium实战-同步网易云音乐歌单到qq音乐
  10. PWC普华永道2023助理软件工程师面经