게임 로직 세팅, CEntity 클래스 설계 시작 (1)

Yama·2024년 1월 18일
0

어소트락 수업

목록 보기
49/55

게임 파일 세팅

  • 필터단위로 분류에 맞는 코드를 만들어 갈것이다.
  • 상속을 통한 오브젝트 설계
    • 대부분의 물체들은 같은 부모로 부터 파생할것이다.
    • 다형성을 이용해서 Game필터에서 받을 최상위 부모 클래스를 만들것이다.
      • 모든 클래스들이 CEntity에서 파생 시킬것이다.
    // CEntity.h
    class CEntity
    {
    private:
    	// 1
    	UINT m_ID;
	public:
	
	CEntity();
	virtual ~CEntity();

	};
  • 최상위 부모 클래스니까 소멸자에 가상함수 키워드인 virtual을 붙였다.
// CEntity.cpp
CEntity::CEntity()
{
}

CEntity::~CEntity()
{
}
  • .cpp파일에 구현부분 만들고
  • 1번의 UINT를 지금 모른다.

미리 컴파일(PCH)

  • 프로젝트에서 미리 컴파일해서 쓰는 이유는
    1. 자주 사용되는 헤더파일을 배치함으로써 전체 파일이 헤더를 알게한다.
      • include <iosteam'>등등
    2. 배치된 헤더들은 컴파일 시점에서 컴파일을 미리해놔서 이득을 본다.
    • include <iosteam'>를
  • 기본적으로 안켜져있다.
    • 프로젝트 속성에 들어가서 바꾼다.
  • pch.hpch.cpp가 없기떄문에 만들어준다.
    • 규칙이 하나 더있다.
    • pch.cpp에 속성에 들어가서 바꾼다.
// pch.h
#pragma once

// 이렇게 쓰면 
#include <vector> // 동적배열
using std::vector;
  • 이렇게 해놓고 빌드하면 오류가 뜬다.
    • 미리 컴파일된 헤더를 사용하면 CEntity.cppmain.cpp젤 위에 pch.h를 인클루드 해야한다.
    • 강제되는 것이다.
    • 위쪽에 헤더가 있으니 pch.h에 파일을 다 알게된다.
  • 매번 귀찮게 #include "pch.h"를 항상 수동으로 적어주지않고 미리컴파일해둔 상태로 클래스를 만들면 자동적으로 만들어진다.
    • 안붙이면 컴파일오류가 나기 때문이다.
    private:
    	
    	UINT m_ID;
  • 이제 오류가 안난다.

  • Windows.hunsinged int가 재정의 되어 있다.
    • 미리컴파일해서 이제 인식 가능해줬다.
  • 오브젝트별로 겹치지않는 고유한 아이디값맴버로 가질것이다.
    • 파생된 애들의 겹치지 않게 아이디에는 절대로 겹치지 않게 숫자가 있을것.
  • 객체들마다 아이디를 겹치지 않게 할것이다.
    • 객체의 고유성을 식별할떄 사용가능할것이다.

강의 코드

main.cpp

	#include "pch.h" // 추가
    // 아래 코드들 생략

CEntity.h

#pragma once


class CEntity
{
private:	
	UINT		m_ID;

public:
	CEntity();
	virtual ~CEntity();
};

CEntity.cpp

#include "pch.h"
#include "CEntity.h"

CEntity::CEntity()
{
}
CEntity::~CEntity()
{
}

pch.h

#pragma once

#include <Windows.h>
#include <vector>	// 동적배열
#include <list>		// 연결형 리스트
#include <map>		// 이진탐색트리

using std::vector;
using std::list;
using std::map;
using std::make_pair;

pch.cpp

#include "pch.h"

CObj.h

#pragma once
#include "CEntity.h"
class CObj :
    public CEntity
{
};

CObj.cpp

#include "pch.h"
#include "CObj.h"

1차 24.01.18
2차 24.01.19
3차 24.01.22
4차 24.01.23
5차 24.01.24

0개의 댓글