2011-08-05 8 views
0

我正在製作一個名爲MedGameController的全局(靜態)類的遊戲。在我的班級中,我有兩個包含15個對象的數組,每個對象都包含每個玩家單位的邏輯。在遊戲中,玩家會轉到一個表單,在表單中他們看到他們已經創建的單位,並有按鈕來創建更多單位。我不知道如何檢查當前的單位是否存在,所以我甚至不能創建單個單位。如何檢查我的單元類的實例是否存在於數組中?單位陣列必須有一個範圍,它可以包含兩種或三種形式,這就是爲什麼我在全球課程中創建它們的原因。下面是全局類:如何檢查一個對象是否存在於C#中的全局類中發現的數組中

static class MedGameController  
{ 
    static int ply1pts; 
    static int ply2pts; 
    Squad[] ply1squads = new Squad[15]; 
    Squad[] ply2squads = new Squad[15]; 

    public static int SetPly1Pts 
    { 
     get { return ply1pts; } 
     set { ply1pts = value; } 
    } 

    public static int SetPly2Pts 
    { 
     get { return ply2pts; } 
     set { ply2pts = value; } 
    } 

    public static int SquadSetUp 
    { 
     get { return squadcreation; } 
     set { squadcreation = value; } 
    } 
    public static void Player1Squads 
    { 
     This is where I think i'm supposed to check if they exist then if it doesn't then I create the instance of the squad class 
    } 
} 

}

+0

目前還不清楚你想要做什麼。 Player1Squads應該做什麼?它會在ply1squads數組中創建15個新的小隊嗎?或者創建1 Squad並將其添加到數組?或者是什麼? –

+0

如果你想從靜態方法訪問它們,play1squads和ply2squads必須是靜態的。 –

+0

在四種形式之一中,玩家可以用有限的資源定製自己的小隊。 15是球隊的最大數量 – Mobianhero

回答

1

試試這個:

if (ply1Squads.Length == 0) 
{ 
    for (int i = 0; i < 15; i++) 
    { 
     ply1Squads[i] = new Squad(); 
    } 
} 

你已經宣佈ply1Squads有15個Squad對象,所以它只是一個在初始化對象的事那一點。

您可以爲ply2Squads做同樣的事情。

順便說一句,你需要聲明ply1Squadsply2Squadsstatic爲好,靜態類不能有實例成員:

static Squad[] ply1Squads = new Squad[15]; 
static Squad[] ply2Squads = new Squad[15]; 

默認情況下,這些將是私有變量,所以你要性能對於這兩個數組,以及:

public static Squad[] Ply1Squads 
{ 
    get 
    { 
     return ply1Squads; 
    } 
    set 
    { 
     ply1Squads = value; 
    } 
} 

public static Squad[] Ply2Squads 
{ 
    get 
    { 
     return ply2Squads; 
    } 
    set 
    { 
     ply2Squads = value; 
    } 
} 

附加思想

如果你的設計目標是讓MedGameController處理所有與小隊有關的信息,我會擺脫出現的行爲 - 爲每個Squad陣列(即Player1Squads)創建重複的方法。相反,通過在某種類型的標誌告訴控制器,陣列中使用的,像這樣:

public void CreateSquads(int playerNum) 
{ 

    select (playerNum) 
    { 
     case 1: 
      for (int i = 0; i < 15; i++) 
      { 
       ply1Squads[i] = new Squad(); 
      } 
      break; 
     case 2: 
      for (int i = 0; i < 15; i++) 
      { 
       ply2Squads[i] = new Squad(); 
      } 
      break; 
     default: 
      // Handle wrong number here 
      break; 
    } 
} 

這是一個(非常小的)重構的一步。我想出一份你希望控制器做的事情的清單,然後弄清楚如何避免每個功能到兩個陣列的1-1映射。

希望這會有一定的道理並給你一個方向。我有更多的想法讓我的大腦發癢,但我無法將它們拉到前面。如果我這樣做,我會增加更多,如果你感興趣的話(在第一個半打之後還有另外兩個編輯,對吧?:))。

+0

是的,這很好,謝謝。這不是我正在尋找的,因爲我試圖檢查數組中是否存在Squad對象的一個​​實例,但這樣好多了,因爲我只是將一個布爾值添加到名爲isAlive的Squad類中,以檢查玩家已經成立了這個小隊。再次感謝! – Mobianhero

+0

很高興幫助。如果您願意,請將問題標記爲已回答。快樂的編碼!:) – Tim

+0

@zack misso - 你想讓控制器做的事情沒有顯示出來。 – Tim

相關問題