为 RPG 创建回合队列

Creating a turn queue for a RPG

我正在尝试创建一个回合制角色扮演游戏,其中玩家角色和敌人角色各自拥有 speed 属性。使用此统计数据,我想在屏幕上显示下一个队列中的 6 个人轮到他们。

我的问题是我无法弄清楚如何将每个角色的 speed 统计数据转换为可用的数字来确定回合顺序。

例如:

char1.speed = 10;
char2.speed = 20;
char3.speed = 80;

在这种情况下,我希望能够创建一个回合队列,使 char3 比其他角色提前两到三回合,因为他的角色比其他角色快得多。因此屏幕显示会显示 char3char3char2char3char1char3 的肖像。 (我可以让队列显示并使其重新排序;我的努力是根据角色的 speed 统计数据制定可变的回合顺序。)

我正在努力解决的另一个问题是我希望能够通过法术、药水等修改角色的速度,这可能最终会在战斗中改变回合顺序。我预计会有一个 updateTurns() 函数,它会在发生这种情况时对我的队列进行重新排序...这是给每个角色 two 速度统计的最佳方法,baseSpeedadjSpeed,例如?所以 baseSpeed 无论通过法术和物品发生什么都保持不变,而 adjSpeed 代表角色在战斗中特定时刻的速度?

感谢您的帮助,希望我说得有道理。这是我第一次在这里发帖,所以如果我需要更多说明或其他信息,请告诉我。

应该比较直接。首先,您需要除数,即如何确定单圈是多少。我假设10?所以得到每个角色转了多少圈,在你的角色库中用单圈速度设置一个常量class;

public static const TURN:uint = 10;

然后你可以做这样的事情让每个玩家轮到;

char2.speed / character.TURN = // how many turns each player gets.

然后你可以有一个主循环,它是你的字符数组,还有一个子循环,它循环遍历每个字符,每次删除一个回合,每次都将字符添加到队列中。一旦turn = 0。下一个字符将由主循环迭代。一旦你有一个队列,你可以在之后将它洗牌以稍微改变顺序。把它分成两个任务。

一旦每个字符都有 turns,就可以扣除一些 turns,因此还要在每个字符中存储一个 speedPenalty,通常为 0,但如果被咒语击中, 将其更改为 x。那么您的主要论坛实际上是;

(char2.speed / character.TURN) - speedPenalty

如果你这样做,你必须确保每个角色都不会低于 1 回合。或者,如你所说,有一个基本速度和一个当前速度,然后从当前速度中减去并用它来计算圈数,并在咒语消失后将其重置为基本速度。