객체 지향 디자인 을 살펴볼 수 있습니다 . 파이썬은 그것을 잘 지원합니다.
두꺼운 책은 이것에 대해 쓰여져 새로 왔을 때 무서울 수 있지만 주요 원칙은 매우 쉽습니다.
주요 요점은 작업하는 객체의 종류를 식별한다는 것입니다. 어떤 종류의 게임을 생각하고 있는지 말하지는 않지만 Player, Monster, Item, Equipment, Weapon, Armor 등과 같은 것이 일반적인 객체입니다.
다른 게임 유형을 원한다면 아마도 승리 조건 등을 처리하는 Game 객체가 필요할 것입니다. 아마도지도 객체입니까?
때로는 물건이 될만한 가치가 있는지 분명하지 않은 경우가 있습니다 (예 : 손상). 객체를 손상시키지 않으면 코드가 더 간단 해지지 만 객체를 만들면 더 쉽게 사용자 지정할 수 있습니다.
서브 클래 싱 : 무기와 갑옷은 장비입니다. 장비는 품목입니다. 다른 유형의 항목이있을 수 있습니다. Players와 Monsters가 모두 서브 클래스 인 Combatant 클래스를 정의하면 유용 할 것입니다.
예를 들어 무기는 다른 모든 유형의 항목과 공통점이 많으며 무게, 크기 및 기타 다른 속성을 갖습니다.
따라서, 서브 클래 싱은 "무기는 다른 아이템과 비슷하지만, 휘두를 수 있으며, 피해 등에도 영향을줍니다."라고 말하는 방법을 제공합니다.
서브 클래 싱은 또한 모드 빌더가 "내 새로운 유형의 무기는 표준 무기와 같습니다 ..."
그런 다음 어떤 개체가 무엇을 담당하는지 결정해야합니다. 이것은 쉬운 일이 아니므로 그것에 대해 약간의 생각을해야합니다. 잘못된 선택은 기본 게임에 큰 영향을 미치지 않지만 사용자 정의하기가 더 어려워집니다.
혼자서 땜질하는 한 주위를 바꿀 수는 있지만 대중에게 무언가를 공개하는 순간 변화가 훨씬 어려워집니다! 사람들은 지금과 같은 것에 의존하는 개조를 할 것입니다. 버그조차도. 사람들은 코드에 남아있는 버그에 의존하는 모드를 작성합니다. 물건을 바꾸면 그 개조 품이 부러지고 집게에 몹이 나타납니다.
예를 들면 다음과 같습니다.
무기를 휘두르는 플레이어는 여러 갑옷을 입고있는 몬스터를 공격합니다. 이것은 특정 게임 모드와 특정 맵에서 이루어집니다.
두 전투원 모두 치명타 및 회피와 같은 기술을 보유 할 수 있습니다.
이제 어떤 개체가 무엇을 담당합니까?
이에 대한 정답은 없습니다. 어떤 종류의 사용자 정의를 허용 할 것인지에 따라 다릅니다.
오브젝트 (예 : 맵)를 호출하지 않으면 해당 오브젝트는 어떤 식 으로든 공격을 변경할 수 없습니다.
이러한 모든 결정을 한 후에 문서화하십시오 . "개체 매뉴얼"을 작성하십시오. 각 객체가 가지고있는 수정 가능한 메소드, 가지고있는 매개 변수, 반환해야 할 항목 등을 정확하게 나열합니다.
행운을 빕니다!