코딩은 실제로 그렇게 어렵지 않습니다 . 어려운 부분은 이해하기 쉽고 이해하기 쉬운 코드를 작성하는 것입니다. 그래서 더 나은 개발자를 원하고 견고한 아키텍처를 만들고 싶습니다.
비디오 게임에서 NPC 를 위한 아키텍처를 만들고 싶습니다 . Starcraft, Age of Empires, Command & Conquers 등과 같은 실시간 전략 게임입니다. 그래서 저는 다른 종류의 NPC를 가질 것입니다. NPC 많은 능력이의 (방법)에 하나를 가질 수 Build()
, Farm()
과 Attack()
.
예를 들면 :
노동자 수 Build()
와 Farm()
전사 할 수있는 Attack()
시민이 할 수있는 Build()
, Farm()
그리고 Attack()
어부의 수 Farm()
와Attack()
나는 지금까지 모든 것이 명확하기를 바랍니다.
이제 NPC 유형과 능력이 있습니다. 그러나 기술적 / 프로그램 적 측면을 보자.
다른 종류의 NPC에 적합한 프로그래밍 방식은 무엇입니까?
기본 수업을받을 수 있습니다. 실제로 나는 이것이 DRY 원칙 을 고수하는 좋은 방법이라고 생각합니다 . WalkTo(x,y)
모든 NPC가 움직일 수 있기 때문에 기본 클래스 와 같은 메소드 를 사용할 수 있습니다. 그러나 이제는 실제 문제가 발생합니다. 내 능력은 어디에 구현합니까? (: 기억 Build()
, Farm()
과 Attack()
)
능력은 동일한 논리로 구성되므로 각 NPC (Worker, Warrior, ..)에 대해 구현하는 것이 짜증나고 DRY 원칙이됩니다.
좋아요 나는 수있는 기본 클래스 내에서 능력을 구현한다. 이것은 NPC 능력의 X를 사용할 수 있는지를 검증 그 논리의 어떤 요구 IsBuilder
, CanBuild
.. 나는 내가 표현하고 싶은 분명한 생각합니다.
그러나 나는이 생각에별로 좋지 않습니다. 기능 이 너무 많은 부풀린 기본 클래스처럼 들립니다 .
C #을 프로그래밍 언어로 사용합니다. 따라서 다중 상속은 옵션이 아닙니다. 의미 : 같은 추가 기본 수업 Fisherman : Farmer, Attacker
이 작동하지 않습니다.