전체 글

WIN32API FrameWork/한단계씩 직접 구현

33. 이미지의 애니메이션화를 위한 준비

http://hyrule.tistory.com/111 *** 공부 방법 *** 1. 코딩을 해야 하는 부분은 첫 부분에 변수나 함수, 메소드에 대한 선언이 코드블럭으로 표시되어 있다. //ex) MakeFunction(); 2. 코드블럭 하단에는 해당 선언에 대한 구현 로직이 작성되어 있다. 처 hyrule.tistory.com - 보통 2D 애니메이션을 구현하는 방법으로는 두 가지가 있다. -1. 스프라이트 아틀라스 -> 이런 식으로 연속적인 이미지를 한 장의 파일에 다 때려박은 뒤, 좌표를 이용하여 한장씩 로딩하는 방식이다. -2. 프레임 -> 이런 식으로 한장 한장 로딩해서 재생하는 방식이다. - 이 두가지 방식 모두 가능하게 구현을 해보자. - 가장 먼저, 들어온 이미지 파일이 둘 중 어떤 타입인..

WIN32API FrameWork/한단계씩 직접 구현

32. 이미지 등의 리소스 관리자

http://hyrule.tistory.com/111 *** 공부 방법 *** 1. 코딩을 해야 하는 부분은 첫 부분에 변수나 함수, 메소드에 대한 선언이 코드블럭으로 표시되어 있다. //ex) MakeFunction(); 2. 코드블럭 하단에는 해당 선언에 대한 구현 로직이 작성되어 있다. 처 hyrule.tistory.com [사전 지식] - WIN32API에서는 일반적으로 이미지를 '정적 라이브러리'인 msimg32.lib를 통해 처리한다. -CF) 라이브러리: 라이브러리는 일종의 다른사람이 만들어 놓은 '코드 덩어리' 이다. -- .lib: 정적 라이브러리 -> 전처리기를 통해 컴파일 이전 단계에서 라이브러리가 구성되어있는 코드를 통으로 링크를 걸어놓고 시작: - .lib파일을 링크하는 방법은 2..

WIN32API FrameWork/한단계씩 직접 구현

31. 이미지 로딩을 위한 준비 - 경로 관리자

http://hyrule.tistory.com/111 *** 공부 방법 *** 1. 코딩을 해야 하는 부분은 첫 부분에 변수나 함수, 메소드에 대한 선언이 코드블럭으로 표시되어 있다. //ex) MakeFunction(); 2. 코드블럭 하단에는 해당 선언에 대한 구현 로직이 작성되어 있다. 처 hyrule.tistory.com [사전 지식] TCHAR Root[MAX_PATH] = {}; GetModuleFileName(0, Root, MAX_PATH); - MAX_PATH: 윈도우에서 기본으로 제공하는 매크로 -> 최대 경로 길이를 설정(260) - GetModuleFileName --1번 인자: 0을 넣어야 실행 파일의 주소가 반환된다. --2번 인자: 실행 파일의 주소를 반환할 문자열의 주소 --..

WIN32API FrameWork/한단계씩 직접 구현

30. 스킬 구현 2 - 아우렐리온 솔 W

http://hyrule.tistory.com/111 *** 공부 방법 *** 1. 코딩을 해야 하는 부분은 첫 부분에 변수나 함수, 메소드에 대한 선언이 코드블럭으로 표시되어 있다. //ex) MakeFunction(); 2. 코드블럭 하단에는 해당 선언에 대한 구현 로직이 작성되어 있다. 처 hyrule.tistory.com - 이번에도 이미지로 설명이 더 빠를 것 같아 이미지로 설명을 대신한다. - 해당 내용을 구현해보자. - 초기화할 때 주인 포인터를 등록하고, 해당 주인 포인터를 따라다녀야 한다. - 별들은 모두 거리를 동일하게 유지한 채 회전한다. - (연습을 위해)Shift + 2 키를 누르면 아우렐리온 솔의 w를 누른 것과 동일한 효과를 발동시킨다. - 그냥 원을 그려주는 클래..

WIN32API FrameWork/한단계씩 직접 구현

29. CreateObject 메소드 수정

http://hyrule.tistory.com/111 *** 공부 방법 *** 1. 코딩을 해야 하는 부분은 첫 부분에 변수나 함수, 메소드에 대한 선언이 코드블럭으로 표시되어 있다. //ex) MakeFunction(); 2. 코드블럭 하단에는 해당 선언에 대한 구현 로직이 작성되어 있다. 처 hyrule.tistory.com [사전 지식] - this는 nullptr이 될 수 없다.(에러가 발생한다.) ▼해당 코드를 public: template T* CreateObject(const std::string& Name = "GameObject", void* Master = nullptr) { //들어온 T타입의 게임오브젝트를 생성한다. T* Obj = new T; //초기화 함수를 작동시키고 실패하면 ..

WIN32API FrameWork/한단계씩 직접 구현

28. 스킬 구현 1 - 토네이도 총알

http://hyrule.tistory.com/111 *** 공부 방법 *** 1. 코딩을 해야 하는 부분은 첫 부분에 변수나 함수, 메소드에 대한 선언이 코드블럭으로 표시되어 있다. //ex) MakeFunction(); 2. 코드블럭 하단에는 해당 선언에 대한 구현 로직이 작성되어 있다. 처 hyrule.tistory.com - 설명보다 이미지를 보는게 더 빠르게 이해될것 같아서 이미지로 첨부. - 이걸 구현해보자. - 전반적인 구현 방법은 CBullet과 비슷하다. 새 클래스를 만들어고 CBullet 코드를 복사하여 수정하면 된다. - 힌트 -- 내가 철퇴를 들고 앞으로 돌진하면서 훨윈드를 돌고있는데, 철퇴 끝 부분만 표시되고 있다고 생각하면 된다. -- '나'는 표시되지 않지만, 위치값(Vecto..

WIN32API FrameWork/한단계씩 직접 구현

27. 스킬 쿨타임

http://hyrule.tistory.com/111 *** 공부 방법 *** 1. 코딩을 해야 하는 부분은 첫 부분에 변수나 함수, 메소드에 대한 선언이 코드블럭으로 표시되어 있다. //ex) MakeFunction(); 2. 코드블럭 하단에는 해당 선언에 대한 구현 로직이 작성되어 있다. 처 hyrule.tistory.com - 사실 스킬 쿨타임은 개별적으로 구현해도 전혀 상관없지만, 통일성과 편의성을 위해 구조체와 열거체, vector 자료구조를 사용하여 구현해 보자. - 스킬 쿨타임 정보를 담은 구조체를, 배열 vector 안에 넣어서 관리하고, - 스킬을 사용하는 각 클래스는 열거체에 각 스킬의 순서를 정해놓고 , vector 자료구조에 해당 번호로 저장해준 뒤, 필요할 때마다 꺼내서 사용한다...

자습

vector 자료구조에서도 iterator 사용 가능

#include #include #include #include int main() { std::vector vec[3]; for (int i = 0; i begin(); std::vector::iterator iterEnd = vec->end(); while (iter != iterEnd) { printf("%d\n", *iter); ++iter; } printf("%d\n", (int)vec->size()); return 0; } - 이차원 배열 형태로 사용할 시, 각 열마다 begin()과 end()가 존재

WIN32API FrameWork/한단계씩 직접 구현

26. Input 기능 개선 - 입력 바인딩 제거하기

http://hyrule.tistory.com/111 *** 공부 방법 *** 1. 코딩을 해야 하는 부분은 첫 부분에 변수나 함수, 메소드에 대한 선언이 코드블럭으로 표시되어 있다. //ex) MakeFunction(); 2. 코드블럭 하단에는 해당 선언에 대한 구현 로직이 작성되어 있다. 처 hyrule.tistory.com [사전 지식] #ifdef _DEBUG //...코드...// #endif - #이 사용됨 -> 전처리기 - #ifdef 뒤의 문구가 #define으로 정의되어 있으면, 밑에 있는 코드부터 #endif 전까지를 컴파일 할 때 포함시킨다. - #ifdef _DEBUG: 디버그모드로 실행시킬 시 다음 코드를 포함시키겠다는 뜻. - 게임 중에 플레이어가 죽거나, 게임 -> 메뉴로 넘어..

WIN32API FrameWork/한단계씩 직접 구현

25. GameObject의 주/종관계 형성

http://hyrule.tistory.com/111 *** 공부 방법 *** 1. 코딩을 해야 하는 부분은 첫 부분에 변수나 함수, 메소드에 대한 선언이 코드블럭으로 표시되어 있다. //ex) MakeFunction(); 2. 코드블럭 하단에는 해당 선언에 대한 구현 로직이 작성되어 있다. 처 hyrule.tistory.com - 조만간 만들어볼 스킬에 쓰일 기능. - 모든 CGameObject는 자신을 생성한 객체에 대한 m_MasterObject 포인터와, 자신이 생성한 객체에 대한 m_SlaveObject 포인터를 가진다. -- Master 포인터는 하나이고(자신을 생성한 객체는 하나일수밖에 없으므로) -- Slave 포인터는 여러개일 수 있으므로 데이터를 모아둘 자료구조를 사용해야 한다. (Hi..

WIN32API FrameWork/한단계씩 직접 구현

24. 입력을 받아 총을 발사하는 플레이어

http://hyrule.tistory.com/111 *** 공부 방법 *** 1. 코딩을 해야 하는 부분은 첫 부분에 변수나 함수, 메소드에 대한 선언이 코드블럭으로 표시되어 있다. //ex) MakeFunction(); 2. 코드블럭 하단에는 해당 선언에 대한 구현 로직이 작성되어 있다. 처 hyrule.tistory.com - 이건 이미 구현해둔 내용들 덕분에 너무 쉽게 구현이 가능하다. - Space 키가 한 번 눌리면 총알을 한 번 발사하는 기능을 구현해보자. 더보기 //Player.h //버튼이 눌리면 진입할 메소드 private: void GunFire(); //Player.cpp bool CPlayer::Init() { //...기존 코드...// //스페이스 키를 등록 CInput::Ge..

hyrule
C++ 프로그래밍 공부