2014-01-16 1 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}; 

}

이가 내 배열을 만드는 방법입니다? 이 작업을 수행하는 더 좋은 방법이 있습니까?

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

및 배열에 그 변환 : 그것은 단지 당신은 다음과 같이 세트를 만들 필요가

답변

1

각각 지형 열거 형 중 하나 인 타일을 나타내는지도를 만들려고한다고 가정하면 일반적인 구문은 String 또는 심지어 XML을 List로 파싱하는 것입니다. 예를 들어 "DDDDDDDDMMMMMMMM"을 가질 수 있고 각 D에 대해 목록에 Ter.DESERT를 추가 할 수 있습니다.

간단한 상황에서 루프도 의미가 있습니다. Ter.DESERT 8 ​​개와 Ter.MOUNTAIN 8 개를 목록에 추가하고 배열로 변환하십시오. List를 사용하고 싶지 않다면 배열을 반복하고 모든 짝수 엘리먼트 DESERT와 이상한 것들을 MOUNTAIN으로 만들면됩니다.

다양한 방법으로 수행 할 수 있습니다. 당신이주는 방식은 효과가 있지만, 나는 그것이 끔찍한 것처럼 보입니다.

+0

모든 제안을 해주셔서 감사합니다.이 방법이 내가 사물로 끝날 방법이 아니라는 것을 확신합니다. 그러나 사물을 처리하는 올바른 방법을 배우는 것이 여전히 좋습니다. – Sarah

2

.... 끔찍한 보인다. values() 메서드를 사용할 수도 있습니다. 이에 대한 자세한 내용은 here on SO입니다.

+0

'List'에'EnumSet'을 할당 할 수 없습니다. –

+0

@ 루이스 와서 만 : 지적 해 주셔서 감사합니다. 그것을 정정했다. –

관련 문제