2014-01-16 54 views
0

我正在嘗試創建一副卡片,我將選擇製作一張地圖。我有16張牌,有兩種不同的牌。創建一個數組,其中每個值都是一個枚舉?

我第一次有我的類枚舉:

package Game; 
public class Terrain { 
    public static enum Ter{ 
     DESERT, MOUNTAIN 
    } 
} 

現在我有一個類地圖:

package Game; 
import Game.Terrain.Ter; 

public class Map { 

    Ter mapPieces[] = {Ter.DESERT, Ter.DESERT, Ter.DESERT, Ter.DESERT, 
         Ter.DESERT, Ter.DESERT, Ter.DESERT, Ter.DESERT, 
         Ter.MOUNTAIN, Ter.MOUNTAIN, Ter.MOUNTAIN, Ter.MOUNTAIN, 
         Ter.MOUNTAIN, Ter.MOUNTAIN, Ter.MOUNTAIN, Ter.MOUNTAIN}; 

}

這是如何使我的陣列?有一個更好的方法嗎?它只是看起來可怕....

回答

1

假設您要創建一個代表tile的貼圖,其中每個tile都是您的Terrain枚舉之一,通常的做法是將String或甚至XML解析到List中。例如,您可以使用「DDDDDDDDMMMMMMMM」,然後爲每個D添加一個Ter.DESERT到您的列表中,等等。

對於您的簡單情況,循環也是有意義的。只需將8 Ter.DESERT和8 Ter.MOUNTAIN添加到列表中,並將其轉換爲數組。如果你不想使用一個List,那麼你可以遍歷你的數組,並使所有的偶數元素DESERT和奇怪的MOUNTAIN。

很多不同的方式來做到這一點。你給的方式應該可行,但我同意它看起來很可怕。

+0

謝謝所有的建議,我相信這不是我將如何結束的事情,但學習正確的做事方式仍然很好。 – Sarah

2

您需要如下創建一組:

Set<Terrain> terrains = EnumSet.allOf(Terrain.class); 

和將其轉換成一個陣列。您也可以使用values()方法。有關詳情,請參閱here on SO

+0

您不能將'EnumSet'賦值給'List'。 –

+0

@LouisWasserman:謝謝指出。更正它。 –

相關問題