繁体   English   中英

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

[英]Game Design: handling different game types?

我很好奇是否有一个好的策略可以处理游戏中运行于同一主游戏循环中的各种游戏类型? 换句话说,我有一个具有三种不同游戏类型的游戏。 每种类型之间只有几个细微的差异,因此它们当前使用相同的循环/类运行。 一个是“您可以在时间用完之前获得多少个X”,另一个是“捕获10个X需要花费多长时间”,最后一个是“练习/无限时间”游戏类型。 现在,我的策略是对游戏的所有差异部分进行if,then,else的检查,并对每种游戏类型执行适当的逻辑。

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

这对我来说似乎是错误的,而且效率低下。 我不想让所有这些不必要的检查陷入困境,好像我可以一次执行此检查并继续前进。 我也不想复制粘贴所有的类,只对每个类进行较小的更改。 有什么好方法吗?

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

有很多示例,可以在以下位置找到一个不错的XNA: http : //xbox.create.msdn.com/zh-CN/education/catalog/sample/game_state_management

这个想法是完全可以转让的。 大多数使用此系统添加菜单屏幕和内容,但是没有理由不能将其用于您的目的。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM