2013-08-06 4 views
2

이 경우 2D 게임을하고 있습니다. 이 게임에서, 나는 폭탄 범 (bomberman)처럼 하늘에서 떨어지는 미사일 유형이 거의 필요 없다. 각 미사일 유형은 내 캐릭터와의 충돌시 미사일 유형에 따라 결정된 피해를 입습니다."스위치"사용을 피해야합니까?

어떻게해야합니까?

  • 옵션 1 : 자신의 미사일 유형의 변수를 포함하는 하나의 클래스 미사일을 만들고, 충돌에 대한 검사 루프에서 나는 피해를 결정하는 스위치를 사용합니다.

  • 옵션 2 : 몇 개의 클래스를 생성 한 다음 스위치를 사용하지 않고 동일한 미사일 충돌 검사 루프를 만들어 각 루프에 손상을 알립니다.

  • 옵션 3 : 모든 미사일, 하나의 체크 루프를 만들고, 미사일

  • 옵션 4 사이 distintions를 만들기 위해 heritance를 사용 해달라고 미사일 유형을 저장하는 대신, 자신의 손상 및 기타 여러으로 미사일을 초기화 동일한 미사일 유형 (메모리의 낭비)

와 동일해야한다 변수 옵션 3 그다지 존재하는 경우, 옵션 1 또는 2?

감사

+0

왜 안 되니? 그것은 언어의 일부입니다. 조심해서 휴식을 잊지 마세요. – Jiminion

+0

형식간에 차이가있는 값이 몇 개 뿐이고 동작이 동일하지 않은 경우 코드가 단순 해지면 옵션 4를 사용합니다. – Troy

답변

1

음, 옵션 3이 가능합니다.

손상 변수가있는 미사일 클래스가 있습니다. 다른 모든 유형의 미사일은이 클래스를 확장합니다. 따라서 필요에 따라 다른 정보 필드를 추가 할 수 있습니다.

그래서 모든 미사일 클래스를 반복하면됩니다. 당신은 그들을 미사일에 던져서 그 변수를 평가할 수 있습니다.

+0

인스턴스를 하위 클래스로 만들 때는 instanceof를 사용해야합니다. – Zerkz

0

은 정말 각각의 미사일 종류는 당신이 미래에 대한 어떤 계획뿐만 아니라 얼마나 다른지에 따라 달라집니다. 모든 유형이있는 경우 더 많은 유형을 추가 할 계획이 없으며 유형간에 다른 유일한 것은 피해량입니다. 스위치를 사용할 것입니다. 그러나 손상을 막을 수있는 각 미사일 유형마다 다른 동작을 모델링하는 것뿐만 아니라 확장을 쉽게하기 위해 기본 클래스를 만들고 각각에 대해 getDamage() 또는 updateMovement()과 같은 메서드를 오버로드 할 수 있도록 각 클래스에 대한 새로운 클래스를 상속합니다. 미사일 유형.

0

Missle 서브 클래스에 필요한 모든 인수를 취하여 피해를 계산하는 메서드를 제공하십시오. 각 대상에게 지정된 피해를 대상에 적용하는 applyDamage (또는 단지 damage) 방법을 부여하십시오.

스위치에 대한 다형성을 선호합니다.

작은 방법으로 일관된 작업 집합으로 나누는 것이 좋습니다.

관련 문제