我应该在哪里放置我的功能代码

问题描述:

我正在编写RPG游戏,并且发现用户所看到的背景功能更多。我应该在哪里放置我的功能代码

我有一个战斗班。这将持有敌人的背景图片并处理选择哪些敌人在战斗中。

我开发了几个全局函数来计算和显示像hp和mp这样的测量仪。另一个移动计时器栏以便战斗进行。但我想知道这些应该和其他所有功能一样在战斗类中,因为我认为它会比任何其他类增长得多。

另外我知道绘图应该从其他代码分离,所以现在我有全局函数循环所有活动的东西,并在过程代码完成后绘制它,但是最好是将绘图函数放在每个通过他们类和循环,而不是保持一切分开?

另一件一直困扰着我的事情是我正在实施攻击,并且正在考虑给予生物类四个攻击类实例。这会起作用,但如果在战斗中有两个或更多的生物使用相同的攻击,则会造成浪费。我考虑过在每个地方制作一种攻击类型的实例,让每个生物存储四个指向适用攻击实例的指针。 这些选项都是一个好主意还是更好的实现方法?

+0

我建议你读[好书(HTTP: //*.com/questions/388242/)。我担心没有更简单的答案。 – 2011-06-15 09:43:34

+0

@ Space_C0wb0y 1)我看过书,但有很多不同的方法,传统上我比OOP更喜欢程序,但是看到这是一个游戏OOP,它是:) 2)有一个人写的页面有区别许多年前和同行对您的具体设置的意见。 – Skeith 2011-06-15 09:51:10

+0

这听起来像你有很多全球功能。也许你应该想出一种封装某些功能的方法。也许一个由屏幕成员列表组成的“屏幕管理器”界面(“绘制战斗”,“绘制健康状况表”等)将会很有用。 – Dennis 2011-06-15 09:53:29

我想你应该看看有限状态机,它通常是游戏的基本机制。这将给你一个广泛的想法如何组织你的代码,以保持一切易于编辑和易于浏览。

我认为你选择课堂提取有点奇怪。自我中的“战斗”不符合任何类别,因为它与OOP核心的任何“对象”没有任何相似之处。我的意思是,是的,你可以将你的函数收集到一个特定的类中,但是首先识别你正在处理的状态,然后在它们周围建立一个状态机是更有意义的,所以如果随着进展,一套新的状态出现后,您可以轻松地为该功能构建一个新类。

我敢肯定,FSM是你要找的...

为了让一个想法的事情: Simple but generic FSM implementation in C++ Game design with FSM tutorial

+0

是的一场战斗可能是错误的想法,但我的理论是战斗是一个国家和所有的数据状态在战斗类中,这个网站上的人告诉我,有这样的类只能执行一次是可以的。 – Skeith 2011-06-15 11:05:23