전체 글 10

DirectX 3D 8일차 - App Class

www.youtube.com/watch?v=zZZoqEcMfwQ&list=PLqCJpWy5Fohd3S7ICFXwUomYW0Wv67pDD&index=11 App Class App Class는 main 함수에 작성할 예정이었던 게임 루프를 캡슐화시키기 위한 클래스입니다. 생성자 App() - App Class는 기존에 main 함수에서 만들었던 Window Class로 변수를 클래스 변수로 가지고 있기 때문에 생성자에서 Window Class 변수에 생성자를 통해 할당해줍니다. 변수 Window wnd - 오류 메시지에서 어느 라인에서 오류가 났는지를 표시하기 위해 만든 클래스 변수 MyTimer timer - 프레임같은 여러 시간 작업을 표시하기 위해서 만든 변수 함수 int Go() - 가장 기본이 되는..

game dev/directX 3D 2021.04.12

DirectX 3D 7일차 - 타이머, 예외처리 클래스(MyTimer, MyException)

www.youtube.com/watch?v=QYGLXhulvVQ&list=PLqCJpWy5Fohd3S7ICFXwUomYW0Wv67pDD&index=8 MyException Class MyException class는 예외처리를 할 때 일반적으로 예외처리를 해주는 것이 아닌 제가 원하는 형태로 원하는 정보를 추가 후 에러 메시지를 반환하게 해주기 위해서 만든 클래스입니다. std::exception을 상속받아서 만들어진 커스텀클래스입니다. 생성자 MyEMyException(int line, const char* file) noexcept - 생성자 인자로 정수형 line과 문자열 file을 가져와서 클래스 변수 line과 file에 할당해줍니다. 변수 int line - 오류 메시지에서 어느 라인에서 오류..

game dev/directX 3D 2021.04.12

DirectX 3D 6일차 - 마우스 클래스(Mouse Class)

www.youtube.com/watch?v=1ufYQA8dex0&list=PLqCJpWy5Fohd3S7ICFXwUomYW0Wv67pDD&index=6 Event Class Type - 마우스 이벤트가 어떤 상황에서 발생했는지를 지정하기 위한 열거형 변수 타입. LPress - 마우스 왼쪽 키가 눌렸을 때 발생하는 이벤트 LRelease - 마우스 왼쪽키가 눌렸다가 다시 띄워젔을때 발생하는 이벤트 RPress - 마우스 오른키가 눌렸을 때 발생하는 이벤트 RRelease - 마우스 오른키가 눌렸다가 다시 띄워젔을때 발생하는 이벤트 WheelUp - 마우스 휠이 위쪽으로 움직였을 때 발생하는 이벤트 WheelDown - 마우스 휠이 아래쪽으로 움직였을 때 발생하는 이벤트 Move - 마우스가 움직였을 때 발..

game dev/directX 3D 2021.04.12

DirectX 3D 5일차 - 키보드 클래스(Keyboad Class)

www.youtube.com/watch?v=h7HCdEyGRRw&list=PLqCJpWy5Fohd3S7ICFXwUomYW0Wv67pDD&index=9 키보드의 입력과 처리를 위한 클래스인 Keyboard 클래스입니다. 키보드 클래스 안에는 키보드가 눌렸을 때 처리하기 위한 Event 클래스부터 알아보겠습니다. Event Class Type - 키보드 이벤트가 어떤 상황에서 발생했는지를 지정하기 위한 열거형 변수 타입. Press - 키보드가 눌렸을 때 발생하는 이벤트 Release - 키보드가 눌렸다가 다시 띄워젔을때 발생하는 이벤트 Invalid - 유효하지않은 키보드를 눌렀을 때 Type type - 해당 이벤트가 어떤 이벤트인지를 지정하기 위한 변수. unsigned char code - 어떤 키보..

game dev/directX 3D 2021.04.12

DirectX 3D 4일차 - 윈도우 메시지 사용해보기

오늘은 Window클래스와 하위 클래스인 WindowClass가 추가되었습니다. Window 클래스는 저희가 WinMain 함수에서 구현을 했었던 여러 작업들(윈도우 클래스 등록, 윈도우 객체 생성)을 클래스로 구현을 하면서 캡슐화를 시킨것입니다. WindowClass의 헤더파일입니다. 일단 선언되어 있는 것을 차례대로 본다면 public으로 GetName과, GetInstance라는 함수 2개가 존재하는데요. 밑에 private으로 선언된 영역에 hInstance와 wndClassName을 반환하는 함수인것 같습니다. 그리고 WindowClass의 private 영역을 본다면 생성자와 소멸자, 연산자와 싱글톤을 위한 static 변수와 이름, 인스턴스 등이 있습니다. 먼저 윈도우 클래스의 생성자를 보시..

game dev/directX 3D 2021.04.11

pandas, matplotlib

pandas란? 데이터 분석에 자주 사용하는 테이블 형태를 다룰 수 있는 라이브러리로서 Series, DataFame, Panel을 지원하고 보통 실생활, 현장, 산업에서 쓰이는 데이터들은 엑셀 같은 2차원 형태의 표 형태로 만들어 놓는 경우가 많은데 그런 표 형태 데이터에서 자료를 읽어오거나 사용하기 쉽게 해주는 라이브러리라고 보시면 됩니다. Series - 1차원 자료구조 DataFrame - 2차원 자료구조 이제 Series와 DataFrame과 matplotlib로 그래프를 그려보는 것을 해보겠습니다. 하지만 시작하기전에 저는 코랩이라는 구글에서 지원하는 파이썬 작성기를 사용하게 되었는데 코랩의 좋은 점은 파일 접근을 할 때 구글 드라이브에 있는 파일들에도 접근 가능하다는 것입니다. 주피터 같은 ..

study/python 2021.04.03

유전자 알고리즘

유전자 알고리즘이란? 자연세계의 진화과정에 기초한 계산 모델로서 1962년 존 홀랜드에 의해서 개발되었습니다. 여기서 자연세계의 진화과정이란 적자생존의 원리로서 열성 인자는 도태되고 우성 인자는 유전됨으로써 최상의 유전자를 발견해내면서 진화하는 것으로 유전자 알고리즘은 바로 이 최상위 유전자를 찾는 알고리즘 입니다. 유전자 알고리즘은 선택 연산과 교배 연산, 돌연변이 연산을 통해 최적화 문제 해결 기법을 제공합니다. 첫번째로 저희가 도출해낼 값의 후보를 염색체로 암호화를 해야됩니다. 이게 무슨말이냐면 예를 들어 실수형 변수 x, y가 있다고 하면 그 x와 y를 가지고서 특별한 암호화 인코딩을 통해서 염색체로 만든다는 것입니다. 그렇게 만들어진 염색체들중에 적합한 것 여러개를 찾아서 결합(교배)하고 반복하..

study/algorithm 2021.04.01

DirectX 3D 3일차 - 윈도우 메시지 사용해보기

오늘은 윈도우 메시지를 활용하여 여러 가지 해보는 것 같습니다. www.youtube.com/watch?v=UUbXK4G_NCM&list=PLqCJpWy5Fohd3S7ICFXwUomYW0Wv67pDD&index=5 우선 새 클래스를 하나 만들었습니다. WindowsMessageMap이라는 클래스인데요, 기본적으로는 윈도우 메시지 ID를 매핑하기 위해서 사용하는 클래스입니다. 헤더 파일과 소스파일은 깃허브에서 WindowsMessageMap.cpp와 WindowsMessageMap.h를 찾아서 사용하시면 됩니다. 영상 기준 ChiliWin.h라는 파일이 없으면 에러를 배출해서 ChiliWin.h까지 깃허브에서 받아서 사용하시길 권장드립니다. 이 ChillWin.h와 WindowsMessageMap에 관해서..

game dev/directX 3D 2021.03.29

DirectX 3D 2일차 - 윈도우 메시지 처리하기(WndProc)

안녕하세요. 오늘은 윈도우 창에 메시지 처리하는 과정을 다루어 보겠습니다. www.youtube.com/watch?v=Fx5bGZ3B_CI&list=PLqCJpWy5Fohd3S7ICFXwUomYW0Wv67pDD&index=4 저번 글에서는 무한루프를 사용해서 창을 띄우기만 했었습니다. 이 영상에서 말하길 게임은 기본적으로 한 가지 루프를 반복적으로 돌린다고 하네요. 윈도우창에서 마우스를 클릭하거나 움직였을 때 해당하는 메시지가 윈도우 창 메시지 큐에 쌓이게 될 것입니다. 그 후 GetMessage() 함수를 통해 가져온 다음 DispatchMessage()라는 함수를 사용하여 WndProc(윈도우 프로시저) 함수에 해당 메시지를 전송하게 됩니다. 이 WndProc는 프로그래머가 직접 구현하는 영역이지만 ..

game dev/directX 3D 2021.03.29

DirectX 3D 1일차 - 윈도우 창 생성하기

먼저 들어가기 전 이 글은 개인적인 공부 글입니다. 제가 아직 미숙하여 틀린 부분이 있을 수 있으니 잘못 알고 있는 점을 지적해주시면 감사히 받겠습니다, 감사합니다. 우선 저는 DirectX로 3D 게임을 만들어 보려고 합니다. 물론 요즘은 엔진이 잘 돼있어서 엔진을 사용하는 것이 생산성 면에서는 탁월한 것은 분명하지만 너무 엔진에 의존하는 느낌이 있어서 한번 제가 어느 정도 밑바닥부터 개발해보고 싶다는 마음이 생겨서 시작하게 되었습니다. 기본적으로 유튜브 강의를 보면서 하루에 한 개씩 보고 해당 영상에서 모르는 부분을 찾아가면서 공부하는 것을 목표로 두고 있고, 제가 영상을 보면서 떠오른 생각이라던가 막혔던 부분, 어려웠던 부분을 블로그에 정리해서 올릴 생각입니다. 서론이 너무 길었네요 시작하겠습니다...

game dev/directX 3D 2021.03.29