Notice
Recent Posts
Recent Comments
Link
๊ด€๋ฆฌ ๋ฉ”๋‰ด

๋ชฉ๋ก์ „์ฒด ๊ธ€ (1099)

KoreanFoodie's Study

์‚ฌ๋ž‘์— ๊ด€ํ•˜์—ฌ #2 : ์„ ํƒ๋ฐ›๋Š” ๋‚จ์ž๋Š” ๋ฌด์—‡์ด ๋‹ค๋ฅด๊ธฐ์—

์˜›๋‚  ์˜›์ , ์ž๊ธฐ๊ณ„๋ฐœ์„œ๋ฅผ ์ข‹์•„ํ•˜๋˜ ํ•œ ์•„์ด๊ฐ€ ์‚ด์•˜๋‹ต๋‹ˆ๋‹ค. ํ”ํžˆ '์ถฉ'์ด๋ผ๋Š” ๊ธ€์ž๊ฐ€ ๋ถ™๋Š” ๋‹จ์–ด๋Š” ์ข‹์€ ๋œป์œผ๋กœ ์“ฐ์ด์ง€ ์•Š๋Š”๋‹ค๊ณค ํ•˜์ง€๋งŒ, ์‚ฌ์‹ค ๋‚˜๋Š” ๊ฐ€์„ฑ๋น„์ถฉ์ด๋‹ค. ๋•Œ๋ก  ์ง•๊ทธ๋Ÿฌ์šธ ์ •๋„๋กœ. ๊ทธ๋ž˜์„œ ๊ทธ๋Ÿฐ์ง€ ๋ชฐ๋ผ๋„, ์–ด๋ ธ์„ ์ ๋ถ€ํ„ฐ ์ž๊ธฐ๊ณ„๋ฐœ์„œ์™€ ๋ช…์–ธ์ง‘์„ ์ข‹์•„ํ–ˆ๋‹ค. ์™œ๋ƒํ•˜๋ฉด ๋ช…์–ธ์€ ์••์ถ•์ ์ด๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค. ๋Œ€๋žต์ ์œผ๋กœ ์†Œ์„ค -> ์—์„ธ์ด -> ๊ธฐ์ˆ ์„œ์ /์ž๊ธฐ๊ณ„๋ฐœ์„œ -> ๋™๊ธฐ๋ถ€์—ฌ ์˜์ƒ -> ๋ช…์–ธ ์ˆœ์œผ๋กœ ํ•จ์ถ•์„ฑ์ด ์˜ฌ๋ผ๊ฐ„๋‹ค. ์–ด๋–ป๊ฒŒ ํ‘œํ˜„ํ•˜๋Š”์ง€์™€ ์–ด๋–ป๊ฒŒ ์ „๋‹ฌ๋ ฅ์„ ๋†’์ด๋Š”์ง€์˜ ์ฐจ์ด๊ฐ€ ์žˆ์„ ๋ฟ, ํ•ต์‹ฌ ๋ฉ”์‹œ์ง€๋Š” ๊ฐ„๋‹จํ•˜๊ณ  ๋น„์Šทํ•œ ๊ฒฝ์šฐ๊ฐ€ ๋งŽ๋‹ค. ๊ทธ๋Ÿฌ๋‹ˆ ์“ธ๋ฐ์—†์ด ์‹œ๊ฐ„์„ ์Ÿ์•„๋ถ€์–ด ๊ฐ™์€ ๋‚ด์šฉ์„ ํŒŒ์•…ํ•˜๊ธฐ๋ณด๋‹ค, ์งง์€ ํ•œ ์ค„์˜ ๋ฌธ๊ตฌ๋กœ ์‚ถ์˜ ์ง€ํ˜œ๋ฅผ ์–ป์–ด๊ฐ€๋Š”๊ฒŒ ๋‚ซ์ง€ ์•Š์€๊ฐ€. ๊ทธ๋Ÿฐ ์ƒ๊ฐ์„ ํ•˜๋ฉฐ ๋•Œ๋ก  ๋ช…์–ธ์ง‘๊ณผ ์ž ์–ธ์ง‘์„ ํ•„์‚ฌํ•˜๊ธฐ๋„ ํ–ˆ๋‹ค. ๊ทธ๋Ÿฐ ์‹ธ๊ตฌ๋ ค ์ฑ…์„ ์ฝ์ง€ ๋ง๊ณ ..

์œˆ๋„์šฐ API ํ”„๋กœ๊ทธ๋ž˜๋ฐ 10 : ๋ฐฑ๋ฒ„ํผ์™€ ํ”ฝ ๋ฉ”์‹œ์ง€

์œˆ๋„์šฐ API ํ”„๋กœ๊ทธ๋ž˜๋ฐ 10 : ๋ฐฑ๋ฒ„ํผ์™€ ํ”ฝ ๋ฉ”์‹œ์ง€ ๋ฐฑ ๋ฒ„ํผ๋Š” ํ™”๋ฉด์— ๊ทธ๋ ค์ง€๋Š” ๋ฒ„ํผ์— ๋ฐ”๋กœ ๋ Œ๋”๋ฅผ ์‚ด ๊ฒฝ์šฐ ๋ฒ„ํผ๊ฐ€ ์ง€์›Œ์ง€๋Š” ์ˆœ๊ฐ„ ๋˜๋Š” ๋ฒ„ํผ์— ์ „์ฒด๊ฐ€ ๋‹ค ๊ทธ๋ ค์ง€๊ธฐ ์ „์— ํ™”๋ฉด์— ๊ทธ๋ ค์ง€๊ธฐ ์ „์— ํ™”๋ฉด์— ๊ทธ๋ ค์งˆ ๊ฒฝ์šฐ ๋œ ๊ทธ๋ ค์ง„ ๋ถ€๋ถ„์ด ํ™”๋ฉด์—์„œ ์ž ๊น ์ง€์›Œ์ง„ ์ƒํƒœ๊ฐ€ ๋˜๊ธฐ ๋•Œ๋ฌธ์— ๊นœ๋นก์ด๋Š” ๊ฒƒ์ฒ˜๋Ÿผ ๋ณด์ด๋Š” ํ˜„์ƒ์ด ์ƒ๊ธด๋‹ค. ์ด๋•Œ, ๋ฐฑ ๋ฒ„ํผ๋ฅผ ์ƒ์„ฑํ•˜์—ฌ ๋ฐฑ ๋ฒ„ํผ์— ๋ชจ๋“  ๋‚ด์šฉ์„ ๊ทธ๋ฆฌ๊ณ  ๋ฐฑ ๋ฒ„ํผ๋ฅผ ํ™”๋ฉด์— ๋ Œ๋”ํ•˜๋Š” ๋ฐฉ์‹์œผ๋กœ ์œ„์˜ ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•  ์ˆ˜ ์žˆ๋‹ค. ๋ฐฑํผํผ์™€ ํ”ฝ ๋ฉ”์‹œ์ง€ ๊ธฐ์กด์—๋Š” WM_TIMER๋ฅผ ์ด์šฉํ•˜์—ฌ ์—…๋ฐ์ดํŠธ๋ฅผ ์ฒ˜๋ฆฌํ–ˆ์ง€๋งŒ ์ด๋Š” ๋ชจ๋“  ๋ฉ”์‹œ์ง€ ์ค‘์—์„œ ์šฐ์„  ์ˆœ์œ„๊ฐ€ ๊ฐ€์žฅ ๋‚ฎ๊ณ  ์ตœ๋Œ€ ์†๋„๊ฐ€ 0.01์ดˆ์ด๋‹ค. ์ด๋ฅผ ๊ทน๋ณตํ•˜๊ณ  cpu ์„ฑ๋Šฅ์„ ์ œ๋Œ€๋กœ ํ™œ์šฉํ•˜๊ธฐ ์œ„ํ•ด ํ”ฝ ๋ฉ”์‹œ์ง€๋ฅผ ์‚ฌ์šฉํ•œ๋‹ค! HDC hdc = GetDC(g_hWnd); g_hDC..

์œˆ๋„์šฐ API ํ”„๋กœ๊ทธ๋ž˜๋ฐ 9 : ํ‚ค๋งค๋‹ˆ์ €(ํ‚ค ์ž…๋ ฅ ๋ฐ›๊ธฐ), bitset ์˜ˆ์ œ

์œˆ๋„์šฐ API ํ”„๋กœ๊ทธ๋ž˜๋ฐ 9 : ํ‚ค๋งค๋‹ˆ์ €(ํ‚ค ์ž…๋ ฅ ๋ฐ›๊ธฐ), bitset ์˜ˆ์ œ ์ด๋ฒˆ ๊ธ€์—์„œ๋Š” ์‹ฑ๊ธ€ํ†ค ํŒจํ„ด์„ ์ด์šฉํ•ด์„œ ํ‚ค ์ž…๋ ฅ์„ ๋ฐ›๋Š” ๋ฐฉ๋ฒ•๊ณผ ๊ฐ„๋‹จํ•œ bitset ๋ฉ”์†Œ๋“œ๋ฅผ ์ด์šฉํ•ด ๋ณด๊ฒ ๋‹ค. SingletonBase.h ๋จผ์ €, ์‹ฑ๊ธ€ํ†ค ํด๋ž˜์Šค๋ฅผ ์ด์šฉํ•  ํ…œํ”Œ๋ฆฟ ํด๋ž˜์Šค์ธ SingletonBase.h๋ฅผ ์ •์˜ํ•ด ๋ณด์•˜๋‹ค. #pragma once /* ์‹ฑ๊ธ€ํ†ค ํŒจํ„ด : ๋‹จ์ผ ๊ฐ์ฒด ๊ด€๋ฆฌ ๋ฐฉ๋ฒ• - ์ธ์Šคํ„ด์Šค๋ฅผ ํ˜ธ์ถœ ์‹œ ์ฒ˜์Œ ํ˜ธ์ถœ ํ•˜๋Š” ๊ฒฝ์šฐ ์ธ์Šคํ„ด์Šค๋ฅผ ์ƒ์„ฑํ•˜๊ณ  ์ƒ์„ฑ ๋œ ์ธ์Šคํ„ด์Šค๋ฅผ ๋ฐ˜ํ™˜ ํ•œ๋‹ค. - ์ธ์Šคํ„ด์Šค๋ฅผ ํ˜ธ์ถœ ์‹œ ์ด์ „์— ํ˜ธ์ถœ๋˜์–ด ์ƒ์„ฑ์ด ๋˜์–ด ์žˆ๋Š” ๊ฒฝ์šฐ ๊ทธ ์ƒ์„ฑ ๋˜์–ด ์žˆ๋Š” ์ธ์Šคํ„ด์Šค๋ฅผ ๋ฐ˜ํ™˜ ํ•œ๋‹ค. ํ…œํ”Œ๋ฆฟ(Template, ํ˜•ํŒ) : ํ•จ์ˆ˜ ๋˜๋Š” ํด๋ž˜์Šค๋ฅผ ๋งŒ๋“ค์–ด ๋‚ด๊ธฐ ์œ„ํ•œ ํ‹€ - ์ •ํ•ด์ง€์ง€ ์•Š์€ ์ž๋ฃŒํ˜•์— ๋Œ€ํ•œ ์„ ์–ธ์„ ํ…œํ”Œ๋ฆฟ์„ ์‚ฌ์šฉํ•˜์—ฌ ํ•˜๊ณ  ..

์œˆ๋„์šฐ API ํ”„๋กœ๊ทธ๋ž˜๋ฐ 7 : ๊ฒŒ์ž„ ํ”„๋ ˆ์ž„์›Œํฌ ๊ตฌ์„ฑ

์œˆ๋„์šฐ 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 ๊ตฌํ˜„๊ณผ ๋˜ฅํ”ผํ•˜๊ธฐ ๊ฒŒ์ž„ ์˜ˆ์ œ

์œˆ๋„์šฐ 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; // ํฌ์ง€์…˜ ์œ„..