2016년 6월 6일 월요일

게임 인공지능 Chap.02 상태구동형 에이전트의 디자인 - West World 프로젝트(BaseGameEntity Class)

이 책에서는 예시로 West World라는 프로젝트를 만들었는데... 기존의 코드를 파해쳐본뒤에 내가 한번 살짝바꿔보도록 하겠다.
일단 Bob, Elsa라는 등장인물이 여러지역을 가서 여러가지의 상태로 전환이 되는것을 표현하고있다.
먼저 BaseGameEntity클래스 라는걸 살펴보면 모든 등장인물들은 여기서 파생이 된다.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
class BaseGameEntity
{
private:
  //모든 엔티티들은 고유한 식별번호를 가진다.
  int          m_ID;
  //유효한 다음식별번호이다. BaseGameEntity가 매번 초기화될때마다
  //이 값또한 갱신된다.
  static int  m_iNextValidID;
  //ID가 정확하게 설정되도록 생성자 내부에서 호출된다.
  //ID를 설정하고 유효한 다음ID를 증가시키기 전에
  //메소드에 전달된 값이 유효한 다음 ID보다
//더큰지 아니면 같은지 확인한다.
  void SetID(int val);
public:
  BaseGameEntity(int id)
  {
    SetID(id);
  }
  virtual ~BaseGameEntity(){}
  //모든 엔티티들은 Update를 가지고 있어야한다.
  virtual void  Update()=0;
  int           ID()const{return m_ID;}  
};






cs
각 엔티티들이 고유한 식별자를 가지게 하기 위해서 그래서 초기화 될때 생성자에게 넘겨진 ID가 고유한 것인지를 확인하기 위해서 setID가 검사를 진행한다. 고유한 ID가 아니면 실패 메세지와 함께 프로그램은 종료가 된다.








댓글 없음:

댓글 쓰기