为RPG创建转弯队列

时间:2015-01-03 10:16:14

标签: actionscript-3 game-engine

我试图创建一个回合制RPG,其中玩家角色和敌人角色各自拥有speed个数据。使用这个统计数据,我想创建一个屏幕显示,显示队列中的下一个,例如6个人轮到他们了。

我的问题是,我无法弄清楚如何将每个字符的speed个数据转换为可用数字以确定转弯顺序。

例如:

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

在这样的情况下,我希望能够创建一个转弯队列,使char3比其他角色快两三圈,因为他的角色明显快于其他角色。因此,屏幕显示会显示char3char3char2char3char1char3的人像。 (我可以让队列显示并使其重新排序;我的斗争是制作一个基于角色speed统计数据的可变轮次。)

我挣扎的另一个问题是,我希望能够通过法术,魔药等修改角色的速度,最终可能会在战斗中改变转弯顺序。我预计会有一个updateTurns()函数会在发生这种情况时对我的队列进行重新排序...这是给出每个字符两个速度统计数据的最佳方法,baseSpeedadjSpeed,例如?因此,无论通过法术和物品发生什么,baseSpeed都保持不变,而adjSpeed代表角色在战斗中特定时刻的速度?

感谢您的帮助,希望我有道理。这是我第一次在这里发帖,所以如果我需要更多的澄清或诸如此类的东西,请告诉我。

1 个答案:

答案 0 :(得分:1)

应该比较直接。首先你需要你的除数,即如何确定一个转弯是什么。我假设10?因此,获取每个角色获得的转弯数,在角色基类中以单转速度设置常量;

public static const TURN:uint = 10;

然后你可以做这样的事情来让每个球员转身;

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

然后你可以有一个主循环,一个是你的角色数组,还有一个子循环,循环遍历每个角色,每次都去掉一个转弯,每次都将char添加到队列中。一旦转= 0,下一个字符将由主循环迭代。一旦你有一个队列,你可以随后将其改组以稍微改变顺序。把它分成两个任务。

每个字符都有turns后,你可以扣除一些turns,所以还要在每个字符中存储一个speedPenalty,通常为0,但如果被一个咒语命中,则更改它到x。那你的主要论坛实际上是;

(char2.speed / character.TURN) - speedPenalty

如果你这样做,你必须确保每个焦点永远不会低于1回合。或者,如你所说,有一个基本速度和一个当前速度,然后从当前速度中扣除并用它来计算转弯,并在法术消失后将其重置为基本速度。