WinApi 28

[Win32 API TBI 모작] 3. Manager(2)

이번 포스트에서는 그래픽 관련 매니저를 알아보자.Direct2D 매니저 ( Direct2DMgr )#pragma oncestruct ScrollArea { D2D1_RECT_F viewRect; // 화면에 표시되는 영역 D2D1_RECT_F contentRect; // 전체 콘텐츠 영역 D2D1_POINT_2F scrollPos; // 현재 스크롤 위치};class Direct2DMgr{ SINGLE(Direct2DMgr)private: ID2D1Factory* pD2DFactory; IWICImagingFactory* pWICFactory; IDWriteFactory* g_pDWriteFactory; ID2D1HwndRenderTarget* pRenderTarget; ID2D1BitmapR..

[Win32 API TBI 모작] 2. Manager(1)

매니저 이번에 제작한 TBI에서는 여러 매니저 클래스들이 존재한다.크게 분류를 시스템 매니저, 그래픽 관련 매니저, 게임 콘텐츠 관련 매니저로 나누면 다음과 같다. 시스템 매니저파일 경로, 시간, 카메라, 키 입력, 사운드 관리자, 충돌, 이벤트, UI, 파일그래픽 관련 매니저Direct2D, 카메라게임 콘텐츠 관련 매니저아이템, 엔티티, 플레이어, 맵, 씬모든 매니저들은 싱글톤(SingleTon) 패턴으로 구현 되어 있다. 참고https://tobrother.tistory.com/118 [Win32 API] 3. 디자인 패턴 ( 싱글톤 , Singleton )1. 싱글톤 이란 ?싱글톤(Singleton) 패턴은 클래스의 인스턴스가 단 하나만 생성되도록 보장하고, 해당 인스턴스를 전역적으로 접근할 수 있..

[Win32 API TBI 모작] 1. CCore & 개요

시작이번에는 저번 Brotato 모작에 이어서 TBI ( The Binding of Isaac ) 게임을 만들어 보았다.저번 프로젝트의 기본적인 틀은 유지하고, TBI 게임에 맞게 싱글톤으로 구현된 매니저들을 수정하거나 추가해서 작업하였다.개발 기간은 4월2일 ~ 5월 20일까지 약 2달이지만, 중간에 놀았던 기간이 있어서 실질적으로 약 1달동안 혼자서 개발한 내용이다.최대한 원작과 같은 플레이 방식을 구현하려고 노력하였다.세세한 부분들은 최대한 플레이에 지장이 없는 수준으로만 설정하여 개발하였다(충돌체의 크기, 캐릭터의 데미지 속도, 애니메이션의 효과 등등..) CCore 클래스 구조CCore 클래스는 다음과 같은 주요 기능을 가지고 있다:초기화 (init): 윈도우 핸들과 해상도 정보를 받아 게임 엔..

[Win32 API Brotato 모작] 11. Scene_Start

이번에는 전투가 직접적으로 일어나는 장면 Scene_Start에 대해 알아보겠다.Scene_Start#pragma once#include "CScene.h"class CPanelUI;class CScene_Start : public CScene{private: ID2D1Bitmap* g_pBitmap; // 전역 또는 멤버 변수로 선언 Vec2 m_vForcePos; float m_fForceRadius; float m_fCurRadius; float m_fForce; bool m_bUseForce; CPanelUI* m_pPausePanel; vector m_vecPauseObj; CPanelUI* m_pFailPanel; ..

[Win32 API Brotato 모작] 10. Scene_Run_End

이번에는 게임 플레이가 종료 된 후에 나오는 결과 화면에 대해 알아보자. 사실 이 Scene 진짜 별거 없다. 이때까지 나왔던 객체들의 위치만 조정해서 보여주는 방식이 전부다.  이 씬에서는 player의 능력치와 보유한 무기와 아이템을 보여주는 기능과 다음과 같은 기능을 제공한다.재시작을 누를 시 웨이브 다시 시작새로운 달리기를 누를 시 캐릭터 선택화면 부터 다시 시작메인 메뉴로 돌아가기결과화면은 플레이어의 체력이 0에 도달하면 달리기 패배 문구와 함께 해당 화면이 나오게 된다.CScene_Run_End#pragma once#include "CScene.h"#include "Direct2DMgr.h"class CPanelUI;class CScene_Run_End : public CScene{pri..

[Win32 API Brotato 모작] 8. Scene_Select_Weapon

이번에는 무기 선택화면에 대해 설명하겠다. 무기 선택화면도 캐릭터 선택과 유사한 방식으로 구현하였다.CScene_Select_Weapon#pragma once#include "CScene.h"#include "CharacterInfoMgr.h"class CBtnUI;class Direct2DMgr;class CScene_Select_Weapon : public CScene{private: tCharacterInfo* m_stSelectedInfo;public: virtual void update(); virtual void render(ID2D1HwndRenderTarget* _pRender);public: void SetSelectedCharacterInfo(tCharacte..

[Win32 API Brotato 모작] 7. Scene_Select_Character

이번에는 캐릭터를 선택하는 장면에 대해 알아보자.CScene_Select_Character#pragma once#include "CScene.h"#include "CharacterInfoMgr.h"class CBtnUI;class CScene_Select_Character : public CScene{private: vector m_vCharaters;public: virtual void update(); virtual void render(ID2D1HwndRenderTarget* _pRender);private: void CharacterMapping(CBtnUI* _btn, int i, int j, wstring& tag);public: virtual void Ente..

[Win32 API Brotato 모작] 5. Object

이번에는 이 프로그램에서 그려질 모든 객체의 부모 클래스이자 추상 클래스인 CObject 클래스에 대해 설명하겠다. CObject를 상속받는 자식 클래스들은 다음과 같다.CDamagedUI : 몬스터에게 데미지를 입힐 때 얼만큼의 피해를 입혔는지 숫자로 표시하기 위한 클래스Ground : 전투 맵 상에서 맵 밖으로 빠져나가지 못하게 하기 위해 벽을 구현할 클래스Missile : 총기류 무기들의 탄환을 구현하기 위한 클래스Monster : 몬스터Player : 유저 플레이어UI : 화면상에 Text를 표현하거나, 뒷 배경과 같은 Panel, 버튼을 구현하기 위한 클래스Weapon : 플레이어가 소지할 무기CObject 멤버 변수private: GROUP_TYPE m_ObjType; wstring m_..