游戏开发乱弹——我的“编程史”(下)

来源:互联网 发布:mac 虚拟机 ubuntu 编辑:程序博客网 时间:2024/06/07 18:06
写这个系列文章的上篇时,我还在忙我们那个持续了一年多的“科研立项”。现在,我终于完成了那个该死的项目,并且宿舍也已经顺利进入网络时代了。现在可以随心所欲地上网聊天,下东西,看视频,看孟老师的博客,……,和写我自己的博客了!昨天到今天,我已经疯狂了两个晚上加一个下午了。在自己的机器上上网就是很带劲啊。

上次说到我带着自己的那本《编程黑马真言》来到了这所天津外国语学院的管理系。刚上大学的时候我对我们要上什么课程以及信息管理到底是要解决什么鸟问题还一无所知。但我并没有管这些,只是继续自己对编程的更深入的学习过程。

看《编程黑马真言》让我坚定了一个信念:要C++不要C!当时我的毕竟没有多少经验,对王轶男(那本书的作者)的说法是百分之百赞同。记得听说我们在大一下要学习C的消息之后,我给我们当时的班导师发了一封邮件,问她为什么我们不学C++而学老古董C。记得她告诉我C++多么多么难,什么不适合初学者之类的。现在我不得不承认我当时的浅薄,当时的我对C的理解很有限。

虽然如此,我还是决定好好学习一下C,因为毕竟我们要学那门课。刚开学不久,我就在学校的地摊上买了一本《C程序设计》,谭浩强的第三版,开始了我的C历程。也许是因为高中的时候已经看过C++的缘故,我学习C的过程非常顺利,没有遇到过什么特别大的障碍。记得第一次调试程序是在“信息岛”网吧里,我从网上下载了一个TC,然后对着那个蓝屏调试了三个小时的“猜数字”!我觉得当时坐在我旁边的人或许会觉得我是个神经病吧,竟然能在网吧这样的地方对着一个陈旧的DOS界面忙上三个小时。

那个“猜数字”不是我们的老师在上第一节Java课时要我们填的那个弱智“猜数字”程序,而是能在早年的电子词典上看到的一款智力游戏。游戏会生成4个不同的数字,玩家需要在有限的次数里猜出这4个数字,方法是随便输入4个数字,然后游戏会给出你有多少个数字是正确的,并且在正确的位置上;多少个数字正确但是不在正确的位置上,这两种结果分别用A和B来表示,玩家根据A和B的个数继续下一次猜测。这个游戏不难玩,但是对编程初学者来说是个不错的练习编程的素材。在我上高中时我已经用G-BASIC实现过这个游戏,但现在不同,我要用的是一种更难的语言——C。可能有人要问,一个如此简单的程序为什么会让我调上3个小时。说出来不怕人笑话,我是因为一个数组下标问题才在网吧调试了那么长时间。地球人都知道,C不会检查数组的越界访问。为了存储4个数字,我定义了两个数组,一个存放程序生成的数字,一个存放玩家输入的数字。通过比较两个数组里的数字就可以得出A和B的个数,并且输出。C里,如果你定义int a[4]这样一个数组,那么它有4个元素,下标从0到3;而在BASIC里,实际上用户定义的是一个有5个元素的数组,下标从0到4!刚从BASIC转到C的我以为C里面也是这样,所以两个数组我都定义成了int a[3],并把它们当作长度为4的数组来用。可是该死的C又不会检查数组下标越界!这两个数组都是直接定义在函数里面的,也就是说都是栈变量,一旦发生越界,影响到的可能是非常关键的数据。于是就有了我在信息岛的3个小时……高手不要笑话我。

从那以后的日子,每天晚上我几乎都是在学校机房度过的,一边上网,一边调试程序。那时候我最喜欢的网站是编程爱好者,还加入了好几个QQ群,专门讨论各种编程问题。我的编程技术在飞速进步。我现在回顾大学的这几年,也许当时的进步是最神速的。当时的我对编程几乎是完全疯狂的状态,脑子里想的全是代码。学校里经常有小贩过来买二手书籍,我花了一笔钱把2001到2003年的程序员杂志统统收集到手了。虽然很多文章我一知半解,但毕竟看多了也会有一些提高的,至少能长长见识。

在大学的第一个学期快要结束的时候,我已经明确了自己的目标:C,数据结构和算法,C++,Windows编程(使用Win API),VC++和MFC。并且随后我就买了蓝皮的严蔚敏版的《数据结构》,开始了算法的学习。在我上高中最迷VB的那段时间,徐旭曾经给我泼过冷水。他说:“编程并不是你想象的那么有意思的,到了大学你就知道了,有很多枯燥的算法要研究,到时候你就没有兴趣了。”(小样,最后我还是坚持下来了吧?)我不得不承认的是,他说得非常正确,数据结构的研究彻底打击了我的信心,它真的是一门非常难的学科,并且需要扎实的数学基础——数学正是我最不擅长的。那本书我没有看完,程序也没有编写多少,只是学了一点皮毛而已,仅仅知道了什么是线性表,队列,栈,树,图,会了少数几种排序算法。

不过数据结构的学习加强了我对结构化程序设计精髓的理解,并且进一步的,我开始对面向对象的思想有了更深入的理解。我决定等到我们学习数据结构课程的时候再继续研究它,而提前开始了我的最爱——C++!

大一的第一个寒假里,我得到了自己的第一台电脑。那真的是一个老古董:奔腾120的CPU,48M内存,1G硬盘。也许有人会笑话我连这么垃圾的电脑也会用,可要问我对哪台电脑最有感情,我会脱口而出:就是它!为了检验我的C能力,我在大年初一到初四晚上7点到10点编写了我的第一个真正有图形界面的,完整的游戏:贪食蛇!!!对,就是那个高中时代按暗下决心要做出来的贪食蛇。这次我成功了,而且很顺利,游戏成功运行了。当时的我,兴奋地不知道该说什么。那天我对自己说:将来一定要当程序员!

大一下学期一到学校,我就来到了马场道附近的天津图书大厦花了大价钱买下了巨著:《Thinking in C++》。程序员杂志上的书评对这本书的评价褒贬不一,但我仍旧认为它是我看过的最好的C++入门教程。书中专门有一章讲解面向对象的基本概念,正是那一章,让我真正理解了什么才是OO。理解了OO后,学习C++就顺利了许多,虽然C++不是一门纯粹的OO语言。因为有了自己的电脑,调试程序就方便了很多很多。那时的我开始天天泡在宿舍,面对一个已经过时太长时间的破本本写程序,或者玩游戏。现在还有当时的照片。

就在那个学期,我邂逅了我认为非常非常带劲的东西:Allegro!记得还是在学校的书摊上,我买了一本很老的《电脑爱好者》合订本,好像是99年的,上面还有很多关于用bat文件或者编写小程序来解决问题的文章。我永远都记得那篇文章的标题:《你好,游戏世界》。那篇文章介绍了Allegro这个开源的C游戏开发库,看了文章后,我几乎兴奋得要疯狂了。游戏开发,这个我曾经疯狂过的事物,现在又要回到我身边了!只不过这次我拥有的是真正的游戏开发利器,而绝对不是G-BASIC那种小儿科。我在网吧搜集下载了好长时间终于把DJGPP编译器和Allegro弄到手了。那个破本连个USB接口都没有,唯一可以和外界交流的手段只有红外线。通过老杰的本本,我把那20多M的东西全部传到我的机器上了。现在还想感谢他,那么耐心地让我把那么多东西一个一个传完。Build了一个多小时之后,经过很长时间的配置,我终于搞定了DJGPP + Allegro的游戏开发环境,并且编写了我的第一个Allegro程序。Allegro除了包含一个完整并且功能强大的图形库意外,还有MIDI和WAV库,可以播放MIDI和wav文件,这对当时的我来说简直是不可想象的。我近乎疯狂地研究着Allegro,编写一个又一个的程序来试验Allegro的功能。记得第一次听到我那破笔记本的破音箱里飘扬出来的由我自己的程序播放的MIDI音乐时,我都感动死了。

后来我就开始了我对Allegro游戏开发的研究,我也开始盘算着写个什么游戏。随后对Allegro资料的整理让我发现:Allegro可以用在Dev-C++上。当时我正为DJGPP编译出来的程序太大而郁闷,换到Dev-C++这个优秀的开发环境怎能不让我高兴?

后来就诞生了一部很无聊的作品:???(我也不知道应该怎么取名字)。游戏的创意来源于《疯狂坦克》和《百战天虫》类游戏,本来想做成一个那样的游戏,可是我怎么也不知道地形的破坏效果怎么实现。所以我把它制作成了一个很无聊的畸形游戏。游戏的主角是一个坦克(我用画图自己画的,坦克上插着一个旗子,上面写着318——我们的宿舍号),玩家需要调整炮筒的角度和发射的力度,以发射炮弹击中一个在空中漂浮的红红的心。也许游戏有一点什么寓意吧,呵呵。我还记得我把李果的一张照片当作游戏的背景,他的眼睛正好就盯着前面的一切:坦克,心。虽然很没有意义,很无聊,可是这个游戏还是让我兴奋不已,因为从那时候起,我对游戏开发已经有了一个系统的认识了。

那个学期我们正在学习C——一个我早已经熟悉的东西,因为自己已经对这些太熟悉了,我在同学中也算一个经验丰富的“高手”了。正是因为这个,我认识我的她——蔓蔓,虽然我不太想承认,但也许真的是C让我们在一起的。刚开始她老问我关于C的问题,后来越来越熟了,最后就在一起了。记得当时她最难以理解的就是双重循环,我讲解了老长时间她才明白(傻丫头)。不过,我总算在大学里经历了我的人生第一段感情。到现在都已经快两年了,我想谢谢她给我的两年的幸福(谢谢你,如果你在看这篇文章的话)。

后来的事,后来就开始研究Windows编程了,然后是浅显地接触了一下VC和MFC。后来就大二下了,回到了本部,开始研究Java,然后是那些“巨牛无比”,“大架构”的企业级Java开发,然后是开源框架:Spring,Hibernate,Struts,JSF之类的,也是我现在研究的东西。这些事情已经没有什么好说的了,因为已经远远没有了当初的那种激情。

徐旭说:“不要用自己感兴趣的东西赚钱。”我很同意这个看法,所以我决定考一个Java认证,当一个“巨牛无比”的企业级开发者。我感兴趣的东西?我到现在才发现,还是那种无忧无虑地研究C++和游戏开发以及底层技术的生活。我在Allegro的官方网站www.allegro.cc上看过一个游戏开发者的资料,他是一个服务器端开发者——说白了就是开发各种Web应用的程序员,但他在业余的时间里喜欢游戏开发。我很羡慕那种生活方式,也很向往那种生活。不知道未来会是怎么样的,但是那个关于游戏开发的梦从来没有消失过,Never!

如果你从头到尾看完了这篇文章,我非常感谢你,因为至少你对游戏开发或者我所经历过的生活感兴趣。希望你能把你想说的任何话都留在这里,让我知道你来过,你关心过我,或者哪怕你也是一个游戏开发的爱好者。

 
原创粉丝点击