2016-10-24 169 views
3

隨機對象,所以我從我的課使這些對象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); 

後來才知​​道有物體從我的類Club (不要擔心值在任何這些,只是足球相關的製作東西對於那些誰不知道)

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語句比較它們​​的值。截至目前我已經把所有的這些在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]) 

在但這似乎很innefective如果我想有更多的對象,所以我想知道是否有更簡單的解決方案呢?對不起,如果它明顯,但我似乎無法找到它。語言是C#BTW

+0

Slump是什麼意思? –

+0

挑選一個隨機物體 – Gabc

+0

你在'List'或'Array'中有你的'Player'對象嗎? –

回答

1

如果你把你的ClubPlayer對象的List例如,你可以這樣做:如果

var listOfPlayers = new List<Player>() { Silva, Moses }; 
var listOfClubs = new List<Club>() { Barcelona, RealMadrid }; 

var randomPlayer = listOfPlayers[randomnumber.Next(listOfPlayers.Length)]; 
var randomClub = listOfClubs [randomnumber.Next(listOfClubs.Length)]; 

if (randomPlayer.ability >= randomClub.clubrating || 
    randomPlayer.potential >= randomClub.clubrating) 
{ 
    //Do your stuff 
} 

同樣的工作,你把你的對象到一個數組。重點是您可以使用對象,而不是將對象的屬性存儲到新數組中。

這樣您只需將新的ClubPlayer對象填充到適當的列表中,而不必更改其餘的代碼。

+0

酷感謝,將嘗試它。出於好奇,是否有沒有使用列表或數組呢? – Gabc

+0

我想,雖然沒有什麼高效的想法:)。 –

2

處理這個問題的一種方法是在你的Club和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)]; 

最後,如果你同樣的想法適用於你的俱樂部類,你的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 
}