-
5 - (3). 에너미들을 관리해주는 매니저 클래스 설계( 싱글톤 클래스 )하기C,C++로 만드는 간단한 프로젝트/Invaders(Galaga) 게임 만들기 2021. 3. 26. 20:30
아래의 내용에 이어서 에너미들을 관리해주는 매니저 클래스를 만들어 보자.
designatedroom87.tistory.com/395
알다시피 main 소스 파일에서 에너미들을 객체 배열로 전역 변수로 두었는데,
이 에너미들을 전체적으로 관리해줄 매니저 클래스를 두도록 하자.
이 매니저 클래스를 보통 싱글톤 클래스로 두는데, 이 이유는 말 그대로 유일하게 하나만 존재하도록 관리할 수 있다.
플레이어 또한 게임 상에서 하나만 존재하므로 이를 싱글톤 클래스화 할 수 있다.
유일하다는 말은 복사 방지를 해줄 수 있다.
만약 실수로 플레이어를 하나 더 생성할 작업도 할 수 있다.
이에 대한 실수를 막아주는 역할을 한다.
꼭 싱글톤 클래스로 두지 않고 main 소스 파일에서 그냥 전역 변수로 두고 써도 무방하지만,
혹시 모를 실수에 대비하고자 이와 같이 두었다.
EnemyManager.h 헤더 파일에 클래스를 선언해보자.
static 멤버변수는 생성자에서 초기화를 하지 않는다.
생성자는 protected 혹은 private 접근 지정자로 둔다.
외부에서 이 클래스가 인스턴스화(객체화) 하는 것을 막기 위함이다.
즉, GetInstance 라는 static 멤버함수를 통해 이 클래스의 다른 멤버함수에 접근할 수 있다.
m_pInstance가 NULL이면 딱 한 번만 동적할당을 하고,
NULL이 아니면 이미 객체가 만들어 졌음을 의미하므로 그냥 리턴을 한다.
그렇기 때문에 유일함을 만족한다.
위의 5개의 멤버함수들은 기존의 main 소스 파일에서 하던 작업을 그대로 복사해서 가지고 와서 조금만 수정하면 된다.
멤버함수들에 대한 설명은 따로 필요가 없을 것 같다.
main 소스 파일에서 맨 위에서 EnemyManager 헤더 파일을 인클루드 한다.
그리고, EnemyManager클래스에서 멤버함수의 호출을 어떻게 하는지 보도록 한다.
영상
에너미들이 제대로 이동하고 렌더가 되는 모습을 볼 수 있다.
헤더 파일 & 소스 파일
'C,C++로 만드는 간단한 프로젝트 > Invaders(Galaga) 게임 만들기' 카테고리의 다른 글
5 - (5). 플레이어 클래스를 싱글톤 클래스화 하기 (0) 2021.03.27 5 - (4). Shot 클래스화 하기 (0) 2021.03.26 5 - (2). 에너미를 클래스화 하기 (0) 2021.03.26 5 - (1). 플레이어를 클래스화 하기 (0) 2021.03.26 4. 총알과 오브젝트의 충돌 체크 & 게임 종료 만들기 (0) 2021.03.26