游戏炮打飞机设计——计算机达人成长之路(11)连载

4、炮打飞机

那天,阳光特别灿烂,计算机们唱着欢快的蜂鸣声,欢迎着木鸿飞一行。木鸿飞心中荡漾着一股激情:“今天,我开始编程了!我将编写人生的第一个软件,第一个游戏软件!”

“雄赳赳,气昂昂,跨入了机房。”后来同学们是这么评价木鸿飞的,虽然木鸿飞与其他人一样,都是静悄悄地跨入机房,据后世好事者评价,木鸿飞那犀利的眼神,紧握的双拳,坚定的步伐,早已将他出卖,任谁在他身边,都能明显的感觉到,木鸿飞的小宇宙在燃烧,今天机房里面绝对不寻常!

进入机房,木鸿飞环视四周,一一扫过整齐排放的计算机,最终目光定格到一台286机型上,然后迈大步靠近,坐下,插入软盘,按下电源键,稍稍等待后进入DOS提示符。木鸿飞拿出笔记,输入了几个命令,每当他敲入一个回车,屏幕上就对应显示了一行英文,虽然这些英文句子并不都认识,但每个句子中都有显目的单词“error”。木鸿飞点点头,露出“果然如此”的神情,离开286,来到墙边一台被淘汰的“苹果机”前。

开机,等待启动,输入命令,苹果机的屏幕出现了全屏的字符输入界面。木鸿飞在键盘上输入:“print 1+1”,按下运行(RUN)键,屏幕显示:“2”。结果完全符合预期,木鸿飞松了一口气。

“木木,教材上使用的是以前的苹果机吗?”导弹目睹了木鸿飞的全过程,拿起教材问答。

“是的。我刚刚运行了11等于2进行测试,完全正确!”木鸿飞肯定回答,“幸亏这些老机器没有淘汰,不然就只有倚天屠龙,没有用武之地了。呵呵。”

历史其实有着惊人的相似性,木鸿飞不知道,早在十多年前的大洋彼岸,一个叫做“比尔·盖茨”的年轻人,与其伙伴开发BASIC语言解释程序,销售其产品时,这个年轻人运行的第一个程序就是“print 1+1”。正是那个“一加一等于二”,证明了比尔·盖茨设计程序的正确性,赚取了其人生的第一桶金,也造就了一个世界首富。十多年后的中国,同样是这个“一加一等于二”,拉开了木鸿飞编程的帷幕,撰写了其传奇的起点,从此木鸿飞在编程路上一路狂奔,渐行渐远。时间飞逝,又是十多年过去了,在这期间也不知道世界上还有多少年轻人,被“一加一等于二”所感召,踏上编程之路。我们行走在同一条道路上,这条道路时常万里无云、一马平川,激励着你前进,时常却又乌云密布、天旋地转,迷惑你走上歧途,或者中途退出。编程之路,是一条坎坷的路,充满着羁绊,每一步的前行都充斥的汗水;编程之路,是一条寂寞的路,除了寥寥行色匆匆的路人,就只有孤独相伴;编程之路,是一条乏味的路,枯燥的代码是它不变的景色。但我们相信,我们会用必胜的信念挑战磕磕碰碰;会学会与代码交流,一路将不再孤单;会透过我们的眼睛,观察掩藏在代码中的精灵,欣赏她们美妙的舞蹈。既然选择了这条路,就无怨无悔,让我们携手共进,去创造人生的辉煌吧!

一旦确定了编程工具,木鸿飞马上实施游戏软件的设计。他选择的是在D县一中历届学生中大名鼎鼎的“炮打飞机”程序。之所以称之为“大名鼎鼎”,是因为他之前,从D县一中走出的计算机专业大学生几乎都知道这个程序,所有的计算机粉丝都亲手敲过这段代码。记得多年之后,D县一中一个学长与木鸿飞见面,他望了望木鸿飞,用一种大家都知道的神情说到:“炮打飞机拉,大家都编过,我编的第一个程序就是炮打飞机。”。

由于教材上已经详详细细列举了炮打飞机的所有代码,所以与其说是“设计”,还不如说是“打字练习”。木鸿飞轻松的输入了50多行的代码后,按下“RUN”——解释运行键(注:BASIC是解释运行语言,不是编译运行语言),但是预期的游戏界面没有出现,取而代之的是一串英文提示和程序中一处反显提示。木鸿飞用仅有的一点点英语知识来阅读,察觉出有信息未定义,于是再回到程序中反显部分,仔细观察发现原来是关键字输入错误,修改后继续按下“RUN”键,如此大约反复五、六次后,终于界面终于发生了变化:在黑漆漆的屏幕上,一架相当简陋的飞机(图像显示:“-=< ”)从右向左缓缓飞过,下面是一个同样简陋的固定炮台(图像显示:“^”),当游戏玩家按下字母“a”时,一个由感叹号“!”描述的炮弹从炮台缓缓升起,冲向飞机。如果击中,则游戏爆机Over;否则可以继续发射炮弹,直到飞机到达最左端时,Game Over

 

炮弹飞机界面示意图,汉字和坐标系为解释,实际界面中无

这可能是世界上最简单的游戏了,同学们马上被吸引围观起来,有好事者开始试玩游戏,其中鸭子那个家伙居然一口气狠狠地玩了二十多次,颇有些游戏测试者的气质。更多的人则是充满着兴奋和疑惑,他们七嘴八舌的问道:

“木木,这是你编的游戏吗?”质疑逼人,木鸿飞点头。

“木木,这真的是你编的游戏吗?”质疑再度逼人,木鸿飞再次点头。

“木木,这真的真的是你自己刚刚编的游戏吗?”质疑再三逼人,木鸿飞再三点头。

“木木,这真的……

“停!这真的真的真的是我刚刚编的炮打飞机游戏!”。质疑四度逼人,木鸿飞赶忙提前辟谣,结束在琼瑶阿姨的小说中才会出现的爱情似问答。

其实不能责怪同学们的不信任,在没有学习BASIC语言的前提下,计算机编程对大家来说就如同仙女般遥远和神圣,如今仙女堕入凡尘,却对木鸿飞投怀送抱,怎能不使大家诧异和羡慕,不可避免在言语上质疑了。质疑过后,人们纷纷希望亲自设计这个程序,木鸿飞也不含糊,告诉大家几个基本的操作命令后,就将源代码显示在屏幕上,供大家对照输入。气质美女何丫丫继续当仁不让,充分利用平时的关系,强行招呼木鸿飞提供VIP式一对一指导。导弹等人看着羡慕,却也毫无办法,谁叫他的炮打飞机还没有运行成功的,只能咬咬牙,继续调试去吧。

不多久,一台台苹果机开始运行炮弹飞机,虽然只是个简单的游戏,同学们却照样玩的不亦乐乎。几分钟后,人们经历了最初的兴奋,渐渐冷静下来,于是有人开始思索游戏的设计来,真是一群喜欢打破沙锅问到底的家伙。

“为什么这些代码就可以炮打飞机呢?木木,你略懂吗?可以讲一讲不?”绍绍发问,首先打破全班游戏的气氛。

“错,我没有略懂。”木鸿飞回答。

“唉!真可惜,不知道为什么要这么设计。木木,知道就说出来,咱俩谁跟谁,不要藏私啊。”绍绍无不惋惜的说道。

“对啊,对啊,独乐乐不如众乐了,你如果知道就说出来,大家分享一下。”丫丫也想知其然知其所以然。

“这个炮弹飞机程序我真的没有略懂!”木鸿飞强调,然后继续强调:“我是全懂!”。四周立刻传来一群杀人的目光,丫丫甚至卷起衣袖,不顾美女的矜持,欲上演一场惊天地泣鬼神的“我的野蛮女同学”版暴力事件。

“我马上就解释。”见势不妙,木鸿飞急忙抢答,有效防止了暴力事件的升级,“其实整个程序就是一个循环,飞机从屏幕右边开始,到达左边结束。”

“循环是什么?”鸭子率先打断木鸿飞。

“循环就是把一个事情分割成很多相似的小步骤,这些小步骤除了一些具体的数值外,步骤和程序都是一样的。”木鸿飞看到鸭子紧锁的双眉,就知道解释工作不到位,赶紧停下来想了想,然后继续说道,“就好比走路,我们从那里走到这里,是一个事情。这个事情其实就是一个循环,可以分为若干个相同的小步骤,这些小步骤就是:抬起左脚,向前迈下,又抬起右脚,再向前迈下。OK,一次循环完成。下一次循环你继续抬左脚迈下,抬右脚迈下。以此类推,每次循环的内容都是一样的,不同的仅仅是起步的绝对位置。”

“就是把一个复杂的事情分为很多个简单的小步骤,我明白了。”鸭子难得清白了一回。

“对,就炮打飞机而言,每个循环需要完成三个内容:第一,飞机向前飞动一格。第二……”木鸿飞侃侃而谈。

“飞机怎么飞?”邵邵突然打断,提问道。

“这个问题暂时不要考虑,总之飞机需要向前飞动,至于如何实现的,这是下一步要考虑的内容,”木鸿飞看了看邵邵,继续解释道:“第二就是炮弹向上飞动一格。这个内容比较复杂,需要判断炮弹是否发送,炮弹是否打中飞机,炮弹是否已经到达顶部等等。第三就是接收我们在键盘上的按键,如果我们按下发送键,这里用字母a表示,就向上发送炮弹。”一边说,木鸿飞一边在纸上画出如下的图案:

 

导弹用手指了指“2.2”,问道:“是不是如果炮弹打中了飞机,那么游戏结束,否则继续游戏。”木鸿飞点头。

导弹又指着“2.3”问道:“是不是如果炮弹到达了最上面,那么炮弹消失,否则继续游戏。”木鸿飞再次点头。导弹也跟着点点头,表示懂了。

其他人思考了半天,最终参差不齐的点了点头,纷纷表示“略懂”,唯独鸭子仍然不解风情,一个劲的叫嚣:“不清楚,不清楚,那个飞机到底是怎么飞动的呢?”。直把木鸿飞气得咬牙切齿:“刚开始时不是说了吗,现在我们思考的是整个程序的设计流程,考虑的是大方面的东西,就不要管飞机怎么飞的这些具体细节。”

多年以后,木鸿飞曾指导过很多学生,有的学生很有天份,设计思想一点就透,而有一些却显得比较呆板,常常一个设计思想就需要思考半天,难道是他们不适合程序设计吗?木鸿飞曾为之交流过,发现很多这类学生的思维比较混乱:在设计整个系统框架,他们常常考虑某个具体细节如何实现;在设计A模块具体实现时,他们却又突然考虑起B模块中的对象。鸭子就是一个典型的例子,在设计炮打飞机整体流程图时,他总是陷入飞机动画中不能自拔,而一旦开始具体设计飞机动画时,他又总是担心炮弹如何打中飞机。对于这些学生,木鸿飞一般会先发大力气指导他们拨正混乱思维,果然,突破此屏障后的同学们编程能力大多突飞猛进。

其实这就是程序设计中最基础的思想,无论是划分模块还是编写模块,无论是选择对象还是设计对象,都务必保持清晰的头脑,分清楚当前工作的重心,先打好框架,再考虑细节,先设计蓝图,再加砖添瓦,打框架时不要被设计细节所蒙蔽,设计蓝图时不要被购买材料所羁绊。

木鸿飞一群人继续分析炮弹飞机的设计,其中大多数时候是木鸿飞讲述,其他人倾听,或者其他人提问,木鸿飞回答,偶尔导弹也会插上一两句,发表自己的观点。大家你来我去,分析得自得其乐,直到最后,突然听到圈外传来一阵鼓掌声,大家循声望去,杨老师不知什么时候出现在大家面前。只见杨老师满面笑容,翘起大拇指对木鸿飞说道:“不错,不错。虽然每届学生都编了这个炮弹飞机,但是把它的设计思路原原本本还原出来的就只有你一个!”

木鸿飞这家伙本来就有点洋洋自得,得到了杨老师的夸奖,更加喜洋洋的找不到灰太狼了,但又必须保持谦虚谨慎、戒骄戒躁的作风,只好强忍住笑容,露出一股丑陋的神情,假装谦虚的说道:“呵呵,我只是略懂,略懂,呵呵。”突然,木鸿飞迎上了丫丫那杀人的目光,赶紧改口,“略懂只是我的口头禅,其实我是全懂了!”

 

ps1: 《达人》从推出至今,受到的广大网友的欢迎,再此笔者对所有关注《达人》的网友们表示深深的感谢,没有你们的支持,《达人》很难走到现在。其实,大家在阅读时可能发现,《达人》的章节字数越来越多,从最初的每一章只有1K字,到后来的2K字,3K字,现在本章突破了4K字,还配了两个图和一个程序,文章的内容和难度远远超过了以往,笔者将一如既往,力争拿出一份优秀的《达人》。不过也要告知大家一个坏消息,由于写作难度逐渐增大,而且笔者的存稿已经发完,后面的更新不可能在像以前那么及时了,敬请所有喜欢《达人》的网友见谅,笔者将加快写作进度,力图尽快更新。

ps2:附上炮打飞机游戏试玩程序和源代码。这是在Borlandc++3.1  for dos上调试通过的,如果使用TC2.0编译,请自己稍做修改。另外windows环境已经不再支持这种字符界面,故请不用使用Vc++,C++builder或Dev-C++编译。

 

 

下载地址:

炮打飞机源代码: http://blog.51cto.com/attachment/201008/653596_1282634346.rar

炮打飞机试玩程序: http://blog.51cto.com/attachment/201008/653596_1282628650.rar(发送炮弹请点击字母“a”)
 

                 上一篇   目录   下一篇

你可能感兴趣的:(游戏,编程,框架,dos,basic,语言)