【问题标题】:Can I use Random method on a class with several instances?我可以在具有多个实例的类上使用 Random 方法吗?
【发布时间】:2019-07-06 12:29:16
【问题描述】:

我正在尝试创建一个 Player 类,该类将随机选择不同类中的一名 Combatants 并使用它。 所有内容都包含在我正在学习创建的口袋妖怪游戏中。

现在我只是想弄清楚是否可以使用随机方法来选择一名战斗人员并将其设置为 player1(例如)


public class combatantList extends Combatant {
     Combatant Gengar = new Combatant("Gengar", 40, 33, 30, 6);
     Combatant Charizard = new Combatant("Charizard", 45, 35, 100, 6);
     Combatant Venasaur = new Combatant("Venasaur", 40 , 50, 100, 3);
     Combatant Pikachu = new Combatant("Pikachu", 35, 25, 100, 7);
     Combatant Dito = new Combatant("Dito", 10 , 20 ,100, 4); 
 }

处理这些问题的最佳方法是将它们设置在一个数组中吗?然后使用随机方法?或者我应该在 Battle 类中使用随机方法吗?

【问题讨论】:

  • 创建一个数组或者列表都可以。添加对象然后使用Random类可以从集合中随机选择一个对象
  • 不相关的问题:为什么战斗人员列表会扩展战斗人员?这没有逻辑意义,因为项目集合不应具有与单个项目相同的行为和状态。

标签: java class random


【解决方案1】:

使用数组是可以的,像这样:

Random rand = new Random();
Combatant[] arrays = {Combatant1,Combatant2,Combatant3...};
Combatant randomCombatant = arrays[rand.nextInt(arrays.length)];

【讨论】:

    【解决方案2】:

    你也可以使用 ArrayList

    Random rand = new Random();
    ArrayList<Combatant> combatants = new ArrayList<>();
    combatants.add(new Combatant("Gengar", 40, 33, 30, 6));
    combatants.add(new Combatant("Dito", 40, 353, 300, 6));
    combatants.add(new Combatant("Pickachu", 450, 123, 30, 6));
    
    Combatant c = combatants.get(rand.nextInt(arrays.length));
    

    【讨论】:

    • 假设我想更改一只宠物小精灵的统计数据 - 例如 - Gengar。我是否需要更改 arrylist 中的统计数据或首次创建的位置?
    • 不,你不必,只需从combatant c获取结果值并使用getter()setter()之类的方法,或者您可以直接调用c.name之类的属性跨度>
    • 或者你可以使用这个combatants.get(index).health = 200
    • Combatant c 是我想用什么名字的例子?如:战斗人员Player1 = 战斗人员.get(rand.nextInt(arrays.length));
    • 或者我是否需要在不同的类中创建一个 Player1 对象并在那里调用 random 方法。如果我的计划是开始一个战斗职业并与 2 个不同的玩家战斗。
    猜你喜欢
    • 2022-06-10
    • 1970-01-01
    • 1970-01-01
    • 2012-06-03
    • 1970-01-01
    • 2010-11-04
    • 2014-10-30
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多