League Of Legends - Link Select '๐Ÿค“ Study/winAPI' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๊ธ€ ๋ชฉ๋ก (2 Page)
๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ
๋ฐ˜์‘ํ˜•

๐Ÿค“ 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.
728x90
๋ฐ˜์‘ํ˜•