전체 글

WIN32API FrameWork/한단계씩 직접 구현

74. 타일맵 에디터 5: Save & Load

http://hyrule.tistory.com/111 *** 공부 방법 *** 1. 코딩을 해야 하는 부분은 첫 부분에 변수나 함수, 메소드에 대한 선언이 코드블럭으로 표시되어 있다. //ex) MakeFunction(); 2. 코드블럭 하단에는 해당 선언에 대한 구현 로직이 작성되어 있다. 처 hyrule.tistory.com [ 다이얼로그 ] - Save 버튼, Load 버튼을 만들어준다. class CSceneEditDlg - 세이브 & 로드 버튼을 눌렀을 때 작동할 함수를 만들어주고, WinProc() 함수에서 버튼을 눌렀을 때 이 함수가 호출되도록 설정해 준다. - 가장 먼저 CSceneEdit이 타일맵을 생성해서 들고있는지부터 확인한다. -..

WIN32API FrameWork/한단계씩 직접 구현

73. 타일맵 에디터 4: 기타 기능 추가.

http://hyrule.tistory.com/111 *** 공부 방법 *** 1. 코딩을 해야 하는 부분은 첫 부분에 변수나 함수, 메소드에 대한 선언이 코드블럭으로 표시되어 있다. //ex) MakeFunction(); 2. 코드블럭 하단에는 해당 선언에 대한 구현 로직이 작성되어 있다. 처 hyrule.tistory.com [ 다이얼로그 창 ] - 프레임 편집, 이동 가능 여부를 설정할 수 있는 기능을 구현한다. - 다이얼로그에서 값을 지정하고 클라이언트 영역에서 드래그하면 일괄적으로 값이 설정되도록 하는것이다. - 콤보박스(드롭다운 메뉴)를 두개 만들어준다. -- ID를 IDC_COMBO_BRUSH_TYPE, IDC_COMBO_OPTION으로 설정하고, 정렬은 false로 해준다. --- 왼쪽의 ..

WIN32API FrameWork/한단계씩 직접 구현

72. 타일맵 에디터 3: 스프라이트 텍스처의 프레임 좌표 지정

http://hyrule.tistory.com/111 *** 공부 방법 *** 1. 코딩을 해야 하는 부분은 첫 부분에 변수나 함수, 메소드에 대한 선언이 코드블럭으로 표시되어 있다. //ex) MakeFunction(); 2. 코드블럭 하단에는 해당 선언에 대한 구현 로직이 작성되어 있다. 처 hyrule.tistory.com class CSceneEdit - 지난번 코드에 메모리 누수가 발생하는 문제가 있어 수정하였다. - _CrtSetBreakAlloc() 함수를 통해 확인해 보니, 다이얼로그 클래스를 생성할 때 문제가 발생하는 것을 확인. -- 원인은 다이얼로그 창을 여러번 닫았다 열었다 할 때, 기존 다이얼로그 창 클래스가 제거되지 않아 발생했다. -- 다이얼로그를 관리하는 클래스인 CScene..

WIN32API FrameWork/한단계씩 직접 구현

71. 타일맵 에디터2: 타일에 텍스처 지정

http://hyrule.tistory.com/111 *** 공부 방법 *** 1. 코딩을 해야 하는 부분은 첫 부분에 변수나 함수, 메소드에 대한 선언이 코드블럭으로 표시되어 있다. //ex) MakeFunction(); 2. 코드블럭 하단에는 해당 선언에 대한 구현 로직이 작성되어 있다. 처 hyrule.tistory.com class EditDlg - 지난 번에 텍스처를 로드하는 과정까지는 완료했다. - 이번에는 텍스처 파일을 불러와 특정 텍스처 파일로 타일맵을 만들어 보자. - ' 이미지 불러오기 ' 버튼을 하나 생성해준다. - 버튼이 눌릴 시 LoadTexture() 메소드를 호출한다. - '파일 열기' 대화창을 불러..

WIN32API FrameWork/한단계씩 직접 구현

70. Font 관련 수정

http://hyrule.tistory.com/111 *** 공부 방법 *** 1. 코딩을 해야 하는 부분은 첫 부분에 변수나 함수, 메소드에 대한 선언이 코드블럭으로 표시되어 있다. //ex) MakeFunction(); 2. 코드블럭 하단에는 해당 선언에 대한 구현 로직이 작성되어 있다. 처 hyrule.tistory.com - 지난번에 만든 CFont, CFontManager 관련해서, 글꼴이 바뀌지 않는 문제가 있어 수정이 필요하다. - 폰트가 위에서 아래로 바뀌어서 잘 적용되고 있는 줄 알았는데, 알고 보니 원하는 폰트로 바뀐 것이 아니라 폰트가 제대로 로드되지 않아 윈도우 기본 출력인 굴림체로 바뀐 것이었다. - 다른 폰트를 로드해 봤는데 똑같은 폰트만 출력되어서 알아챘음. [ 문제점 ] - ..

WIN32API FrameWork/한단계씩 직접 구현

69. 타일맵 에디터1: 제작 및 타일맵 불러오기

http://hyrule.tistory.com/111 *** 공부 방법 *** 1. 코딩을 해야 하는 부분은 첫 부분에 변수나 함수, 메소드에 대한 선언이 코드블럭으로 표시되어 있다. //ex) MakeFunction(); 2. 코드블럭 하단에는 해당 선언에 대한 구현 로직이 작성되어 있다. 처 hyrule.tistory.com - 타일맵을 쓰는 이유는 편의성에 있다. - 맵을 일일히 그려낼 필요 없이, 타일 배치에 따라서 맵을 만들 수 있게 되기 때문이다. - 아예 맵을 마우스를 이용해 찍어낼 수 있다면, 더욱더 편할 것이다. - 다이얼로그 창을 하나 만든다. 필터에 우클릭 - 추가 - 리소스 - 다이얼로그를 해주면 된다. - 그러면 이런 창이 뜬다. - 이후 이 창에서 ALT + ENTER를 입력 시..

WIN32API FrameWork/한단계씩 직접 구현

68. 타일 맵

http://hyrule.tistory.com/111 *** 공부 방법 *** 1. 코딩을 해야 하는 부분은 첫 부분에 변수나 함수, 메소드에 대한 선언이 코드블럭으로 표시되어 있다. //ex) MakeFunction(); 2. 코드블럭 하단에는 해당 선언에 대한 구현 로직이 작성되어 있다. 처 hyrule.tistory.com - 화장실 타일 깔듯이 게임을 일정 구획으로 나누고, 구획별로 그림을 붙여서 커다란 맵을 만드는 방식 - 행렬 또는 이차원 배열 구성으로 생각해야 한다. - 그러므로 각 타일은 X좌표와 Y좌표를 저장해야 한다. - 슈퍼마리오가 대표적인 타일맵 구성이다. flag.h { enum class ETileOption } - 해당 타일이 갈 수 있는 곳인지 없는 곳인지를 저장하기 위해 만..

WIN32API FrameWork/한단계씩 직접 구현

67. 화면의 확대

http://hyrule.tistory.com/111 *** 공부 방법 *** 1. 코딩을 해야 하는 부분은 첫 부분에 변수나 함수, 메소드에 대한 선언이 코드블럭으로 표시되어 있다. //ex) MakeFunction(); 2. 코드블럭 하단에는 해당 선언에 대한 구현 로직이 작성되어 있다. 처 hyrule.tistory.com * WIN32API로 고전 도트 게임을 만들어볼 사람들에게만 해당되는 글임 - 요즘 나오는 도트 게임들은 일반적으로 아예 도트 하나가 여러 픽셀로 확대된 이미지를 사용하지만, - 고전 도트게임은 아래처럼 아예 한 도트가 한 픽셀인 작은 이미지를 확대하여 쓰는 경우가 많았다. - 그렇기에 고전 도트게임을 WIN32API에서 출력하려면 애로사항이 있다. -- 아예 Scale 개념을 ..

WIN32API FrameWork/한단계씩 직접 구현

66. 오브젝트 컬링

http://hyrule.tistory.com/111 *** 공부 방법 *** 1. 코딩을 해야 하는 부분은 첫 부분에 변수나 함수, 메소드에 대한 선언이 코드블럭으로 표시되어 있다. //ex) MakeFunction(); 2. 코드블럭 하단에는 해당 선언에 대한 구현 로직이 작성되어 있다. 처 hyrule.tistory.com - 오브젝트 컬링(Culling: 도태)이란 화면 밖의 물체들을 렌더링하지 않고 스킵하는 것을 말한다. - 사실, 지난번에 간단한 컬링을 만들기는 했다.(근데 &&이 아니라 ||로 해놔서 작동이 되지는 않고 있었음...) CGameObject의 위치(점)만 기준으로 해서 해당 점이 화면 안에 있을 때만 출력했던 것이다. - 그런데 이게 사실 그냥 이렇게 해버리면 문제가 있다. -..

WIN32API FrameWork/한단계씩 직접 구현

65. 간단한 점프 물리 법칙

http://hyrule.tistory.com/111 *** 공부 방법 *** 1. 코딩을 해야 하는 부분은 첫 부분에 변수나 함수, 메소드에 대한 선언이 코드블럭으로 표시되어 있다. //ex) MakeFunction(); 2. 코드블럭 하단에는 해당 선언에 대한 구현 로직이 작성되어 있다. 처 hyrule.tistory.com GameInfo.h - GRAVITY = 9.8f 로 정의해놓자. class CGameObject; protected://물리 처리 bool m_PhysicsSimulate; bool m_Ground; float m_GravityAccel; float m_FallTime; float m_FallStartY; bool m_Jump; float m_JumpVelocity; publi..

WIN32API FrameWork/한단계씩 직접 구현

64. 텍스트 출력

http://hyrule.tistory.com/111 *** 공부 방법 *** 1. 코딩을 해야 하는 부분은 첫 부분에 변수나 함수, 메소드에 대한 선언이 코드블럭으로 표시되어 있다. //ex) MakeFunction(); 2. 코드블럭 하단에는 해당 선언에 대한 구현 로직이 작성되어 있다. 처 hyrule.tistory.com class CWidgetText - 텍스트를 받아 출력하는 위젯을 생성한다. -- vector를 구현하는 것과 비슷한 느낌으로 구현하면 된다. 더보기 #pragma once #include "Widget.h" class CWidgetText : public CWidget { friend class CWidgetComponent; friend class CWidg..

WIN32API FrameWork/한단계씩 직접 구현

멤버함수와 전역함수의 이름이 겹칠 때

void SetTextColor(unsigned char r, unsigned char g, unsigned char b); - 이런 함수를 만들었다고 가정했는데 알고보니 void SetTextCOlor(HDC hDC, COLORREF Color); - 전역함수에 이런 함수가 존재해서 이름이 겹쳐서 호출이 안된다면? -> 이럴 경우 앞에 '범위 지정 연산자'인 ::을 붙여주면 전역함수 호출이 가능하다. ::SetTextColor(hDC, RGB(0, 0, 0));

hyrule
C++ 프로그래밍 공부