游戏设计中的程序结构

2017-09-30 22:56陈凯
中国信息技术教育 2017年17期
关键词:恶魔金币洞穴

陈凯

初学程序设计者很难真正体会设计一个“有用”程序的完整过程,因为他所遇见的大部分程序设计任务,其实都是为了便于学习者入门而被精心构造好的。例如,通过判定一个数的奇偶性,来熟悉分支结构;通过1+2+3+4+……+100的累加,来熟悉循环结构。一般来说,在讲解程序代码语法的时候,程序结构就自然而然地呈现在眼前了,或者说,为了讲程序结构,不得不先引入代码或伪代码。对于一个从没有接触过编程和算法的初学者来说,他所面对的就是这些所谓的需要解决的任务,其实很难算得上是真正的数学问题,因而既缺乏趣味性,又不太容易给人以解决任务的成就感。也有人想从现实生活中寻找一些能引入程序结构的问题,这当然是有益的探索,但带来的问题也不少,生活实景的复杂性和不确定性使得生活中实际问题的描述变得相当复杂,而为了讲解程序结构而特意构造出来的问题,往往因为忽略了诸多生活细节,多少让人感觉纯粹得有点不真实。然而,却有一个简单、纯粹而“真实”的可用于体验程序结构的任务,那就是设计游戏。虽然说游戏世界本身是虚拟的,但游戏的设计和游戏的通关过程,却都是真实的任务。只要提供并限定好规定数量的游戏场景元素,那么就可以将设计游戏流程的任务交给学习者,然后不同的程序结构就会在游戏流程的设计中逐一浮现出来。下面是一个叫“金币王子”(也可以是其他名字)的游戏案例,除了作为探险主角的王子,其他游戏场景元素只有这么几项:洞穴、恶魔、金币数、成就值。几个预设的规则是:某洞穴中有恶魔,打败恶魔就可增加成就值,某洞穴有金币,可按当前成就值提取等量数值的金币。为了使流程更加简洁,假设洞穴中的恶魔在被打败后还会恢复原样。

● 简单的游戏流程及游戏的实现

先看一个极其简单的游戏流程:王子进入A洞穴打败恶魔后,成就值加1→王子进入B洞穴,根据成就值提取等量数值的金币。以上描述很简单,游戏制作也不难,本文使用“RPG Maker XP”来做演示,这款软件自稱“简单到孩子也能使用”,网络上有试用版下载,大家也可以尝试其他各种RPG游戏制作工具,使用方法大同小异。游戏设计可分为地图设计和事件设计两个步骤。

1.地图设计

为简单起见,地图可直接使用程序默认的“草原”,然后在草地上添加两个洞穴(如图1)。软件中有大量的图标和地图背景可供选用,也可自己绘制图标和背景。

2.事件设计

A洞穴添加的事件为两行,分别是“战斗处理:小恶魔”和“变量操作:[0001]+=1”,这些事件并不需要打字输入,只要点击“执行内容”框中的菱形按钮,就可通过向导添加(如下页图2)。例如,可将[0001]号变量看作成就值,为了在打败恶魔后增加成就值,可点开“操作变量”向导并按图3所示进行设置。

B洞穴添加事件也是两行,分别是“变量操作:[0002]+=变量[0001]”和“文章:你因当前成就值\V[0001]获得金币\V[0001],当前共有金币\V[0002]”。

以上变量操作仍然可以利用向导来完成。注意:这里操作数不是常量,而是变量[0001](如图4)。

只有文章显示需要手工输入,这样在游戏中就会跳出对话框,文字中需要展现的成就值和金币值可用变量“\V[0001]”和“\V[0002]”表示(如图5)。

整个游戏就完成了,熟练后,操作过程仅几分钟而已。点“前进”按钮可以调试程序:玩家到A洞穴打恶魔就可以获得成就值,然后到B洞穴根据当前成就值领取金币。这样游戏就运行起来了(如图6)。

● 带分支的游戏流程

但上述游戏流程有个漏洞,因为玩家可以不停地到B洞穴中领取金币,所以就需要增加一个条件判断,必须要和A洞穴的恶魔交战后才可获得金币。要实现这个功能也很简单,首先在A洞穴的事件中,加入一行变量的赋值:“变量操作:[0003]=1”,然后在B洞穴的事件中,点出一个“条件分歧”向导(如图7)。

这时,软件就会自动生成一个分支结构的框架,将先前的命令粘贴到框架预留的空白处,另外再加入一行“变量操作:[0003]=0”即可(如图8)。

这样一来,只有在与恶魔战斗后,变量[0003]才会变成“1”,而领取金币后,变量[0003]就变回“0”。可见,分支结构的实现也非常简单。endprint

猜你喜欢
恶魔金币洞穴
一块金币
洞穴传奇
驱“毒”
动物知识猜猜猜
找金币
小野人
鬼斧神工!世界各地迷人洞穴大盘点
找金币
捕捉“恶魔”的猎手
咸蛋恶魔在哪里