개인공부/Win32API(31)
-
PathMgr
1 2 3 4 5 6 7 8 9 10 11 class CPathMgr { SINGLE(CPathMgr); private: wchar_t m_szContentPath[255]; public: void init(); const wchar_t* GetContentPath() { return m_szContentPath; } }; Colored by Color Scripter cs PathMgr는 폴더주소를 관리하는 클래스로 주소를 저장할 수 있는 문자열을 저장하는 인자를 가지고 처음에 init 을 통해서 주소문자열을 받아오는 역할을 한다. 그리고 어디서든지 GetContentPath을 이용하요 폴더주소를 얻을 수 있다. 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 void CPa..
2022.12.26 -
Object
지금까지 강의에서 배운 내용으로 적을 움직이고 내가 미사일을 쏘는 방법에 대해서 프로그래밍했다. 코딩과정에서 내가 직접 설계를 해보면서 어려운점이 많이 발생했다 처음 설계한 나의 미사일은 Key 상태를 홀드로 해줘서 미사일이 프레임마다 나가는 방식으로 작동해서 TAP 상태로 바꿔서 한개씩 나가도록 설계를 했다. 하지만 사용자의 입력이 빠르면 빠르게 나간다는 방식을 사용하고 싶지 않아서 타임 매니저를 이용해서 코드를 작성했다. 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 AttackTime += fDT; if (0.25 GetKeyState(KEY::S) == KEY_STATE::HOLD) { CreateM..
2022.12.25 -
KeyManager
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 struct tKeyInfo { // KEY ekey -> 본인의 인덱스가 곧 키이므로 저장할 필요가 없다. KEY_STATE eState; // 키의 상태값 bool bPrevPush; // 이전 프레임에서 눌렸는지 여부 }; class CKeyMgr { SINGLE(CKeyMgr); private: vector m_vecKey; // 벡터와 이넘클래스, 구조체 이용해서 공간 만드는 방법 다시 숙지하자 public: void init(); void update(); public: KEY_STATE GetKeyState(KEY _eKey) { return m_vecKey[(int)_eKey]...
2022.12.24 -
TimeManager
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 #pragma once class CTimeMgr { SINGLE(CTimeMgr); private: LARGE_INTEGER m_IICurCount; LARGE_INTEGER m_IIPrevCount; LARGE_INTEGER m_IIFrequency; double m_dDT; // 프레임 간의 시간 값 double m_dAcc; // 1초 체크를 위한 누적 시간 UINT m_iCallCount; // 함수 호출 횟수 체크 UINT m_iFPS; // 초당 호출횟수 // FPS // 1. 프레임당 시간 (Delta Time) public: void init(); void..
2022.12.23 -
공부 정리
기존의 GetMessage 의 경우에는 게임제작에 적합하지 않은 방식이였기 때문에 PeekMessage 함수를 이용해서 메세지가 들어온 경우를 처리 해주었다. 그러나 메세지 처리하는 쪽의 비율이 너무나 작기 때문에 else 쪽의 메세지가 발생하지 않는 대부분의 시간을 이용하여 game 코드를 수행하도록 하였다. 그러기 위해서 CCore 클래스를 이용해서 기능들을 구현하고자 했고 이 CCore 의 디자인형태는 싱글턴 패턴으로 설계하기로 하였다. 싱글턴 패턴은 클래스를 호출하면 인스턴스가 1개만 생기기 때문에 2개이상 생기지 않는 설정이필요로했다. CCore 를 외부에서 초기화 하지 못해야하므로 접근지정자를 이용한다. static CCore* GetInst() => 정적변수로 선언하면 GetInst() 는 ..
2022.12.21 -
PeekMessage
현재 사용하고 있는 GetMessage 의 경우에는 메세지 큐에서 메세지가 확인 될 때까지 대기하는 방식을 사용하고 있어서 게임 프로그래밍에 적합하지 않은 방식이다. 메세지가 입력되지 않으면 아무런 동작을 하지 않기때문이다. 그러므로 이를 수정해서 PeekMessage 라는 함수를 사용하였다. 이런식으로 PeekMessage 의 경우에는 메세지가 들어오는 부분과 메세지가 발생하지 않는 부분으로 나뉜다. 하지만 생각보다 메세지를 처리하는 시간이 매우 빠르기때문에 대부분을 처리하지 않는 부분에서 시간을 소비한다. 그러므로 지금부터는 else 부분에서 코드를 작성하고 게임을 만들기로 하였다. 다음으로 공부할 내용으로는 디자인패턴중에서 가장중요한 싱글톤 패턴에 대해서 공부할 예정이다.
2022.12.19