游戏简介
- 3个牧师和3个恶魔要过河,可小船每次只能搭乘2个人。可怕的是无论在岸的哪边,如果牧师的人数比恶魔少,牧师就会被恶魔杀死。发挥你的才智,帮他们想出一条过河的办法。
游戏规则设计
- 初始时3个牧师(方块)和3个恶魔(球)都在河的左岸
- 船每次最多可载2人(0、1、2)
- 船上至少有一人船才能移动
- 点击角色,可让角色上船或上岸
- 点击船,可让船到达对岸
- 当某一岸的魔鬼(球)多于牧师(方块)时,游戏结束,玩家失败
- 当所有角色到达对岸时,游戏结束,玩家成功
游戏架构: MVC
-
M(Model): 牧师(方块),魔鬼(球),船,两岸,河;全都受Controller控制。
-
V(View): 点击角色移动,点击船移动,即UserGUI和ClickGUI,用来展示交互结果。
-
C(Controller): MyCharacterController、BoatController、CoastController、FirstController,其中FirstController控制着这个场景中的所有对象,包括其加载、通信、用户输入。还有最高层的Controller:Director类,一个游戏中只能有一个实例,它控制着场景的创建、切换、销毁、游戏暂停、游戏退出等等最高层次的功能。
游戏实现
1. 上网寻找Model所需的所有资源(模型),将其存放到项目中的Assets文件中。
2. 编写代码搭建场景并实现游戏功能
BaseCode.cs
- Director类(导演): 只有一个实例,控制着场景的创建、切换、销毁、游戏暂停、游戏退出等等。
- SceneController接口: 导演控制场记的渠道。
- UserAction接口: 使用门面模式,对用户的输入作出反应。(移动角色、船,重新开始游戏)
- Moveable类: 移动物体(船,牧师,魔鬼)。
- MyCharacterController类: 将预制中的牧师和魔鬼实例化,并将Moveable(移动角色)和ClickGUI(监测“鼠标点击角色”的事件)挂载到了每个角色上。
- CoastController类: 将预制中的河岸实例化,右岸为起点,左岸为终点。
- BoatController类: 将预制中的船实例化,并将Moveable(移动船)和ClickGUI(监测“鼠标点击船”的事件)挂载到了船上。
ClickGUI.cs
- ClickGUI类: 监测“鼠标点击”事件,并调用SceneController进行响应。
FirstController.cs
- FirstController类: 控制场景中所有对象,包括加载、通信、用户输入。在该类中还实现了游戏的逻辑结构。
UserGUI.cs
- UserGUI类: 展示游戏结果。
3. 创建空对象命名为Main,将FirstController挂载到Main上,运行即可开始游戏。
游戏测试
-
运行
-
点击角色(上船)
-
点击船(过河)
-
点击角色(上岸)
-
游戏结束(玩家赢)
-
游戏结束(玩家输)