所以我从我的类 Player
中制作了这些对象
Player Silva = new Player("André Silva", 2, 5);
Player Moses = new Player("Victor Moses", 3, 3);
Player Batshuayi = new Player("Michy Batshuayi", 3, 4);
Player Medel = new Player("Gary Medel", 4, 4);
然后我有来 self 的类 Club
的对象
(不要担心其中任何一个的值(value),对于那些不知道的人来说只是与足球相关的东西)
Club Barcelona = new Club("FC Barcelona", 5);
Club RealMadrid = new Club("Real Madrid", 5);
Club Inter = new Club("Inter", 4);
Club Liverpool = new Club("Liverpool", 4);
无论如何,我想随机抽取一名球员和一支俱乐部,并在 if 语句中比较他们的值(value)。截至目前,我已将所有这些放入 arrays
int[] Playerability = {Silva.ability,Moses.ability,Batshuayi.ability,Medel.ability};
int[] Clubrating = { Barcelona.clubrating, RealMadrid.clubrating, Inter.clubrating};
所以我可以使用一个简单的随机数并将该变量放入数组中
int randomclub = randomnumber.Next(16);
int randomplayer = randomnumber.Next(28);
if (Playerability[randomplayer] >= Clubrating[randomclub] ||
Playerpotential[randomplayer] >= Clubrating[randomclub])
但是如果我想要更多的对象,这似乎非常无用,所以我想知道是否有更简单的解决方案?抱歉,如果它很明显,但我似乎找不到它。语言是 c# btw
最佳答案
处理此问题的一种方法是在您的 Club 和 Player 类中有一个静态列表,其中将填充您的程序创建的不同实例。该列表将通过在列表中添加新创建的实例来填充到您的类的构造函数中。
例如,对于您的 Player 类,您将拥有:
public class Player
{
// Static list keeping all your instances
public static List<Player> players = new List<Player>();
// Constructor
public Player(/* Your different parameters */)
{
// Your class initialization
players.Add(this);
}
// Rest of your class definition
}
然后你就可以选择了。您可以在您的类中添加一个静态方法来获取此列表的随机元素,如下所示:
public static Player GetRandomPlayer()
{
Player player = players[randomnumber.Next(players.Length)];
return player;
}
或者通过以下方式在您的代码中简单地调用它:
Player player = Player.players[randomnumber.Next(Player.players.Length)];
最后,如果您也将相同的想法应用于您的 Club 类,您的 if 语句将如下所示:
Player player = Player.GetRandomPlayer();
Club club = Club.GetRandomClub();
if (player.ability >= club.clubrating || player.potential >= club.clubrating)
{
// What you want to do at that point
}
关于c# - 从类中挑选随机对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40217218/