Win32 API44 Win32 API 기초 : 기초 수학 (2) 초당 600의 거리를 이동하는 발사체를 발사하고 싶을 때,삼각함수를 통해서 원하는 각도만 신경 써 주면속도가 알아서 설정되어 손쉽게 초당 600의 거리를이동하는 발사체를 구현할 수 있었습니다. 우선 초당 1만큼, 45도 방향으로 발사체를 이동시키는 것을기준으로 x 좌푯값과 y 좌푯값이 몇이어야 하는가를 파악했죠. 이때 x 좌푯값은 밑변으로 cosθ, y 좌푯값은 높이로 sinθ였습니다. 그럼 결국 초당 1만큼, 45도 방향으로 발사체를 이동시키려면x 좌푯값은 1 * cos45도 * DT, y 좌푯값은 1 * sin45도 * DT로하면 되고 이를 응용해서 초당 600만큼, 45도 방향으로발사체를 이동시키려면 x 좌푯값은 600 * cos45도 * DT, y 좌푯값은 600 * sin45도 * DT로 설정하.. 2024. 7. 10. Win32 API 기초 : 기초 수학 (1) 평면 위에 존재하는 점 하나가 있고 특정 거리를 이동한 곳에 또 점 하나를 찍었습니다. 이러한 점을 여러 개 찍고 이 점들이 모이면 하나의 '원'을 구성하게 됩니다. 중심에 존재하는 점과 원을 이루는 점들과의 거리는 모두 같을 겁니다. 이 길이를 반지름(radius, r)이라고 하죠. 지름을 수식으로 나타내면 반지름의 두 배이므로2 * r 로 표현할 수 있습니다. 그럼 위와 같은 원의 둘레는 어떻게 구할까요? 반지름만 알고 있다면 원의 둘레는 쉽게 구할 수 있습니다. 바로 원주율을 이용하면 되는데요,원의 둘레( 원주 )는 지름 길이에파이( π, 3.14159265359... )를곱하면 나옵니다. 수식으로 나타내면 원의 둘레 = 2 * r * π 인 것이죠. 근데 왜 지름에 파이를 곱하면.. 2024. 7. 9. Win32 API 기초 : Object (2) 플레이어 또는 몬스터가 발사할발사체를 만들어 보겠습니다. 우선 CObject 클래스를 상속받은자식 클래스 CMissile을 만듭니다. CMissile 클래스의 헤더 파일을 보시면 멤버로 m_fDir을 두고 있는데이는 발사체가 발사될 방향을 나타냅니다. SetDir 함수는 m_fDir의 값을 설정하기 위한 함수입니다. 발사체는 원형으로 할 것이기 때문에부모 클래스에 존재하는 render 함수도 가상 함수로 선언하여 CMissile 클래스로만든 객체를 통해 render 함수를 호출하면CMissile 클래스 내의 render 함수가 호출되도록하겠습니다. 이렇게 함으로써 render 함수가 호출되면오브젝트가 사각형으로 그려졌지만발사체는 render 함수를 따로 구현하였기때문에 발사체 오브젝트는 원형으로 그려.. 2024. 7. 8. Win32 API 기초 : Win32API Object (1) CObject 클래스를 통해 사각형 객체를 만들고화면에 출력하였습니다. 이를 키 입력을 통해 움직일 수 있도록 하였죠. 이제는 CObject 클래스를 통해플레이어 객체를 생성해 줄 자식 클래스를 만들겠습니다. 먼저 아래 코드에서 17번째 줄에서 보이듯이 update 함수를 순수 가상 함수로 만들어 주었습니다. CObject 클래스를 상속받은 자식 클래스로 만든오브젝트는 각 유형에 따라 고유의 update 함수를갖게 할 것입니다. update 함수는 어떤 오브젝트냐에 따라다르게 작동해야 하니까 말이죠. 가상 함수로 정의해 줌으로써update 함수를 호출하면 부모 클래스의update 함수가 아닌 자신의 update 함수를호출할 수 있도록 하였습니다. 이 가상 함수를 또 순수 가상 함수로 정의하면서부모 클래.. 2024. 7. 6. Win32 API 기초 : Scene Manager (2) CCore 클래스의 멤버 함수 progress를 보시면 update와 render 함수를 없애고 각 매니저가 그 일을 대신 할 수 있도록 하였습니다. 이제 CSceneMgr 클래스로 만든 씬 매니저가씬마다의 update와 render를 진행할 것입니다. CSceneMgr.h 파일을 보면 15 ~ 16번째 줄에 update와 render 함수가 추가되었습니다. render 함수는 어디에 그릴 것인가에 대한 정보,즉 목적지가 필요하기 때문에 CCore 클래스의progress 함수로부터 호출될 때 HDC형 _dc를인자로 받게 됩니다. 각 함수의 정의를 살펴보면 36번째 줄에서 현재 씬을 저장하고 있는m_pCurScene의 update 함수를 호출하고 있습니다. CScene 클래스의 헤더 파일을 보시면 .. 2024. 7. 5. Win32 API 기초 : Scene Manager (1) 현재 프로그램은 오브젝트를 바로 화면에 띄우고 있습니다. 이 구조를 바꾸어서 오브젝트가 포함되는 씬을 만들고이 씬들을 관리하는 씬 매니저를 만들어서 프로그램을 관리하도록 하겠습니다. 일단 아래 코드처럼 define.h 파일에 GROUP_TYPE이라는enum class를 만들겠습니다. 유형에 따라 기본 오브젝트인 DEFALUT,발사체인 MISSILE, PLAYER와 MONSTER로 분류를 하겠습니다. 참고로 UI 같은 것도 모두 오브젝트입니다. 당장은 4개의 오브젝트 유형이 존재하지만 이후에더 추가할 수도 있습니다. 32개의 유형이 존재한다고가정하고 END를 32라고 보겠습니다. 씬들도 타입을 분류하도록 하겠습니다. 게임을 제작하기 위한 TOOL 씬, 게임 시작 장면인 START, 그리고 스테이지별로장.. 2024. 7. 4. 이전 1 2 3 4 5 6 7 8 다음