用了三天时间,大概十个小时,终于把我的第一个游戏,弹球游戏从内核编程到图形声音包装做了出来,还是有很多感触的。 现在不怎么玩游戏了,但小时候特别喜欢玩,小学毕业升初中那会儿我同学都准备去报一个PASCAL编程班,我当时什么都不懂,还以为就 是编游戏,特别开心,立刻就跟过去报名了。 上课以后才知道什么叫编程,与同学不同的是他们大多数以前都学过BASIC编程,对程序都有基础,我却什么都不懂。 那时候老师教学方式和现在完全不同,上课只有一个目的,编程。对于语法,细节问题没有什么深究,考试都是开卷的,语法不懂可以看 书,但是算法却一定要自己想,我想一种结构化程序设计的思想应该就是那时打下的。 PASCAL后来学到数组函数文件就没学了,高中看过一点c语言,但是指针一直没有搞懂。 大学c语言课老师的教法我不敢苟同,搞得c语言只是一个用来考试的工具,他的实用性和趣味性给完全抹杀了。 当时一直在想,c语言到底怎么编游戏呢? 后来看了一些书,又在网上找了一些资料,发现游戏编程实在复杂,首先需要懂一门程序语言,c/c++,java各有优势。然后需要会用图形 库,比如OPENGL或者directX,然后是数据库,最重要的还是美工。什么ps,会声会影肯定要会。 很明显,上面的东西我一大半不会。 那我就不能编游戏了嘛?从文字到图形是一个怎样的飞跃? 普及一个常识,我们通常的编程是在文本模式下完成的,而游戏牵扯的图形编程必须在图形模式下实现,这就需要图形库。 很明显,openGL,directX这些大型图形库我都不会,那怎么样才能以最低的门槛成功的绘制图形呢? 上网找了半天,发现一款叫做easyx的软件可以把turbo c的图形库加载在visual c++6.0上,而TC的图形库编程还是很简单的,通过简单的 画线,画矩形,画圆就可以实现画图。 图形是游戏的基础,但是光有图还不行,还要实现运动,即动画,实现动画是一个很有挑战性的技术。 一般来讲,有三种实现动画的方法。 第一种,全局重画法,把动画分成一帧一帧的然后每一帧显示后延迟几毫秒,把前一张擦去,画后一张。这种方法重复劳动严重,不推荐。 第二种,局部重画法,即把整张图中变化的部分重画即可。我的弹球游戏1,2,3版本都是用的这种方法。
第三种,按位异或重画法,利用位运算中的异或运算重画,节约时间效率高并且不会覆盖背景,我的最终版本就是这种方法画的。 解决了动画,很大程度上就解决了游戏。 最后加入控制系统,判断系统,计时系统,等等,加上美工,就可以做出小游戏作品。 但是这样的游戏还是很不完善的,功能少,效率低,有时还会闪屏。解决这些问题我目前还不会,以后可以研究研究。 附录1:四个版本游戏的比较: V1.1:简单的上下移动,把程序的内核部分编好了。
V1.2:加入颜色元素,版可以上下左右移动,但是有较多BUG,是一个不完善的版本。  V1.3:加入开头效果,解决了大部分BUG,加入声音元素,使可玩性大大提高。  V1.4:图形界面重新设计,修复BUG,加入了进球特效,游戏趋于完整。 
总之,编一个游戏真不容易,我也只是兴趣爱好,有兴趣的同学可以和我一起,推荐一下百度的easyx贴吧,里面的教程挺好的,不要把c语言只当做一个考试工具,其实他是非常强大的! 附录2:游戏及源代码下载地址: http://www.rayfile.com/files/4a6629a6-9652-11e0-8913-0015c55db73d/
|