问题的方法是将所有产生的列位置进行冒泡排序。该函数的源代码如下
ffall函数的主要作用是让流星以不同的速度实现逐行的替换并且保证流星撞到地面时消失。流星的速度是产生一个大于0的随机数来作为循环最大值在每一次下落中因为循环的不同导致第二次出现的位置不同在主函数中通过Sleep来加强屏幕的滞留时间从而加深了下落速度不同的效果。
fall函数的源代码如下
六实验结果
程序运行情况如图
f七设计体会
该程序在编译时困扰我的最大问题就是如何让屏幕清空重新输出。我曾经采用clearscree
清屏函数可是该函数在清屏时会使屏幕闪烁效果不好最终我从网上查找了相关资料得知了在turboC里面有gotoxy函数在进一步的学习中我得到了gotoxy在头文件中的源代码设计了该调用函数并学会通过光标移动重新输出数组。
在设计字符颜色时也经常出现很多不正常的地方要么整个背景都在跟着变颜色要么只有几个字符出现颜色要么一列是白色一列是红色在一遍一遍的更改并设置了比较复杂的判断条件后才得以实现效果。
由于对算法的不够熟悉和通过c语言编写较长程序的经验相对缺乏我的程序在设计的时候有很多语句不够简洁、语法不够规范的地方希望能在将来的学习中对此进行完善进一步加强我对C语言的理解最后谢谢李丽娟老师和两位助教在我编写程序时对我的帮助。
八源代码
i
cludestdioh
i
cludewi
dowsh
fi
cludetimeh
i
cludestdlibh
voidloadcharsky2480chargrou
d980i
the
g10i
tlie10初始化各数组数据voidoutputcharscree
2480i
tlie10i
tcolor10界面初始化
voidmakecharscree
2480charsky2480charletter10i
tlie10i
the
g10i
t
color10i
tspeed10i
texist10定义流星的字符、颜色、速度
voidfallcharscree
2480charsky2480i
tspeed10chargrou
d980i
texist10i
the
g10i
tlie10实现流星下降
voide
d
voidgotoxyi
txi
ty光标移动函数
voidcombi
echarscree
2480charstar2480chargrou
d980将grou
d数组与star数组结合起来形成scree
i
texist_orcharsky2480当屏幕上没有流星时自动产生新的流星
voidmai
charscree
2480sky2480letter10
i
tia0
i
texist10lie10he
g10color10speed10
chargrou
d980