不是你想的那样:一个攻击网站的程序

这节课我们来试试开发一个简单的命令行小游戏,来完整的体验一次所谓的“开发过程”。

游戏设定是这样的:

这是一种棋盘类游戏,我们来猜测敌人战舰的位置,只要命中数发就可以击沉它们。

我们给这些战舰贴点标签……比如各种网站吧?所以,这就成了一个攻击网站的程序……捂脸。

游戏目标

我们要玩家以最少的次数攻击网站,把它击垮。然后我们根据玩家的猜测次数来进行评分。

大致设计

我们画一个7*7的网格来代表棋盘,然后在网格上安排随即的三个网站,每个网站占连续的三格,然后要求玩家猜测网站的坐标。

由于我们暂时不接触图形设计,所以我们要求用户输入比如说 A5这样的坐标,我们用字母代表纵坐标,数字代表横坐标。然后我们设定三种状态,分别是“没打中”、“打中!”以及“干掉它了!”

当玩家全部干掉棋盘上的网站,我们就计算玩家的得分情况。

游戏设计
游戏设计

游戏的流程图设计

我们需要类和方法来搞定这个游戏,但是具体都要哪些方法哪些类?恐怕在这之前我们还得先理顺一下游戏的流程问题:

游戏流程图
游戏流程图

好吧,我瞎划拉的东西实在是太让人难以读懂了,不过没关系,请领会精神。

第一个版本

看来我们可以使用 Game 和 WebSite 两个类。首先,我们先来个简单一点的,我们只用一维地图,也就是在一个长条里猜网站的位置——这样更易于理解和实现,现在我们尝试用伪代码来写出这个程序。

什么是伪代码?

伪代码不是代码,它是你用更接近自然的语言描述出来的代码模型,用来测试最简单的逻辑实现——在这个过程当中我们除了专注于设计本身外,也进一步注重了逻辑框架——但又避免了编程语言本身的语法困扰,让表达更加自然和迅速。

这里我们贴出一个伪代码的手写版本栗子给你:

伪代码
伪代码

下面我们再来一个用于辅助游戏主体的类:

最后,虽然我们说要尽量远离 main 文件,但这次为了方便,我们还是把游戏运行直接写在了入口里:

好吧我承认WebSite 类并不是完全写出来的,因为屏幕要截图,篇幅等问题我只是写了自检这一个方法,不过没关系,主要在于让你领会写伪代码这个过程。

根据伪代码写出真正的代码

好了,再三演算了伪代码的逻辑过程,确定没有什么问题之后,就可以用真正的代码来实现它了:

游戏执行过程
游戏执行过程

由于没有 GUI 界面,所以看起来也不会怎么高大上……但我们通过这个简单的版本走了一遍完整的开发流程。

记住:

在实际开发当中,你写好的伪代码是什么样子,那么就要把代码写成什么样子——我相信你的灵光乍现绝对值得关注——但你还是找个小本子先写下来为妙。如果你真的顺手就在你的代码里增加了其他并没有预计的功能,那最终实现出来的代码可能就有了奇奇怪怪的 bug。

所以说,一步一个脚印——先写出伪代码的实现,原始目的达成,再进行下一步——添加更多一个新功能……这样会让你的代码健壮很多。

发布者:R0uter

如非声明,本人所著文章均为原创手打,转载请注明本页面链接和我的名字。

加入对话

1条评论

电子邮件地址不会被公开。 必填项已用*标注