타워 방어 게임을 만들고 있습니다. 레벨이 생성되기 전에 나는 몬스터, 탑 등에 관한 통계를 메모리에 준비 할 필요가 있습니다. 예를 들면 다음과 같습니다.많은 클래스의 데이터 초기화를 보장하는 디자인 패턴
fastmonster.name = "Rabbit";
fastmonster.health = 100;
fastmonster.speed = 10;
slowmonster.name = "Turtle";
slowmonster.health = 500;
slowmonster.speed = 2;
탑과 다른 물건에 대해서도 마찬가지입니다.
(I이 상세히 파일에서 읽을 수 방법을 결정하지 않았습니다.)
어떻게이 모든 데이터가 생성되는 몬스터 또는 탑 클래스의 객체하기 전에 준비가되어 있음을 확인합니까? 전 모든 데이터를 한 번 전역 적으로 초기화하고 일반 생성자로 몬스터 객체를 만들 수있는 디자인 패턴을 찾고 있습니다. 동시에 단위 통계가 읽히기 전에 어떤 객체도 생성되지 않도록해야합니다.
나는이 문제가 백만 번 해결되었지만 지금까지이 문제에 실제로 부합하는 해결책을 찾지 못했고 몇 가지 추상적 수준을 가진 수퍼 콤플렉스가 아니라고 확신합니다.
내 솔루션은 지금까지
나는 생성자는 비공개과 문제는 내가 타워에 대한 동일한 기능을 만들어야한다는 지금이
Monster Monster::create (MonsterType type) {
if (!initialized()) {
initialize();
initialized = true;
}
return new Monster(type);
}
처럼 보이는 create()
기능을 정의 및 기타 모든 게임 요소. 이것은 많은 중복처럼 보입니다.
또 다른 내가 모든 생성자는 개인 유지
생각했다. (싱글 톤?) 팩토리 클래스를 만들어 모든 클래스의 친구로 만들고 모든 객체를 만들도록하십시오. 팩토리는 생성 될 때 초기화를 수행합니다.
GOF 패턴
나는 다른 창조적 패턴을 보였지만, 그들 중 누구도 맞게 보이지 않는다. 아니면 그냥 충분히 이해하지 못했습니다.
언어는 C++입니다. 그렇습니까? –
예, Qt가있는 C++입니다. 하지만 솔루션을 언어에 구애받지 않는다고 가정 할 때 의도적으로 버려졌습니다. – problemofficer
필자는 공장을 방문하여 데이터 생성을 통해 일반화하고 (소개하는 각 클래스에 대한 특정 코드를 작성하지 않도록) 작성했습니다. – asermax