๋ชฉ๋ก์ ์ฒด ๊ธ (1096)
KoreanFoodie's Study
์๋์ฐ API ํ๋ก๊ทธ๋๋ฐ 10 : ๋ฐฑ๋ฒํผ์ ํฝ ๋ฉ์์ง ๋ฐฑ ๋ฒํผ๋ ํ๋ฉด์ ๊ทธ๋ ค์ง๋ ๋ฒํผ์ ๋ฐ๋ก ๋ ๋๋ฅผ ์ด ๊ฒฝ์ฐ ๋ฒํผ๊ฐ ์ง์์ง๋ ์๊ฐ ๋๋ ๋ฒํผ์ ์ ์ฒด๊ฐ ๋ค ๊ทธ๋ ค์ง๊ธฐ ์ ์ ํ๋ฉด์ ๊ทธ๋ ค์ง๊ธฐ ์ ์ ํ๋ฉด์ ๊ทธ๋ ค์ง ๊ฒฝ์ฐ ๋ ๊ทธ๋ ค์ง ๋ถ๋ถ์ด ํ๋ฉด์์ ์ ๊น ์ง์์ง ์ํ๊ฐ ๋๊ธฐ ๋๋ฌธ์ ๊น๋นก์ด๋ ๊ฒ์ฒ๋ผ ๋ณด์ด๋ ํ์์ด ์๊ธด๋ค. ์ด๋, ๋ฐฑ ๋ฒํผ๋ฅผ ์์ฑํ์ฌ ๋ฐฑ ๋ฒํผ์ ๋ชจ๋ ๋ด์ฉ์ ๊ทธ๋ฆฌ๊ณ ๋ฐฑ ๋ฒํผ๋ฅผ ํ๋ฉด์ ๋ ๋ํ๋ ๋ฐฉ์์ผ๋ก ์์ ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ ์ ์๋ค. ๋ฐฑํผํผ์ ํฝ ๋ฉ์์ง ๊ธฐ์กด์๋ WM_TIMER๋ฅผ ์ด์ฉํ์ฌ ์ ๋ฐ์ดํธ๋ฅผ ์ฒ๋ฆฌํ์ง๋ง ์ด๋ ๋ชจ๋ ๋ฉ์์ง ์ค์์ ์ฐ์ ์์๊ฐ ๊ฐ์ฅ ๋ฎ๊ณ ์ต๋ ์๋๊ฐ 0.01์ด์ด๋ค. ์ด๋ฅผ ๊ทน๋ณตํ๊ณ cpu ์ฑ๋ฅ์ ์ ๋๋ก ํ์ฉํ๊ธฐ ์ํด ํฝ ๋ฉ์์ง๋ฅผ ์ฌ์ฉํ๋ค! HDC hdc = GetDC(g_hWnd); g_hDC..
์๋์ฐ API ํ๋ก๊ทธ๋๋ฐ 9 : ํค๋งค๋์ (ํค ์ ๋ ฅ ๋ฐ๊ธฐ), bitset ์์ ์ด๋ฒ ๊ธ์์๋ ์ฑ๊ธํค ํจํด์ ์ด์ฉํด์ ํค ์ ๋ ฅ์ ๋ฐ๋ ๋ฐฉ๋ฒ๊ณผ ๊ฐ๋จํ bitset ๋ฉ์๋๋ฅผ ์ด์ฉํด ๋ณด๊ฒ ๋ค. SingletonBase.h ๋จผ์ , ์ฑ๊ธํค ํด๋์ค๋ฅผ ์ด์ฉํ ํ ํ๋ฆฟ ํด๋์ค์ธ SingletonBase.h๋ฅผ ์ ์ํด ๋ณด์๋ค. #pragma once /* ์ฑ๊ธํค ํจํด : ๋จ์ผ ๊ฐ์ฒด ๊ด๋ฆฌ ๋ฐฉ๋ฒ - ์ธ์คํด์ค๋ฅผ ํธ์ถ ์ ์ฒ์ ํธ์ถ ํ๋ ๊ฒฝ์ฐ ์ธ์คํด์ค๋ฅผ ์์ฑํ๊ณ ์์ฑ ๋ ์ธ์คํด์ค๋ฅผ ๋ฐํ ํ๋ค. - ์ธ์คํด์ค๋ฅผ ํธ์ถ ์ ์ด์ ์ ํธ์ถ๋์ด ์์ฑ์ด ๋์ด ์๋ ๊ฒฝ์ฐ ๊ทธ ์์ฑ ๋์ด ์๋ ์ธ์คํด์ค๋ฅผ ๋ฐํ ํ๋ค. ํ ํ๋ฆฟ(Template, ํํ) : ํจ์ ๋๋ ํด๋์ค๋ฅผ ๋ง๋ค์ด ๋ด๊ธฐ ์ํ ํ - ์ ํด์ง์ง ์์ ์๋ฃํ์ ๋ํ ์ ์ธ์ ํ ํ๋ฆฟ์ ์ฌ์ฉํ์ฌ ํ๊ณ ..
์๋์ฐ API ํ๋ก๊ทธ๋๋ฐ 8 : ๊ฐ์ฒด ์งํฅ์ ์ธ ์๋์ฐ API ํ๋ก๊ทธ๋๋ฐ "๋ชจ๋ ๊ฒ์ ๊ฐ์ฒด๋ก ์ด๋ฃจ์ด์ ธ ์๋ค". ๊ฐ์ฒด ์งํฅ์ ์ผ๋ก ์ฝ๋๋ฅผ ์ง๋ฉด ์ ์ง ๋ณด์๊ฐ ํธํ๋ฉฐ ์๋ก์ด ๊ธฐ๋ฅ์ ์์ ํ๊ณ ํจ์จ์ ์ผ๋ก ๊ตฌํํ ์ ์๋ค. ์ด ๊ธ์์๋ ์ค์ ๊ธฐ๋ฅ ๊ตฌํ์ ๋ณด๋ฉฐ ๊ทธ ๋ถ๋ถ์ ๋ํ ๊ธฐ์ด๋ฅผ ๊ฐ๋ตํ ์์ ํ๋ค. ๊ธฐ๋ฅ ์์1 . ๋ ์์ธํ ๋ด์ฉ์ด ๊ถ๊ธํ์๋ค๋ฉด ์ง์ ๋ค์ด๋ณด์๋ ๊ฑธ ์ถ์ฒ๋๋ฆฝ๋๋ค!
์๋์ฐ API ํ๋ก๊ทธ๋๋ฐ 7 : ๊ฒ์ ํ๋ ์์ํฌ ๊ตฌ์ฑ ์ง๊ธ์ ๊ฐ๋จํ ๊ฒ์์ด๋๊น WindowsProject1.cpp๋ผ๋ ๋จ์ผ ํ์ผ์ ๋ชจ๋ ๊ธฐ๋ฅ์ ๊ตฌํํ์ง๋ง, ํ๋ก๊ทธ๋จ์ด ๋ณต์กํด์ง๋ฉด ์ฌ์ค ํ์ํ ์ฝ๋๋ฅผ ํ์ํ ํ์ผ์ ๋ถํ ํด์ ๊ตฌ์ฑํด์ผ ํ๋ค. ์ด ๊ธ์์๋ ์ด๋ฅผ ์ํ ๋ฐ์์ ์ ์ด๋ป๊ฒ ํ๋์ง๋ฅผ ๋ค๋ฃจ๊ณ ์ ํ๋ค. GameNode : ๋จผ์ ์ค์ผ๋ ํค ํด๋์ค๋ฅผ ๋ง๋ค์ #pragma once class GameNode { public: GameNode(); ~GameNode(); virtual void Init() = 0; // ์์ ๊ฐ์ ํจ์ virtual void Update() = 0; virtual void Render() = 0; }; ๋จผ์ ๊ฐ์ฅ ๊ธฐ๋ณธ์ ์ผ๋ก Init, Update, Render๋ผ๋ ๊ฐ์ ๋ฉ์๋๋ฅผ ๊ฐ์ง..
์๋์ฐ API ํ๋ก๊ทธ๋๋ฐ 6 : ๊ฐ๋จํ UI ๊ตฌํ๊ณผ ๋ฅํผํ๊ธฐ ๊ฒ์ ์์ ์ด์ ๊ธ์ ์ด์ด์ ์ถ๊ฐ์ ์ธ ๊ธฐ๋ฅ์ ์ฝ๊ฐ ์ถ๊ฐํด ๋ณด์. ์ ์ญ ๋ณ์ ์ฌ์ค์ struct tagBox { RECTrt; floatspeed; }; vectorvecBox;// ๋จ์ด์ง๋ ๋ ํธ๋ค์ ์ ๋ณด intnDelay = 50; struct tagBox๋ฅผ ์๋ก ์ ์ธํ์ฌ RECT๋ฅผ ๋์ฒดํ๋ค. ๊ทธ ์ด์ ๋, ๊ฐ๊ฐ์ ์์๋ง๋ค ๋จ์ด์ง๋ ์๋๋ฅผ ๋ค๋ฅด๊ฒ ๋ง๋ค๊ธฐ ์ํด์์ธ๋ฐ, ์ด๋ ๋์ด๋๋ ์ฝ๊ฐ์ ์ฌ๋ฏธ ์์๋ฅผ ์ฒจ๊ฐํ๋๋ฐ ์ฌ์ฉ๋ ์ ์๋ค. WM_TIMER : ์ ์ ๊ณ์ฐ๊ณผ ํ์ ์์ case WM_TIMER:// ํ์ด๋จธ์ ์ํด์ ํธ์ถ { InvalidateRect(hWnd, NULL, true); nLevel = nScore / 100 + 1; // ํฌ์ง์ ์..
์๋์ฐ API ํ๋ก๊ทธ๋๋ฐ 5 : ๋ฌผ์ฒด ๋จ์ด๋จ๋ฆฌ๊ธฐ ์ด๋ฒ ๊ธ์์๋ ๊ฐ๋จํ ๋ฌผ์ฒด๋ฅผ ๋จ์ด๋จ๋ฆฌ๋ ๊ธฐ๋ฅ์ ๊ตฌํํ๋ฉฐ ๋ค๋ฅธ ๋ํ ์ผ์ ์ค๋ช ํ๋ค. WM_CREATE case WM_CREATE:// ํ๋ก๊ทธ๋จ์ด ์คํ ๋ ๋ ํ๋ฒ ํธ์ถ ๋๋ค. (์ด๊ธฐํ) SetTimer(hWnd, 1, 10, NULL); srand(time(NULL)); break; ์ด๊ธฐํ ํจ์๋ฅผ ํตํด ํ์ด๋จธ๋ฅผ SET ํ๊ณ , ๋๋ค ํจ์๋ฅผ ํธ์ถํ๋ค. WM_TIMER case WM_TIMER:// ํ์ด๋จธ์ ์ํด์ ํธ์ถ { InvalidateRect(hWnd, NULL, true); // ํฌ์ง์ ์์น์ ๋ฐ๋ฅธ ๋ ํธ ์ ๋ณด ์ ๋ฐ์ดํธ rtBox1 = RECT_MAKE(ptPos1.x, ptPos1.y, 50); if (nDelay == 50) { RECT rt; rt.le..
์๋์ฐ API ํ๋ก๊ทธ๋๋ฐ 4 : ์ถฉ๋ ๊ฒ์ฌ (IntersectRect...) ์ด๋ฒ ๊ธ์์๋ ๋ํ์ด ๋ค๋ฅธ ๋ํ๊ณผ ๋ง๋ฌ์ ๋ ์ด๋ฅผ ์ด๋ป๊ฒ ๊ตฌํํ๊ณ ์ฒ๋ฆฌํ๋์ง๋ฅผ ์ดํด๋ณธ๋ค. WM_TIMER์์ IntersectRect๋ฅผ ๋ฃ์ด๋ณด์ // ์๋ ๋ ์ค์ ์ ์ญ๋ณ์๋ก ์ ์ธํจ enum MOVE_DIR { MOVE_LEFT, MOVE_RIGHT, MOVE_UP, MOVE_DOWN }; MOVE_DIReMoveDir; // ... case WM_TIMER:// ํ์ด๋จธ์ ์ํด์ ํธ์ถ InvalidateRect(hWnd, NULL, true); // ํฌ์ง์ ์์น์ ๋ฐ๋ฅธ ๋ ํธ ์ ๋ณด ์ ๋ฐ์ดํธ rtBox1 = RECT_MAKE(ptPos1.x, ptPos1.y, 100); rtBox2 = RECT_MAKE(ptPos2.x, ptPos..
์๋์ฐ API ํ๋ก๊ทธ๋๋ฐ 3 : ํค ์ ๋ ฅ๊ณผ ๊ฒ์ ์ ๋ฐ์ดํธ ์ด๋ฒ ๊ธ์์๋ WIM_KEYDOWN์ ํตํ ํค ์ ๋ ฅ์ ๋ํด ์์๋ณด๋๋ก ํ๋ค. ํค ์ ๋ ฅ ์ฒ๋ฆฌํ๊ธฐ case WM_CREATE:// ํ๋ก๊ทธ๋จ์ด ์คํ ๋ ๋ ํ๋ฒ ํธ์ถ ๋๋ค. (์ด๊ธฐํ) SetTimer(hWnd, 1, 10, NULL); break; case WM_TIMER:// ํ์ด๋จธ์ ์ํด์ ํธ์ถ InvalidateRect(hWnd, NULL, true); break; case WM_KEYDOWN:// ํค ์ ๋ ฅ์ด ์์ ๋ ๋ง๋ค ํธ์ถ ๋๋ค. switch (wParam) { // ์ผํญ์ (์กฐ๊ฑด) ? ์ฐธ์ผ ๋ : ๊ฑฐ์ง์ผ ๋ case 'A': case VK_LEFT: ptPos.x -= (ptPos.x > 0) ? 1 : 0; break; case 'D': ..
์๋์ฐ API ํ๋ก๊ทธ๋๋ฐ 1 : ์ฐฝ ์์ฑ ๋ฐ ๊ธฐ๋ณธ ์ธํ ๋จผ์ ๋น์ฃผ์ผ ์คํ๋์ค(2019)์์ Windows ๋ฐ์คํฌํ ์ ํ๋ฆฌ์ผ์ด์ ํ๋ก์ ํธ๋ฅผ ์์ฑํ์. ๊ทธ๋ผ ์๋์ ๊ฐ์ ์์ผ๋ก ํ๋ก์ ํธ๊ฐ ์์ฑ๋๋๋ฐ, ์ด์ค framework.h, WindowsProject1.cpp ํ์ผ์ด ์๋ ์์ฑ๋๊ณ , ์ด ๋ถ๋ถ์ ๊ณ ์น๋ฉด์ ๊ธฐ๋ฅ์ ๊ตฌํํ๋ค. framwork.h ํ์ผ์ ํค๋ ํ์ผ์ด๋ ๋งคํฌ๋ก ์ ์ธ, ๋ณ๊ฒฝ์ด ๊ฑฐ์ ์๋ ๋ณ์ ๋ฑ์, WindowsProject1.cpp ํ์ผ์์๋ ํ์ด๋จธ๋ ํ์ธํ ์ ํฌํจํ๊ณ ์๋ค. framework.h // header.h: ํ์ค ์์คํ ํฌํจ ํ์ผ // ๋๋ ํ๋ก์ ํธ ํน์ ํฌํจ ํ์ผ์ด ๋ค์ด ์๋ ํฌํจ ํ์ผ์ ๋๋ค. // #pragma once #include "targetver.h" #define WIN..
๊ฒฝ์ ์ ์์ ๋ฅผ ์ํด ์ฝ๊ณ ์ ๋ฆฌํ ๊ธ๋ค์ ์ ๋ฆฌํ ํฌ์คํ ์ ๋๋ค. ์ฌํ ํฌ, ๋ถ์ํ, ๊ฒฝ์ ์ ์์ , ์์ฐ ๊ด๋ฆฌ, ๋ ๊ด๋ฆฌ, ์ ์ถ, ์ฃผ์, ๋ถ๋์ฐ, ํฌ์ ๋ฑ์ ๊ด์ฌ์ด ๋ง์ ๋ถ๋ค๊ป ๋์์ด ๋์์ผ๋ฉด ํฉ๋๋ค. ์ฑ ์ ๊ฒฝ์ฐ, ์ก๊ธฐ์ค๋ง ๋ฝ์์ ์ ๋ฌํด ๋๋ฆฌ๋ ค๊ณ ๋ ธ๋ ฅํ์ต๋๋ค. ์ ํน์ ๋น ์ง์ง ๋ง๋ผ. 1. ๊ณ ์์ต์ ์ ํน - ๋๊ตฌ๋ ์์ ์ ๋์ด ๋ถ์ด๋๊ธธ ๋ฐ๋๋ค 2. ๊ณผ์๋น์ ์ ํน - ๋จ๋ค๊ณผ ์์ ์ด ๋ค๋ฅด๋ค๋ ๊ฒ์ ๋ณด์ฌ์ฃผ๊ณ ์ถ์ดํ๋ค 3. ๊ฒ์ผ๋ฆ์ ์ ํน - ๋ ๋ง ์๊ฒ ์ ์ฌ์ ์ ์ธ ์ด๋ ค์์ ์ง์ , ๊ฐ์กฑ, ๊ฐ์ธ์ ์์ญ ์ ๋ฐ์ ๊ทธ๋์ง๊ฒ ํ๋ค. ๋ ๊ฑฑ์ ์ ์ฌ๋ฅ, ์ฉ๊ธฐ, ์ ์ฌ๋ ฅ์ ๊ฐ์๋จน๋๋ค. ๋์ ์ง์ฐฉํ๋ฉด, ๋์ ์ข์ผ๋ฉด ๋์ ๋๋ง๊ฐ๋ค. ์ง์ ํ ๋ถ์๋ ๋์ ์ง์ฐฉํ์ง ์๋๋ค. ๋์ ์ฌ๋์ ๋์์ด ์๋๋ผ ์ฒ ์ ํ๊ณ ๋์ ํ๊ฒ ๊ด๋ฆฌ๋์ด์ผ ํ ๋์์ด๋ค. ์ํ..