问题描述
我几乎没有涉足我正在进行的一个小项目所需的编码的 JS 方面,所以如果我没有正确提供信息,我会提前道歉。
所以我想让这段代码做的是......
- 从可能的选择列表中删除初始选择(似乎有效?)
- 创建一个包含其余可能选择的变量(我想我明白了吗?)
- 从该列表中随机选择一个(我想我明白了吗?)
- 然后从可能的选择中删除该选择,以免再次被选择。 (坏了)
- 然后循环返回以再次运行,直到没有更多可能的选择。 (我一无所知)
旁注:我也不知道是否有一种“更干净”的方式来写这个。
这是我迄今为止尝试过的。
// Target success chance.
var successRate = 0.90;
// Check if this succeeded.
if (Math.random() < successRate) {
// Determine the thunder element ID used for shock.
var elementId = 7;
// damage formula used for the shock effect.
var damage = user.mat * 3;
// Check if a critical hit landed.
if (target.result().critical) {
// Apply critical damage.
damage = this.applyCritical(damage);
}
// Get all of the alive members from the opponent's unit.
var members = this.opponentsUnit().aliveMembers();
// Remove the main target from the member list.
members.splice(members.indexOf(target),1);
// Play the shock animation on the target.
target.startAnimation(137);
// Increase the damage received by the shock damage with the thunder multiplier.
value += Math.ceil(damage * target.elementRate(elementId));
// Other members of the opposite team need to be shocked.
var extraTargets = members;
// Loop each of these 4 members.
while (extraTargets--) {
// Get a random member from the opponent's team.
var member = members[Math.floor(Math.random() * members.length)];
// Check if the member exists.
if (member) {
// Play the shock animation on the random member.
member.startAnimation(77);
// Make the random member take damage with the thunder multiplier.
member.gainHp(-Math.ceil(damage * member.elementRate(elementId)));
// Start the damage popup on the random member.
var text = 'damage';
var motion = 'Pop High,Wait,Stretch';
var font = 'this.standardFontFace()';
var size = 'this.standardFontSize()';
var color = '#BBFFFF';
member.startdamagePopup().callCustomPopup(text,motion,font,size,color,x,y);
// Clear the random member's results.
member.clearResult();
// Remove the random member from the list of valid targets.
members.splice(members.indexOf(member),1);
// Check if the member is dead.
if (member.isDead) {
// If the member is dead,have it collapse.
member.performCollapse();
}
}
}
}
它不会遍历所有可能的选择,我不知道它是否会在选择后从选择列表中删除该选择,因为由于循环失败我无法测试第一部分。 ..
感谢您的时间:)
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)