C语言字符动画制作
先看以下链接的例子(115网盘)http://u.
请复制以上链接打开后,点左下角的电信下载,下载完后,完整大小是8.4M
里面是一个badapple高清带音乐同步的字符动画程序
请先看完,再向下翻。。。。。。。。
很早以前就有人用字符做动画。所谓字符动画就是用字符当像素来构图
字符动画的优点是可以在任何只要能定位输出字符的平台就能实现动画,即使在控制台下
既然能做动画,那只要加上键盘响应,就可以做字符游戏了,国外就有一个这样的游戏,不过那个游戏难度非常大
好了,如果仅仅为了制作这样一个动画,需要些什么知识呢?
不多真的不多,即使你C才学会不久,只要懂以下内容,你也能做一个:
1.屏幕定位输出字符
2.文件输入
3.时间控制
首先解释屏幕定位输出字符。如果你使用图形库,可以直接在屏幕上指定位置输出一个字符的话,那么这个问题就已经解决了。
不过如果你只会使用控制台,但只要你懂system("cls");一样可以实现,只要cls后,依次把一个个字符printf输出(这个函数需要stdlib.h),
应该补充空格和换行的地方就补充,这样也能实现字符的定位输出,你可以练习一下在屏幕上显示菱形、心形等练练手
但不建议你使用DirectX或者OpenGL,因为这两者输出字符并不方便,可能光查资料就耗费你很多时间,并且字符输出在这个环境下效率低下
然后是第二点,为什么要文件输入?很简单,先解释一下帧的概念。
一帧,指的是一个静态的画面。为了产生动画,我们要准备很多帧,定时快速地替换,从而产生“动”的效果
那,每帧的数据从哪里来呢?简单,就是从文件
我们现在要准备很多个格式相同的文件,假设我们用控制台吧,那么,每个文件就应该记录一个80*25的字符阵
每替换一帧,我们只需要读取一个新的文件,并且把里面的字符内容输出到屏幕上就可以了
为了能连续读取,我们可以把文件编号为0001.txt, 0002.txt等等,方便程序处理
最后,就是动画的关键了,我们需要对时间进行控制
因为现在的计算机速度的原因,对于读取这种小数据,如果你不加控制,一下子就读取完,瞬间一下子就把动画播放完,而你却什么都没看到
所以现在还要引入帧率这个概念。帧率(fps),表示每秒产生的帧的数目,一般来说,帧率越高动画越细腻越平滑。
一般来说,游戏会采用30 - 60fps,视频会采用10 - 30fps。
而这个动画,是视频类的动画,我们不需要太高的帧率,假设是30吧,1000/30 = 33.3毫秒,也就是说,每经过33毫秒左右的时间,我们就要替换一帧。
怎么得到这个时间呢?我们直接使用C库里的clock()函数就可以了,需要包含头文件time.h
最后一个问题,假设我们用30fps,那么我们需要准备多少个文件呢?
如果一个文件记录一帧,那么每秒有30个文件,那么一分钟需要1800个文件,而那个动画有3分半钟,那么大约需要6000多个文件
这个时候,你会发现,制作这个动画程序的难点(如果先不考虑音乐同步的话),并不是显示本身,而是怎么生成那6000多个文件
所以这里提供一个动画资源:https://bbs.bccn.net/viewthread.php?tid=329207
如果,你不是想做这种视频类的动画,而是游戏类的,那就和一般的图形没什么分别了,只是把像素用字符替换,
而像素的明暗度,我们可以使用不同的字符来表示,比如用逗号和点号表示比较明亮的像素点等等,
你会发现这种另类的图形也是很有趣的
[ 本帖最后由 御坂美琴 于 2010-12-17 21:40 编辑 ]