๋ฐ์ํ ๐ค Study/winAPI18 [winAPI 09] ๊ธฐ์ด ์ํ ์ ๋ฒ์ ๊ตฌํํ ๋ฏธ์ฌ์ผ์ ๋ง์ฝ ๋๊ฐ์ ์ผ๋ก ์ด๋ํ๋ ค๋ฉด? ๋๋ณด๊ธฐ[ ์ฐธ๊ณ ] - ์์ฃผ์จ ์ง๋ฆ๊ณผ ์์ ๋๋ ์ ๋น์จ - 3.14 ๋ผ๋์ : 180๋- 1 ๋ผ๋์ : 57๋์ฏค. ์๋ฏธ → ๋ฐ์ง๋ฆ๊ณผ ํธ์ ๊ธธ์ด๊ฐ ๊ฐ์ ๊ฐ - ์ผ๊ฐํจ์ : ์ง๊ฐ ์ผ๊ฐํ์์์ ๋ฐ๋ณ/๋น๋ณ/๋์ด์ ๋น์จ ์ฐ๋ฆฌ๋ ์ ๋ฒ ์๊ฐ์ ์/์๋์ ๋ฐฉํฅ์ผ๋ก ์ฒ๋ฆฌํ๋ค๋ฉด, ์ด๋ฅผ ๊ฐ๋๋ก ์์ ํด ์ฒ๋ฆฌํ ํ์๊ฐ ์๋ค. // Missile.h#pragma once#include "Object.h"class Missile : public Object {private: float theta; // ๋ฐฉํฅ์ ๊ฐ๋๋กpublic: Missile(); ~Missile(); virtual void update(); virtual void render(HDC _hdc); void Se.. 2024. 6. 5. [winAPI 08] Object ์ง๊ธ๊น์ง ์์ฑํ Object ์ฝ๋์ updateํจ์๋ ํ ์คํธ๋ฅผ ์ํ ์ฝ๋์ด์ง ๋ ผ๋ฆฌ์ ๋ง์ง ์๋ ์ฝ๋์ด๋ค. ์ด Object ํด๋์ค๋ ์์ผ๋ก ์ฐ๋ฆฌ๊ฐ ๋ง๋ค ์ฌ๋ฌ ์ค๋ธ์ ํธ๋ค์ ๋ถ๋ชจ ํด๋์ค์ด๋ค. ๋ฐ๋ผ์ ์ด update๋ฅผ ์์ ํ์ง ์์ผ๋ฉด ์ด๋ฅผ ์์ ๋ฐ์ ๋ง๋ค์ด์ง๋ ์ฌ๋ฌ Object๋ค์ ํ์ฌ ๊ตฌํ๋ ์ฝ๋์ ์ํด WASD๋ฅผ ๋๋ฅผ ๊ฒฝ์ฐ ์ด๋ํ๊ฒ ๋๋ค. ์ฆ ๋ชจ๋ ์ค๋ธ์ ํธ๊ฐ ๋๊ฐ์ ์ผ์ ์ํํ๊ฒ ๋๋ค. ์ค๋ธ์ ํธ ํด๋์ค๋ฅผ ์์ ๋ฐ์ ์ฌ๋ฌ ์ค๋ธ์ ํธ๋ฅผ ๋ง๋ค์ด์ผ ํ๋๋ฐ ์ฌ์ update ํธ์ถ ์ ๊ฐ ์ค๋ธ์ ํธ๊ฐ ๊ฐ์ธ์ ์ผ๋ก ๊ฐ๊ณ ์๋ update๋ฅผ ์คํ์์ผ์ค์ผ ๊ฐ์ ํ ์ผ์ ํ์ง ์์๊น? ๋ฐ๋ผ์ Object์ ์กด์ฌํ๋ update์ renderํจ์๋ ๊ฐ์ ํจ์๊ฐ ๋์ด์ผ ํ๋ค. // Object.hclass Object {pri.. 2024. 6. 5. [winAPI 07] Scene & Scene Manager ๊ฒ์์๋ ์ฌ๋ฌ๊ฐ์ง ์ฌ์ด ์กด์ฌํ๋ค. ์ฌ์ ์ด๋ป๊ฒ ๊ตฌํ๋ ๊น?๊ฒ์ ๋ด์๋ ์ ๋ง์ ์ค๋ธ์ ํธ๊ฐ ์กด์ฌํ๋๋ฐ ์ด๋ฅผ ๊ด๋ฆฌํ๋ ๊ฒ์ ์ฌ์ด๋ผ ๋ณผ ์ ์๋ค. - ์ฌ ๊ตฌ์กฐ ๋ง๋ค๊ธฐ ์ฌ๊ธฐ์ ์ค๋ธ์ ํธ๋ฅผ ๊ด๋ฆฌํ ๊ฒ์ธ๋ฐ ์ฌ๋ ์ฌ๋ฌ ๊ฐ์ง ์ฌ์ผ๋ก ๋๋๊ธฐ์ ์์์ผ๋ก ๊ตฌํ๋๋ค. ์ฌ์ ์กด์ฌํ๋ ์ค๋ธ์ ํธ๋ฅผ ์ฌ๋ฌ ๊ทธ๋ฃน์ผ๋ก ๋๋ ๊ตฌ๋ณํ๊ธฐ ์ํด ์๋์ฒ๋ผ enum class๋ฅผ ์ฌ์ฉํ๋ค.// define.h์ ์ถ๊ฐenum class GROUP_TYPE { DEFAULT, PLAYER, MISSTLE, MONSTER, END = 32,};// Scene.h ์์ฑclass Object; // ์ ๋ฐฉ์ ์ธclass Scene {private: vector arrObj[(UINT)GROUP_TYPE::END]; wstring strName;public: S.. 2024. 6. 4. [winAPI 06] Key Manager - ๊ธฐ์กด ํค ์ ๋ ฅ ๋ฐฉ์์ ๋ฌธ์ ์ฐ์ ๋ฐ์ํ ์ ์๋ ์ฒซ ๋ฒ์งธ ์ํฉ์ A์ B ๋ฌผ์ฒด๊ฐ ์ด๋ํ๋ ๊ฒ์์์ ํค ๋งค๋์ ๊ฐ ์๋ค๋ฉด, ๊ฐ ๋ฌผ์ฒด๋ ์์ ์ ํค ์ ๋ ฅ์ ๊ฐ๋ณ์ ์ผ๋ก ์ฒ๋ฆฌํ๊ฒ ๋๋ค. ๊ทธ๋ ๊ฒ ๋ ๊ฒฝ์ฐ ํค๋ฅผ ์ฒ๋ฆฌํ๋ ์ ๋ฐฑ ๋ฒ์ ์ํฉ ์ค์ A ๋ฌผ์ฒด๋ ํ์ฌ ํ๋ ์์์ ์ด๋์ ์ฒ๋ฆฌํ์ง๋ง, B ๋ฌผ์ฒด๋ ๋ค์ ํ๋ ์์์ ์ด๋์ ์ฒ๋ฆฌํ๋ ๊ฒฝ์ฐ๊ฐ ์๊ธธ ์ ์๋ค. ์ด๋ ์ ์ ์ ์ ์ฅ์์ A ๋ฌผ์ฒด๋ ๋จผ์ ์ด๋ํ๊ณ , B ๋ฌผ์ฒด๋ ์ฝ๊ฐ์ ์ง์ฐ ํ์ ์ด๋ํ๋ ๊ฒ์ฒ๋ผ ๋ณด์ด๊ฒ ๋๋ค. ๋ ๋ฒ์งธ ์ํฉ์ ์ฐ๋ฆฌ๊ฐ ์ ํ ๊ฒ์์ ํ๋ค๊ณ ๊ฐ์ ํ์. ์งง๊ฒ ์ ํํ ๋์ ๊ธธ๊ฒ ์ ํ๋ฅผ ๋๋ฅผ ๋ ๋ ๋ผ๊ฐ๋ ํญ๊ณผ ๊ฑฐ๋ฆฌ๊ฐ ๋ค๋ฅด๊ฒ ์ค๊ณํ๋ ค๊ณ ํ๋ค๋ฉด, ์ด๋ฅผ ์ด๋ป๊ฒ ๊ตฌํํ ๊ฒ์ธ๊ฐ? ํ์ฌ ์ฐ๋ฆฌ๊ฐ ์์ ํ๋ ๊ตฌ์กฐ๋ ๋งค ์๊ฐ์๊ฐ UPDATE ํจ์๋ฅผ ํ์ธํ๊ณ , ๋ชจ๋ ์ ๋ฐ์ด.. 2024. 6. 4. [winAPI 05] Double Buffering ์ง๊ธ๊น์ง ๋ฐ์ํ๊ณ ์๋ ๋ฌธ์ ๋ฅผ ํด๊ฒฐํด๋ณด์.1. ๋ฌผ์ฒด๋ฅผ ์์ง์์ ๋ ๋จ๋ ์์ ๋ฌธ์ ๋ ๋งค๋ฒ ์ ์ฒด ํฝ์ ์ ๋ฌดํจํ ํ๊ณ ๋ค์ ๊ทธ๋ ค์ฃผ์ด์ผ ํ๋ค. 2. ๋ฌผ์ฒด๊ฐ ๋ง์ด ์์ฑํ ๋ ๊น๋นก ๊ฑฐ๋ฆฌ๋ ๋ฌธ์ ๋ ๋๋ธ ๋ฒํผ๋ง์ ์ด์ฉํ๋ค. - ํ๋ฉด ์ ์ฒด ๋ฌดํจํ ์ผ๋จ ์ ์ฒด ํ๋ฉด ํฌ๊ธฐ์ ํฐ์ ๋ํ์ผ๋ก ๊ทธ๋ ค์ฃผ๋ ๋ฐฉ๋ฒ์ ์ฌ์ฉํ๋ค.void Core::Render() { // ํ๋ฉด clear Rectangle(hDC, -1, -1, ptResolution.x + 1, ptResolution.y + 1); Vec2 vPos = obj.getPos(); Vec2 vScale = obj.getScale(); Rectangle(hDC, int(vPos.x - vScale.x / 2.f), int(vPos.y - vScale.y / 2.f.. 2024. 6. 4. [winAPI 04] Timer ์ ๋ฒ ์๊ฐ์ ์์ฑํ๋ ํ๋ก๊ทธ๋จ์ ํ ๋๋ก ๊ฒ์์ ๋ง๋ ๋ค๊ณ ํ์ ๋ ๋ ๊ฐ์ง ๋ฌธ์ ๊ฐ ์์ ์ ์๋ค 1. ์ปดํจํฐ๊ฐ ๋๋ฆฐ ์ฌ๋๊ณผ ๋น ๋ฅธ ์ฌ๋์ ์ด๋ ์๋๊ฐ ๋ฌ๋ผ์ง ์ ์๋ค. ์ฆ CPU์ ์๋์ ๋ฐ๋ผ ์ฒ๋ฆฌ ์๋๊ฐ ๋ฌ๋ผ์ ธ 1์ด ๋น ์ด๋ ๊ฑฐ๋ฆฌ ์๋๊ฐ ๋ค๋ฅธ ๋ฌธ์ ๊ฐ ๋ฐ์ํ๋ค. 2. ์ ์ ๋จ์๋ก ์ด๋ํ๊ณ ์์ด์ 1์ด์ ์์ฒญ๋๊ฒ ๋ง์ ๊ฑฐ๋ฆฌ๋ฅผ ์ด๋ํ๊ณ ์๋ค. ์ฐ์ ์ค์ ๋จ์๋ก ์ด๋ ์์ผ ๋ณด๋๋ก ํ์ ๊ธฐ์กด Object class์์ POINT ๊ฐ์ฒด๋ก ๋์ด ์๋ ๊ฒ์ vec2 ๋ผ๋ ๊ฐ์ฒด๋ก ๋ง๋ค๊ฒ ๋ค. ์ฌ๊ธฐ์ vec2๋ ์ฐ๋ฆฌ๊ฐ ์๋ ์ํ์ 2์ฐจ์ ๊ฐ๋ ์ด๋ค. // new header file : struct.h #pragma once struct Vec2 { float x; float y; Vec2() :x(0.f) ,y(0.f) {}.. 2024. 4. 9. [winAPI 03] Core class & Singleton ์ฝ์ด(Core)๋ ๋ง๊ทธ๋๋ก ์ค์ฌ์ด๋ผ๋ ์๋ฏธ๋ก ์ฃผ์ํ ๊ธฐ๋ฅ์ ์ ๊ณตํ๊ณ ์ ๋ฐ์ ์ธ ํ๋ก๊ทธ๋จ ๊ตฌ์กฐ๋ฅผ ์ ์ํ๋ฉฐ ์ฑ๊ธํค(singleton)์ ํด๋์ค์ ์ธ์คํด์ค๊ฐ ๋จ ํ๋๋ง ์์ฑ๋๋๋ก ๋ณด์ฅํ๋ ์ํํธ์จ์ด ํจํด์ด๋ค. ์ฐ๋ฆฌ๊ฐ ํ๋ก๊ทธ๋จ์ ๋ง๋ค ๋ ์ฝ์ด ํด๋์ค์ ๊ฐ์ฒด๊ฐ ์ค์ฌ์ด ๋ ๊ฒ์ด๊ธฐ์ ์ด ๊ฐ์ฒด๋ ์ฌ๋ฌ ๊ฐ์ผ ์๊ฐ ์์ด ์ฑ๊ธํค ํจํด์ผ๋ก ๊ตฌํํ๊ณ ์ ํ๋ค. - Core class ( ๋์ ํ ๋น Heap ์์ญ ์ฌ์ฉ ) // Core.h class Core { private: static Core* pInst; Core(); ~Core(); public: static Core* Instance() { if (pInst == nullptr) { return new Core; } return pInst; } static void Rel.. 2024. 4. 8. [winAPI 02] ๋ง์ฐ์ค๋ก ์ฌ๊ฐํ ๊ทธ๋ฆฌ๊ธฐ & ๊ฒ์ ๋ฉ์ธ์ง ์ฒ๋ฆฌ ๊ตฌ์กฐ * ๋ฌผ์ฒด๊ฐ ๋ง์ด ์กด์ฌํ๋ค๋ฉด? ๋ฌผ์ฒด ๋ง๋ค ์ ๋ณด๊ฐ ์กด์ฌํด์ผ ํ๋ฉฐ ํญ์ ๋์ผํ๋ค๊ณ ์๊ฐํ ์ ์๊ณ , ์กฐ๊ธ๋ง ์์ง์ฌ๋ ์ ์ฒด๋ฅผ ๋ค์ ๊ทธ๋ ค์ผ ํ ๊น? ๊ฒ์์ '๋ ๋๋ง' ์ด๋ผ๋ ๊ฒ์ด ์กด์ฌํ๋ค. ์ฌ๊ธฐ์ ๋ ๋๋ง์ ๊ทธ๋ฆฌ๊ณ ๊ทธ๋ฆฌ๋ ๋ฐ๋ณต์ ์ฐ์์ด๋ผ ์๊ฐํ์. ํํ ํ๋ ์์ด๋ผ๊ณ ์๊ณ ์๋ ๊ฐ๋ ๋ง์ ( 1์ด์ 60๋ฒ์ ๊ทธ๋ฆฌ๋ ๊ฒ ๊ธฐ๋ณธ ) → ์ฆ ์ผ๋ง๋ ๊น๋ํ๊ฒ ๊ทธ๋ ค์ฃผ๋ ๊ฐ๊ฐ ๊ด๊ฑด์ด ๋จ ์๋์ ์์ ๋ฅผ ๋ณด์ - ๋ง์ฐ์ค๋ก ์ฌ๊ฐํ ๊ทธ๋ฆฌ๊ธฐ #include using std::vector; struct tObjInfo { POINT objPos; POINT objScale; }; vector vecInfo; POINT ptLT; POINT ptRB; bool act = false; // WndProc case WM_PAINT: { PAIN.. 2024. 4. 8. [winAPI 01] Handle, DC, Window Event & ์ฌ๊ฐํ ๊ทธ๋ฆฌ๊ธฐ VS - Windows desktop application → ๋นํ๋ก์ ํธ - ๊ธฐ๋ณธ ๊ตฌ์กฐ์ ๋ํ ์ค๋ช ๊ธฐ๋ณธ์ ์ผ๋ก ํ๋ก๊ทธ๋จ์ด ์งํ๋จ์ ๋ฐ๋ผ ๋ฉ์ธ์ง๋ฅผ ๋ฐ์ํ๋๋ฐ ๋ฉ์ธ์ง ํ๋ก ์ด๋๋์ด ํ๋์ฉ ์ฒ๋ฆฌ๋๋ค. ์๋์ฐ ์์ฑ: ์๋์ฐ๋ฅผ ์์ฑ ์ ํ๋ฉด์ ํ์(์๋์ฐ์ ์์ฑ(ํฌ๊ธฐ, ์์น...๋ฑ์ ์ง์ ) ๋ฉ์์ง ๋ฃจํ: ์๋์ฐ๊ฐ ์์ฑ ํ ํด๋น ์๋์ฐ์ ๋ํ ๋ฉ์์ง ๋ฃจํ ์์ (์ฌ์ฉ์ ์ ๋ ฅ์ด๋ ์์คํ ์ด๋ฒคํธ ๋ฑ์ ๋ฉ์์ง๋ฅผ ๋๊ธฐํ๊ณ ์ฒ๋ฆฌํ๋ ์ญํ ) ๋ฉ์์ง ์ฒ๋ฆฌ: ์ฌ์ฉ์์ ์ ๋ ฅ(๋ง์ฐ์ค, ํค๋ณด๋ ๋ฑ)์ด๋ ์์คํ ์ด๋ฒคํธ(์๋์ฐ ํฌ๊ธฐ ๋ณ๊ฒฝ, ์ต์ํ ๋ฑ)๋ ๋ฉ์์ง์ ํํ๋ก ์๋์ฐ์ ์ ๋ฌ (๋ฉ์์ง ๋ฃจํ๋ ์ด ๋ฉ์์ง๋ฅผ ํ์์ ํ๋์ฉ ๊บผ๋ด์ด ์ ์ ํ ์ฒ๋ฆฌ ํจ์(์๋์ฐ ํ๋ก์์ )๋ก ์ ๋ฌ) ์๋์ฐ ํ๋ก์์ : ๋ฉ์์ง๋ฅผ ๋ฐ์์ ์ ์ ํ ์ฒ๋ฆฌ๋ฅผ ์ํํจ // .. 2024. 4. 3. ์ด์ 1 2 ๋ค์ 728x90 ๋ฐ์ํ