WIN32API FrameWork/한단계씩 직접 구현

WIN32API FrameWork/한단계씩 직접 구현

21. 총알 발사하기 / 목표물까지의 각도 구하기

https://hyrule.tistory.com/111 *** 공부 방법 *** 1. 코딩을 해야 하는 부분은 첫 부분에 변수나 함수, 메소드에 대한 선언이 코드블럭으로 표시되어 있다. //ex) MakeFunction(); 2. 코드블럭 하단에는 해당 선언에 대한 구현 로직이 작성되어 있다. 처 hyrule.tistory.com class CBullet - 총알 클래스를 생성한다. -- 구현이 매우 간단하다. 생성된 위치에서 지정된 방향으로 지정된 속도만큼 이동해주면 끝이기 때문이다. -- 충돌 처리는 나중에 아예 충돌만 처리하는 클래스를 만들어 처리할 것이다. 일단 충돌이 없더라도 맛만 보자. --- 화면을 벗어나면 객체를 삭제하는 기능 --- 총알을 생성했는데, 방향과 속도를 지정..

WIN32API FrameWork/한단계씩 직접 구현

20. (활용)몬스터 만들기

https://hyrule.tistory.com/111 *** 공부 방법 *** 1. 코딩을 해야 하는 부분은 첫 부분에 변수나 함수, 메소드에 대한 선언이 코드블럭으로 표시되어 있다. //ex) MakeFunction(); 2. 코드블럭 하단에는 해당 선언에 대한 구현 로직이 작성되어 있다. 처 hyrule.tistory.com - 플레이어 클래스의 코드를 참고하여 몬스터 클래스를 생성한다. - 화면 위아래로 움직이는 몬스터를 렌더링해보자. - 화면 끝에 부딪히면 반대로 이동한다. - 이미 전반적인 기능은 다 구현해놓았기 때문에 금방 만들 수 있다. - 정말 안되겠다 싶은경우에만 코드 확인 더보기 * Monster 클래스는 게임오브젝트 안에 생성해야 한다! //Monster.h #pragma once ..

WIN32API FrameWork/한단계씩 직접 구현

19. Input 입력 구조 설계 2

https://hyrule.tistory.com/111 *** 공부 방법 *** 1. 코딩을 해야 하는 부분은 첫 부분에 변수나 함수, 메소드에 대한 선언이 코드블럭으로 표시되어 있다. //ex) MakeFunction(); 2. 코드블럭 하단에는 해당 선언에 대한 구현 로직이 작성되어 있다. 처 hyrule.tistory.com SetKeyCtrl(); SetKeyAlt(); SetKeyShift(); - 편의를 위해 내가 지정한 키에 키조합을 추가하는 함수를 추가한다. - 인자로 이름과, 메소드명에 있는 키를 활성화시킬건지 여부를 bool변수로 받는다. 이 때, bool변수는 따로 입력하지 않으면 기본값을 true로 전달한다. - 인자로 받은 이름에 해당하는 키 조합이 있는지 찾고, 해당 키 조합에서..

WIN32API FrameWork/한단계씩 직접 구현

18. Input 입력 구조 설계 1

https://hyrule.tistory.com/111 *** 공부 방법 *** 1. 코딩을 해야 하는 부분은 첫 부분에 변수나 함수, 메소드에 대한 선언이 코드블럭으로 표시되어 있다. //ex) MakeFunction(); 2. 코드블럭 하단에는 해당 선언에 대한 구현 로직이 작성되어 있다. 처 hyrule.tistory.com [입력 시스템] * 키 누름, 키 뗌 등 뿐만 아니라 * 키 조합, 마우스 클릭 등 입력에 관한 전반을 처리해주는 클래스 * + 격투게임 같은 경우 커맨드 처리까지 해 준다. * 입력 통합 관리자 [간단한 구현 로직] * 키 조합을 관리하는 구조체를 생성한다. - 이 구조체에는 이름, 어떤 키를 누르는지, 키조합이 있는지, 이 키조합이 확인되었다면 어떤 함수를 실행시킬 것인지(..

WIN32API FrameWork/한단계씩 직접 구현

17. Scene을 통한 최종 출력

http://hyrule.tistory.com/111 *** 공부 방법 *** 1. 코딩을 해야 하는 부분은 첫 부분에 변수나 함수, 메소드에 대한 선언이 코드블럭으로 표시되어 있다. //ex) MakeFunction(); 2. 코드블럭 하단에는 해당 선언에 대한 구현 로직이 작성되어 있다. 처 hyrule.tistory.com CSceneManager::Update(); CGameManager::Update(); CSceneManager::Render(); CGameManager::Render(); - 시작하기에 앞서 CGameManager에서 동적할당했던 CPlayer 관련 코드는 전부 지워준다. - 지난번에 CScene 클래스에서 게임오브젝트들에 대한 Update()와 Render() 메소드는 다 ..

WIN32API FrameWork/한단계씩 직접 구현

16. (기타 설정)복사 생성자, TypeID 지정

CGameObject를 상속받는 모든 클래스들에 대해 복사 생성자를 설정해 준다. 상속 관계에 있는 경우, 복사 생성자에서 부모 클래스의 복사 생성자도 호출해 주어야 부모 클래스에 있는 변수들까지도 복사가 가능하므로 주의. 앞으로 만들 모든 CGameObject 상속 클래스들에 대해서도 동일하다. 나중에 유용하게 사용할 수 있다. (CRef의 경우 지난 번에 만들었음 - 모르겠으면 이거 참고) 마찬가지로, 모든 CGameObject 생성자에 SetTypeID() 메소드를 돌려 주자. 매크로를 통해 이 과정을 자동으로 처리할 수도 있지만(언리얼 엔진이 이렇게 되어 있음) 아직은 배우는 단계이므로 하나하나 추가해 주자. ▼예시 - CCharacter의 상속을 받는 CPlayer의 생성자와 복사 생성자 더보기..

WIN32API FrameWork/한단계씩 직접 구현

15. 참조 카운트로 게임오브젝트 관리

https://hyrule.tistory.com/111 *** 공부 방법 *** 1. 코딩을 해야 하는 부분은 첫 부분에 변수나 함수, 메소드에 대한 선언이 코드블럭으로 표시되어 있다. //ex) MakeFunction(); 2. 코드블럭 하단에는 해당 선언에 대한 구현 로직이 작성되어 있다. 처 hyrule.tistory.com gameinfo.h SAFE_RELEASE(p) 앞으로 RefCount를 사용하는 객체들은 직접 delete를 하지 않는다. 대신, 수동으로 RefCount를 하나 내려줄 수 있게, Release() 함수를 호출하는 매크로를 하나 만들어 놓자. 더보기 #define SAFE_RELEASE(p) if(p) { p->Release(); p = nullptr; } //기존 CGame..

WIN32API FrameWork/한단계씩 직접 구현

14. 씬 Scene 구조 짜기

https://hyrule.tistory.com/111 *** 공부 방법 *** 1. 코딩을 해야 하는 부분은 첫 부분에 변수나 함수, 메소드에 대한 선언이 코드블럭으로 표시되어 있다. //ex) MakeFunction(); 2. 코드블럭 하단에는 해당 선언에 대한 구현 로직이 작성되어 있다. 처 hyrule.tistory.com Scene 관련 소스코드들은 앞으로 Include/Scene 폴더 안에 저장한다. 폴더를 직접 만든 후 클래스 생성 시 클래스 파일명 앞에 Scene/을 붙여 주면 된다. 솔루션 탐색기 상에서도, Scene 필터를 하나 생성하여 모아놓는다. class CSceneManager - 싱글턴 패턴으로 생성 - 씬매니저는 일단 초기화 메소드만 생성해 놓는다. 더보기 //SceneMan..

WIN32API FrameWork/한단계씩 직접 구현

13. 참조 카운트(Reference Count), 공유 포인터(Shared Pointer)

http://hyrule.tistory.com/111 *** 공부 방법 *** 1. 코딩을 해야 하는 부분은 첫 부분에 변수나 함수, 메소드에 대한 선언이 코드블럭으로 표시되어 있다. //ex) MakeFunction(); 2. 코드블럭 하단에는 해당 선언에 대한 구현 로직이 작성되어 있다. 처 hyrule.tistory.com [사전 지식] 동적할당한 객체는 직접 다시 동적할당을 해제해주어야 한다. 만약 여러 포인터가 같은 주소를 가르키고 있었는데 할당이 해제가 되었다면, 남아있는 포인터 변수들은 Dangling Pointer가 되어 버린다. 하지만 참조 카운팅 방식을 사용하면, 동적할당된 객체는 자신이 몇 개의 포인터로부터 참조가 되고 있는지를 카운트한다. 각 포인터 변수가 사라진다면(소멸자가 호출된..

WIN32API FrameWork/한단계씩 직접 구현

12. 삼각함수를 통해 Player에 총을 달아주고 회전/이동시키기

https://hyrule.tistory.com/111 *** 공부 방법 *** 1. 코딩을 해야 하는 부분은 첫 부분에 변수나 함수, 메소드에 대한 선언이 코드블럭으로 표시되어 있다. //ex) MakeFunction(); 2. 코드블럭 하단에는 해당 선언에 대한 구현 로직이 작성되어 있다. 처 hyrule.tistory.com Vector2.h 지난번에 사칙연산의 연산자 재정의를 할 때 값을 참조만 하는 연산자들에 대해 const 함수를 붙이지 않아서 수정하였음. GameInfo.h SAFE_DELETE 매크로와 SAFE_DELETE_ARRAY를 추가한다. 만약 p가 있으면 p를 삭제하는 매크로이다. 플레이어에게 총구를 달아주고, A, D버튼으로 총구를 좌우로 회전시키며 W, S 버튼으로는 총구 방향..

WIN32API FrameWork/한단계씩 직접 구현

11. Player에게 총을 달아주고 입력을 받아 회전시키기

https://hyrule.tistory.com/111 *** 공부 방법 *** 1. 코딩을 해야 하는 부분은 첫 부분에 변수나 함수, 메소드에 대한 선언이 코드블럭으로 표시되어 있다. //ex) MakeFunction(); 2. 코드블럭 하단에는 해당 선언에 대한 구현 로직이 작성되어 있다. 처 hyrule.tistory.com //편의성을 위한 수정 LRESULT CGameManager::WndProc() 편의성을 위해 위 메소드에 아래 코드를 추가하였다. esc 키를 누르면 프로그램이 종료된다. case WM_KEYDOWN: if (wParam == VK_ESCAPE) { m_Loop = false; PostQuitMessage(0); } break; if (GetAsyncKeyS..

WIN32API FrameWork/한단계씩 직접 구현

10. Vector2를 활용하여 캐릭터를 원하는 위치에 표시하기

https://hyrule.tistory.com/111 *** 공부 방법 *** 1. 코딩을 해야 하는 부분은 첫 부분에 변수나 함수, 메소드에 대한 선언이 코드블럭으로 표시되어 있다. //ex) MakeFunction(); 2. 코드블럭 하단에는 해당 선언에 대한 구현 로직이 작성되어 있다. 처 hyrule.tistory.com WIN32API의 좌표계는 우리가 일반적으로 사용하는 데카르트 좌표계와 다르다. x축은 그대로이지만, y축은 정반대이다. //기존 클래스에 내용 추가 class CGameObject GameObject 클래스를 상속받는 모든 클래스는 앞으로 위치를 저장한다. 캐릭터를 원하는 위치에 원하는 모습으로 렌더링하기 위해서는 변수가 3가지 필요하다. 오브젝트의 위치를 나타내는 m_Pos..

hyrule
'WIN32API FrameWork/한단계씩 직접 구현' 카테고리의 글 목록 (6 Page)