https://hyrule.tistory.com/111 *** 공부 방법 *** 1. 코딩을 해야 하는 부분은 첫 부분에 변수나 함수, 메소드에 대한 선언이 코드블럭으로 표시되어 있다. //ex) MakeFunction(); 2. 코드블럭 하단에는 해당 선언에 대한 구현 로직이 작성되어 있다. 처 hyrule.tistory.com Vector2.h 헤더를 새로 생성하고, math.h를 포함시킨다. struct Vector2 벡터값을 계산할 구조체인 Vector2를 만든다. 이 구조체는 float 타입 x, y 변수(좌표)를 들고 있다. 생성자는 3가지로 오버로딩한다. 아무 인자를 넣지 않으면 0,0으로 초기화 float 타입 2개를 받아 각각 x, y를 초기화 같은 Vector2 타입을 받아 똑같이 초기..
https://hyrule.tistory.com/111 *** 공부 방법 *** 1. 코딩을 해야 하는 부분은 첫 부분에 변수나 함수, 메소드에 대한 선언이 코드블럭으로 표시되어 있다. //ex) MakeFunction(); 2. 코드블럭 하단에는 해당 선언에 대한 구현 로직이 작성되어 있다. 처 hyrule.tistory.com * 가상함수 https://hyrule.tistory.com/70 부모 클래스의 소멸자에 가상함수를 쓰는 이유 class CParent { public: CParent() { std::cout
https://hyrule.tistory.com/111 *** 공부 방법 *** 1. 코딩을 해야 하는 부분은 첫 부분에 변수나 함수, 메소드에 대한 선언이 코드블럭으로 표시되어 있다. //ex) MakeFunction(); 2. 코드블럭 하단에는 해당 선언에 대한 구현 로직이 작성되어 있다. (ex) hyrule.tistory.com [프레임과 게임 처리] 내 컴퓨터는 100프레임 PC방 컴퓨터는 200프레임 게임 코드는 1프레임당 한번 게임 로직을 처리 만약 게임 로직이 1프레임에 5씩 캐릭터를 이동시킨다면 내 컴퓨터에서 500 움직일 동안 PC방 컴퓨터는 1000을 움직이게 된다. 아주 심각한 문제 * 매 프레임마다 한 프레임을 그리는 데 걸렸던 시간을 변수에 저장한다. * 그리고 다음 프레임을 그..
https://hyrule.tistory.com/111 *** 공부 방법 *** 1. 코딩을 해야 하는 부분은 첫 부분에 변수나 함수, 메소드에 대한 선언이 코드블럭으로 표시되어 있다. //ex) MakeFunction(); 2. 코드블럭 하단에는 해당 선언에 대한 구현 로직이 작성되어 있다. (ex) hyrule.tistory.com CGameManager::m_hDC Device Context 핸들을 저장할 변수를 선언한다. 이 핸들은 쉽게 말해 '도화지와 그리기 도구 역할을 수행한다. GetDC() 인자로 윈도우 핸들(HWND)이 들어간다. 해당 윈도우에서 사용할 수 있는 Device Context 핸들을 반환한다. 초기화 시에 위의 변수에 저장해놓자. ReleaseDC() 1번 인자: 윈도우 핸들..
https://hyrule.tistory.com/111 *** 공부 방법 *** 1. 코딩을 해야 하는 부분은 첫 부분에 변수나 함수, 메소드에 대한 선언이 코드블럭으로 표시되어 있다. //ex) MakeFunction(); 2. 코드블럭 하단에는 해당 선언에 대한 구현 로직이 작성되어 있다. (ex) hyrule.tistory.com 지난 1번 글에서, 게임은 왜 GetMessage를 안 쓰고 PeekMessage를 사용하는지 설명했었다. https://hyrule.tistory.com/109 01. 프레임워크에 사용될 WINAPI32 기본 생성 코드 알아보기 [WIN32API] 어렵게 생각할 필요 없이, Windows에서 제공하는 함수의 집합이다. 예를 들어 우리가 게임을 돌리고 있을 때 절전모드에 ..
https://hyrule.tistory.com/111 *** 공부 방법 *** 1. 코딩을 해야 하는 부분은 첫 부분에 변수나 함수, 메소드에 대한 선언이 코드블럭으로 표시되어 있다. //ex) MakeFunction(); 2. 코드블럭 하단에는 해당 선언에 대한 구현 로직이 작성되어 있다. (ex) hyrule.tistory.com #include _CrtSetDbgFlag(_CRTDBG_ALLOC_MEM_DF | _CRTDBG_LEAK_CHECK_DF); 프로그램이 종료되었을 때 누수 여부를 알려준다. CGameManager::CGameManager() { _CrtSetDbgFlag(_CRTDBG_ALLOC_MEM_DF | _CRTDBG_LEAK_CHECK_DF); } 이 코드를 CGameManag..
https://hyrule.tistory.com/111 *** 공부 방법 *** 1. 코딩을 해야 하는 부분은 첫 부분에 변수나 함수, 메소드에 대한 선언이 코드블럭으로 표시되어 있다. //ex) MakeFunction(); 2. 코드블럭 하단에는 해당 선언에 대한 구현 로직이 작성되어 있다. (ex) hyrule.tistory.com 지난 번에 창을 초기화하는 CreateWindowW() 함수에서 1280x720 사이즈로 창의 크기를 설정했었다. 근데, 이 방식에는 문제가 있다. 상단 타이틀바까지 합친 길이로 사이즈를 조정해놓는다는 것이다. 하지만 상단 타이틀바를 제외한 하단 클라이언트 창 영역만 1280x720로 잡는 것이 일반적이기 때문에, CGameManager::Create() 함수에 대한 수정..
1. 코딩을 해야 하는 부분은 첫 부분에 변수나 함수, 메소드에 대한 선언이 코드블럭으로 표시되어 있다. //ex) MakeFunction(); 2. 코드블럭 하단에는 해당 선언에 대한 구현 로직이 작성되어 있다. 처음 보는 함수들에만 설명을 추가해 놓고, 나머지 이미 나왔던 내용들은 구현 방법만 적어놓을 것임. (ex) 이 함수는 int형 변수 x와 y를 인자로 받는다. x와 y의 합을 구해 int형으로 return한다. 3. 해당 구현 로직을 보고 Visual Studio에서 직접 코드를 작성해 본다. 4. 각 글에는 참고용 코드 솔루션 압축파일이 있다. 웬만하면 참고용 코드를 최대한 보지 않고 혼자서 코드를 작성하다가 정 모르겠으면 열어서 확인하자. 이 코드와 내 코드를 비교하여 분석하고, 개선점이..
*** 공부하는 방법 *** 1. 코딩을 해야 하는 부분은 첫 부분에 변수나 함수, 메소드에 대한 선언이 코드블럭으로 표시되어 있다. //ex) MakeFunction(); 2. 코드블럭 하단에는 해당 선언에 대한 구현 로직이 작성되어 있다. (ex) 이 함수는 int형 변수 x와 y를 인자로 받는다. x와 y의 합을 구해 int형으로 return한다. 3. 해당 구현 로직을 보고 Visual Studio에서 직접 코드를 작성해 본다. 4. 각 글에는 참고용 코드 솔루션 첨부파일이 업로드되어 있다. 이 코드와 내 코드를 비교하여 분석하고, 개선점이 있으면 수정한다. 물론 참고 코드가 최고의 방법이라는 것은 아니다. 내가 짠 코드가 더 효율적이라 생각되면 내 코드를 그대로 사용하자. int MakeFunc..
[WIN32API] 어렵게 생각할 필요 없이, Windows에서 제공하는 함수의 집합이다. 예를 들어 우리가 게임을 돌리고 있을 때 절전모드에 진입하는걸 막는다던지 하는 것들을 조정하도록 해 주는 것이다. Window: 메시지 기반의 운영체제이다. 우리가 마우스 조작, 키보드 조작 등을 하는 모든 행위를 '이벤트'라고 한다. 이러한 이벤트가 발생 되면 윈도우즈라는 운영체제는 모든 행위의 이벤트들을 '메시지'로 바꾼다. 마우스를 움직이거나 클릭, 키보드를 입력 등 모든 행위가 이벤트가 되고 해당 이벤트를 메시지로 변경하여 들어오는 메시지에 따라 원하는 동작을 만들어주는 개념이다. 모든 프로그램에는 메시지를 저장하는 메시지 큐가 존재하고 선입선출로 처리한다. 모든 프로그램은 while문을 통해 메시지 큐를 ..