不幸的是,当前的设计很烂:)
我不会说什么,我会建议实际上是最佳的解决方案,因为在游戏设计中,通常存在“没有最好”解决方案,但我认为这会让你觉得适当。
较大的UML here.
alt text http://yuml.me/1924128b
比方说,你有你的基本类Game
。这是抽象类,它包装了所有的游戏逻辑,并且是一种瑞士刀。
您应该创建另外两个类 - UI
和State
(显然,它封装了游戏的UI操作并存储当前的游戏状态)。让你的Game
类拥有UI
和State
实例。
现在,你的Game
类应该有基本的方法来控制你的游戏。他们可能是简单的和update(...)
方法,这部分实际上有点棘手。如果你的游戏是实时的,你将不得不每隔Y毫秒更新你的状态,所以你的update(...)
应该被循环调用。
如果您的游戏实际上不是实时的,那么您的更新应该只在用户做某件事情时才会发生,或者实际上知道您需要更改某些内容。你可以在这里实现一个消息队列,并且update(...)
调用将简单地刷新所有这些消息。
现在,方法。创建一些课程并称之为Backend
- 让这个课程囊括你所有的绘图可能性。 这里有一件非常酷的事情 - 你可以让你的Backend
成为一个抽象超类,并创建一些具体后端,它来自Backend
。这实际上会让你有机会用简单的代码操作来切换你的Backends
。
之后,你应该将Backend
实例传递给你的方法,它会做相应的图纸,它的逻辑可以写成下面的方式:
foreach (const Object& object, game_state) {
object->render(backend); // Or something like that
}
过去的事情说了,你的游戏状态。你可以有一个简单的结构来保存你当前的所有对象,分数等等。让每个对象访问那个结构,一切都会好的。
其实,有很多事情要考虑,如果你想,我可以写更多关于这个游戏的设计方法和大家分享一些技巧:)
你应该先设计再编程的游戏。另外,这个游戏是在一个控制台,在2D,3D ..? – Alerty 2010-06-12 18:19:46
这听起来更像是寻找现有的示例游戏。游戏开发通常由性能要求驱动,而不是设计的美感。 – Dummy00001 2010-06-12 18:26:40
嘿,你是如何制作这个令人敬畏的图表的? – 2010-06-12 18:34:28