2014-01-16 2 views
0

Я пытаюсь создать колоду карт, которые я собираюсь выбрать для создания карты. У меня 16 карт, которые имеют два разных типа.Создать массив, где каждое значение является перечислением?

Я сначала мой класс с перечислением:

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

И теперь у меня есть класс Map:

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

Предполагая, что вы хотите создать карту, представляющую плитки, каждая из которых является одной из ваших переписей ландшафта, обычной практикой является наличие строкового или даже XML, который анализируется в списке. Например, у вас может быть «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: Спасибо за указание. Исправлено. –

Смежные вопросы