如何让代码选择随机变量,然后从可能的选择列表中删除它

问题描述

我几乎没有涉足我正在进行一个小项目所需的编码的 JS 方面,所以如果我没有正确提供信息,我会提前道歉。

所以我想让这段代码做的是......

  1. 从可能的选择列表中删除初始选择(似乎有效?)
  2. 创建一个包含其余可能选择的变量(我想我明白了吗?)
  3. 从该列表中随机选择一个(我想我明白了吗?)
  4. 然后从可能的选择中删除该选择,以免再次被选择。 (坏了)
  5. 然后循环返回以再次运行,直到没有更多可能的选择。 (我一无所知)

旁注:我也不知道是否有一种“更干净”的方式来写这个。

这是我迄今为止尝试过的。

// 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 (将#修改为@)