JavaScript程序设计:基础·PHP·XML
上QQ阅读APP看书,第一时间看更新

2.6.1 Greg's Gambits:创建填字游戏

作为小孩或成人,你很可能玩过Mad Libs填字游戏。这个游戏要求玩家想出可以插入故事中的单词,并且大声朗读时可能非常好笑。玩家输入的单词可以是名词、动词、形容词、副词、专有名词等。这里将创建一个非常类似的游戏,称为Greg's Tales。

2.6.1.1 开发程序

作为开始,我们将编造一个故事(我们的故事),然后找出要用户以自己的单词代替的单词。在做练习时你可以编造你自己的故事,但是现在使用以下故事:

要编制这个游戏,我们必须决定要使用哪些变量和获得最终目标要采取的步骤。对此,我们使用非常一般的伪代码描述如下:

·声明变量

·识别每个变量的词性(即如何向玩家描述这个单词)

·为变量请求输入

·输出故事

在逐渐完善这个描述之前,我们先从需要的变量及其描述开始。

在编造这个故事时,我们可以设想以下几种可能的结局:

·结局1:"The×××××(monster)and×××××(name)became best friends and lived in×××××(name's)house happily ever after."

·结局2:"The×××××(monster)overpowered×××××(name)and gobbled down all the×××××(food)and×××××(drink)in×××××(name's)refrigerator."

·结局3:"×××××(name)screamed mean things at the×××××(monster),causing the×××××(monster)to turn and run back to the woods,never to be seen again."

2.6.1.2 编写代码

这个网页将成为Greg's Gambits网站的一部分,以后我们也将为每个游戏创建一个新网页。现在,我们从一个简单网页开始,声明必需的变量,显示游戏标题及其说明。这个网页的对应文件称为gregs_tales.html,并且可以在Student Data Files中找到。

这里列出的JavaScript和HTML代码只是显示游戏的开始页面,网页本身应当有一种方法让用户开始游戏。注意第30行的按钮显示在页面的内容区域,当用户单击这个按钮时,应当发生一些事情。在这种情况下,按钮的标题是它的值(“click to begin”),并且当用户单击时将调用JavaScript函数startGame()。这是编写JavaScript程序的重要方式,以使实现程序代码和网页之间的通信。一旦单击了这个按钮,程序控制就跳至第7行的函数startGame(),执行花括号内(即第8~14行)的代码。当然,这个函数现在只是初始化变量的值。我们将为这个函数添加代码,当然你也可以将下面的代码添加到gregs_tales.html文件中。

网页现在看起来像这样:

然后添加提示,将这些代码放在第8行之后。其中,变量pronoun取决于变量gender:

现在,我们处理变量gender。需要考虑用户可能录入Boy、BOY、boy或其他可能,或者甚至是拼错的单词,对于girl也一样。要关心的一件事情是:如果玩家想要故事的英雄是男孩,那么录入的第一个字符将是b或B;如果用户想要英雄是女孩,那么第一个字符是g或G。本书后面将学习处理所有可能的输入,但是现在假定玩家录入的字符串起始于b或g。另外,若玩家选择男孩,则变量pronoun应该设置为“he”;若玩家选择女孩,变量pronoun应该设置为“she”。对于这种情况,可以使用条件操作符,并且这个测试gender输入的语句要放在提示输入gender的语句之后。如果gender内容的第一个字符是b或B,那么gender设置为“boy”并且pronoun设置为“he”;如果gender内容的第一个字符是g或G,那么gender设置为“girl”并且pronoun设置为“she”。

2.6.1.3 charAt()函数

要做的第一件事情是判断gender的第一个字符是b还是g,我们可以使用一个内置JavaScript函数做这件事。函数charAt()返回字符串中任何指定位置的字符,而现在想要返回第一个位置上的字符。这个函数的语法如下所示:

现在要访问的字符串是gender;index指的是要访问字符的位置,而现在要访问字符串的第一个字符,其位置是0。我们需要一个变量保存这个函数的返回值,因此使用一个新变量letter。也就是,把函数charAt()的结果存储到letter中。然后使用条件操作符,根据letter的值将gender设置为“boy”或“girl”。其代码看起来像这样:

然后,使用条件操作符,根据gender的状态将变量pronoun设置为“he”或“she”,如下所示:

2.6.1.4 完成代码

通过添加代码,我们可以使用玩家录入的单词和3个可能的结局完整地显示这个故事。这个代码将在最后一个提示之后,并且在函数start_game()的结束花括号之前:

现在我们将所有的相关代码放在一起:

这里是一些在给定输入情况下的输出样例:

输入:

输出:

输入:

输出: