我试图创建一个回合制RPG,其中玩家角色和敌人角色各自拥有speed
个数据。使用这个统计数据,我想创建一个屏幕显示,显示队列中的下一个,例如6个人轮到他们了。
我的问题是,我无法弄清楚如何将每个字符的speed
个数据转换为可用数字以确定转弯顺序。
例如:
char1.speed = 10;
char2.speed = 20;
char3.speed = 80;
在这样的情况下,我希望能够创建一个转弯队列,使char3
比其他角色快两三圈,因为他的角色明显快于其他角色。因此,屏幕显示会显示char3
,char3
,char2
,char3
,char1
,char3
的人像。 (我可以让队列显示并使其重新排序;我的斗争是制作一个基于角色speed
统计数据的可变轮次。)
我挣扎的另一个问题是,我希望能够通过法术,魔药等修改角色的速度,最终可能会在战斗中改变转弯顺序。我预计会有一个updateTurns()
函数会在发生这种情况时对我的队列进行重新排序...这是给出每个字符两个速度统计数据的最佳方法,baseSpeed
和adjSpeed
,例如?因此,无论通过法术和物品发生什么,baseSpeed
都保持不变,而adjSpeed
代表角色在战斗中特定时刻的速度?
感谢您的帮助,希望我有道理。这是我第一次在这里发帖,所以如果我需要更多的澄清或诸如此类的东西,请告诉我。
答案 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回合。或者,如你所说,有一个基本速度和一个当前速度,然后从当前速度中扣除并用它来计算转弯,并在法术消失后将其重置为基本速度。