열거 대 기술 가치를위한 정수


10

기본 기술 및 속성 시스템을 구현하고 있지만 어떻게해야하는지에 대해 다시 생각하고 있습니다.

예를 들어 SkillType 열거 형을 사용하여 키를 나타내는 Dictionary / HashMap과 값을 나타내는 정수 값을 사용할 수 있습니다. 하지만 내가해야합니까?

public class Skills
{
    public IDictionary<StatType, Int> skills; //StatType is enum, being the key; the int //is the value.

}

vs.

public class Skills
{
    public int LongBlade, Armor, Marksman; //...etc
}

기본 정수를 사용하는 것이 아니라 형식 안전성의 이점을 알고 싶습니다. 어떤 추천?


나는 interface Skill { /* ... */ int toInt(); }; public class Skills : IList { private ArrayList<Skill> skills; /* ... */ };실제로 선호합니다
Martin Sojka

답변:


8

결국에있을 경우 :

  • 게임 전반에 걸쳐 다양한 기술 유형
  • 능력 부여 품목
  • 능력 부여 버프,
  • 큰 능력의 나무,

그런 다음 개별 인스턴스 필드 대신 열거 형 키가있는 사전 대신 문자열 또는 정수 키의 유연성을 선호하기 시작합니다.

내 추리- 곧 깨달을 수 있기 때문에

Boy, 내가 mathcraft를 조정하고 (내가 가장 좋아하는 텍스트 편집기 | Excel | 사용자 정의 도구)에서 단위 능력을 선택할 수 있다면 좋을 것입니다.

... 문자열 또는 정수 키가있는 사전은 열거 형 값이나 긴 인스턴스 필드 목록을 유지 관리하는 것보다 자연스럽게 맞습니다. 그러나 위의 도구는 항상 C # 코드를 생성하도록 작성 될 수 있으므로 행복한 하이브리드를 찾을 수 있습니다.

게임 복잡성이 상당히 단순하고 다양한 기술이 작을 경우 사전 및 열거 대신 수동으로 인스턴스 필드를 관리하는 것이 더 편리하고 런타임 및 "키 입력"에서 간접적 인 수준을 피할 수 있습니다. 시각.


단위 능력과 수학은 무엇을 의미합니까? 나는 적어도 그런 점에서 따르지 않습니다. 그래도 열거 형을 사용하고 싶습니다.
blissfreak

나는 부분적으로 당신에게 동의합니다. 문자열은 더 높은 수준 (예 : 스크립팅 API)이지만 문자열을 옮기는 것은 좋은 생각이 아닙니다 (메모리 및 이동 시간은 프레임 당 할 수있는 최대 op의 양을 제한합니다). 하이브리드가 될 수 있습니다 : 정수 식별자를 가진 명명 된 엔티티. 이름은 한 번 (단일 맵으로) 저장해야하며 엔티티는 정수를 사용하여 자신을 식별합니다. 그렇게하면 필요한 경우 인터페이스에 문자열을 넣고 열거처럼 작동 할 수 있습니다.
FxIII

@fxiii 동의합니다. "string 또는 integer"를 언급 한 이유입니다. 그래도 자세히 설명하지 않았으므로 정수 사용과 관련하여 이유와 방법을 제기 해 주셔서 감사합니다.
DuckMaestro
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.