促进课堂沟通c ++

时间:2012-05-24 22:44:09

标签: c++ class

我正在写一个游戏,并有一个名为GameManager的主类。我希望它尽可能抽象。在它里面,它有其他类的对象,Player和ItemManager。想象一下,我在播放器中有一个功能,可以检测播放器是否在某个区域(检查x和y值)。例如,如果玩家在该区域,我想生成一个项目createItem()。我如何促进课程之间的沟通?

2 个答案:

答案 0 :(得分:3)

一种可能性是observer pattern。在该模式中,有一个主题维护观察者列表。当受试者的状态发生变化时,它会通知观察者,观察者可以在他们认为合适时做出反应。在这种情况下,播放器是您的主题,GameManager是观察者。当玩家的位置发生变化时,它会通知GameManager,然后GameManager可以产生一个项目或采取其他行动。

答案 1 :(得分:0)

我目前正在尝试这样做的方法是定义一个抽象基类(称为“Commando”),它具有虚函数Command(字符串cmd),并且包含每个与游戏相关的对象(以及对象管理器)从中继承,并用代码覆盖Command()以解析文本字符串(或者在管理器的情况下,解析或截断并传递给映射中包含的子对象);这种方法有局限性,但它适用于我的目的。

command.h:
class Commando
{
public:
  virtual int Command(std::string const& cmd) = 0;
};

atom.h:
#include "command.h"

class Atom : public Commando
{
public:
  int Command(std::string const& cmd);
};