游戏设计:处理不同的游戏类型?

时间:2013-03-06 18:33:01

标签: iphone ios cocos2d-iphone

我很好奇是否有一个很好的策略来处理游戏内部运行相同主游戏循环的各种游戏类型?换句话说,我有一个有三种不同游戏类型的游戏。每种类型之间只有一些细微差别,因此它们目前使用相同的循环/类运行。一个是'在时间用完之前你可以获得多少X',另一个是'你需要多长时间才能获得10个X',而最后一个是'练习/无限时间'游戏类型。现在我的策略是运行if,然后检查游戏的所有差异部分并为每种游戏类型执行适当的逻辑。

if (gameType == INFINITE)
{...}
else if (gameType == TIMED)
{...}
else
{...} 

这对我来说似乎非常错误,而且效率低下。当我看起来可以做一次检查并继续前进时,我不想用所有这些不必要的检查来阻塞CPU。我也不想复制粘贴我的所有类,只对每个类进行微小的更改。有没有办法做到这一点?

1 个答案:

答案 0 :(得分:3)

处理这种情况的一种方法是创建一个屏幕管理器系统。这实际上意味着您有一个带有更新和绘制操作的抽象类。然后,您拥有的每个游戏(屏幕)都会从此继承,允许每个游戏都拥有自己的更新/绘制行为。最终你需要有一个if-else或switch语句来决定绘制/更新哪个。最小化这种情况的一种方法是使用抽象类型的变量跟踪当前“屏幕”,然后可以多态分配需要更新/绘制到该变量的任何屏幕。然后,当您在当前屏幕上调用更新或绘图时,您不需要知道它的具体类型。

有很多例子,可以找到一个像样的XNA: http://xbox.create.msdn.com/en-US/education/catalog/sample/game_state_management

这个想法完全可以转让。大多数人使用这个系统添加菜单屏幕和东西,但没有理由不能用于你的目的。