接下来就是构建事件类与事件管理器了:
先考虑一个事件如何进行归类,用到了虚函数与继承
构造好的事件类如下:
class Event{
bool EventController* evenController();
bool ConditionController* conditionController();
void ActionController* actionController();
void check(){
if(eventController->Fucntion())
if(conditionController->Function())
actionController->Function()
}
};
class EventController{
public:
virtual bool Function();
};
class ConditionController{
public:
virtual bool Function();
};
class ActionController{
public:
virtual void Function();
};
例如还是上面那个例子,我们既要分别去继承EventController,ConditionController和ActionController三个类:
class EventEnter:public EventController{
public:
Man m;
Region r;
virtual bool Function()
{
if(m in r)
return true;
return false;
}
};
class ConditionIs:public ConditionController{
public:
Man m;
Unit u;
virtual bool Function()
{
if(m==u.master)
return true;
return false;
}
};
class ActionAttack:public ActionController{
public:
Man &m;
Unit &u;
virtual void Action()
{
order u attack m;
}
};
以上变量都定义为了public,为了方便操作。
而事件管理器相当简单
class EventManager{
vector<Event> events;
public:
void checkEvents();
void addEvent();
...
};
完成了这些类之后就开始加入事件了。
具体请看下面代码:
这样就完成了一个事件的设计与添加,如果游戏中有更多的事件类,那就要去派生EventController等3个类。大概就是这样。
没怎么写过文章,可能语言上有些错误,请谅解。
本文介绍了如何构建游戏事件系统,包括事件类(Event)、事件控制器(EventController)、条件控制器(ConditionController)和动作控制器(ActionController)。通过继承和虚函数实现事件的分类和处理。示例中展示了如何创建事件、条件和动作,并利用事件管理器(EventManager)检查和执行事件。文章最后提到,随着游戏复杂性的增加,可以派生更多的事件类来扩展系统。
2382

被折叠的 条评论
为什么被折叠?



