如何在c ++中实现简单的基于tick的引擎?

Dvo*_*ole 6 c++ mud

我正在写一个文本游戏,我需要一个简单的战斗系统,就像在MUD中一样,你发出命令,偶尔发生"滴答",当所有这些命令执行时,玩家和怪物造成伤害,各种不同的东西发生.我该如何实现这个概念?我想过做保存最后一跳时间的变量,而只是把堆栈的事件,在那个时候(时间+ X)执行所有这些simutaniously功能.有没有更简单或更清洁的变体呢?

那可能的语法是什么?

double lastTickTime;
double currentTime;

void eventsPile(int event, int target)
{
// how do i implement stack of events? And send them to execute() when time is up?
}

void execute(int event, int target)
{
     if ((currentTime - lastTickTime) == 2)
     {
         eventsHandler(event, target);
     }    
     else 
     { // How do I put events on stack?
     }
}
Run Code Online (Sandbox Code Playgroud)

Dia*_*cus 3

简单动作堆栈的问题在于,动作的顺序可能是基于时间的——谁打字最快谁就会先击中。您可能应该在堆栈中引入优先级,以便例如所有全局事件首先触发,然后是生物的动作事件,但这些动作事件是按敏捷性或级别等属性排序的。如果一个生物具有更高的敏捷性,那么它就会首先受到攻击。

  • 嗯,这对我来说听起来非常复杂,我才刚刚开始,这是我的第一个编程项目,所以 (2认同)