好,我又来了......
这次来讲下船BoatSprite和河岸BankSprite的设计。在这个过河游戏中,我们有两个河岸:左岸与右岸。每个岸上都能站人。游戏开始的时候3个牧师和3个魔鬼都是站在右岸上,他们的目标是要全部都到左岸上去。河边有条船,船上最多可以坐两人,而且至少要有一个人船才能开过去。具体的信息就是这些。
在我们的设计中,船是BoatSprite,河岸是BankSprite。
下面来讲讲我的思路吧。接着上一篇讲述,我们知道,船也是应该有一个Side属性来标识其目前是在河的哪一边。河岸也应该有Side属性,不过这个是它的确定属性,一旦设定后就不需要改变了。接着,每次游戏中我们都需要判断每边PriestSprite和DevilSprite的个数,好决定玩家是胜利了还是挂了,所以船和河岸都应该记录下此时船上/岸上PriestSprite和DevilSprite的个数。
接下来有个问题其实困扰了我一段时间:我们在BoatSprite和BankSprite中是否需要设置一个NSMutableArray来存放当前存在于船上/河岸上的Person呢?一开始我是比较倾向于都设置这样一个Array的,当人物从船上跳到岸上时,船上相应的Person就被remove掉,然后岸上的Array中加入这一Person。这个想法是非常自然而然的。但是后面转念一想:其实在岸上保留这样的一个Person的队列到底有没有什么实际作用呢?从上一遍我们知道,我们操作人物都是通过触屏的,当触屏事件发生时,触摸到PersonSprite会首先响应到该事件并委托给游戏逻辑BaseLayer来处理。无论人是从船上跳到岸上还是从岸上跳到船上,我的Ba