분류 전체보기

WIN32API FrameWork/원본

220503_WIN32API_Framework_3-1_Vector2 구조체와 연산 만들기

* 벡터2 구조체를 만들고, 관련 연산자들을 재정의해서 편의성 있게 사용 가능하도록 함 //Vector2.h #pragma once //프로그래밍에서 수학은 //손으로 푸는것이 중요한 게 아니라 이 수학 공식을 사용하면 어떻게 되는지 //정도만 알면 된다. #include //라디안 등 여러 곳에 원주율이 두루두루 쓰이므로 상수로 등록해 놓는다. const float PI = 3.141592f; struct Vector2 { float x, y; //아무것도 안넣으면 0으로 초기화 Vector2() : x(0.f), y(0.f) {} //두개의 값을 인자로 받으면 각각 x, y로 Vector2(float _x, float _y) : x(_x), y(_y) {} //한개의 값을 인자로 받으면 x, y 동일..

WIN32API FrameWork/원본

220502_WIN32API_Framework_3_GameObject 상속 구조 짜기

* 간단히 구조만 설계하는 단계. //Class CGameObject //GameObject.h #pragma once //Include/GameObject/GameObject.h -> Include/GameInfo.h 이므로 #include "../GameInfo.h" /* * 게임오브젝트: 상속구조로 설계할 예정. 게임오브젝트- 캐릭터- 플레이어- 나이트 - 아처 - 매지션 - ... - NPC- ... - ... - 몬스터- - 아이템 */ /* * 앞으로는 클래스가 매우 많아질 거라 추가적인 정리정돈이 필요하다. - GameObject 폴더를 만들어서 GameObject 관련 클래스들은 GameObject 폴더 안에 생성되게 할 예정 - Include 폴더 안으로 들어가서 GameObject 폴더..

WIN32API FrameWork/코드별 설명 개별저장(검색용)

WIN32API - DeltaTime을 활용하여 일정한 속도로 사각형 움직이기

//RECT 구조체는 Long(=정수) 타입을 저장하므로 소수점 연산이 안 된다. //위아래로 움직일 것이므로 Top, Bottom 부분만 Float 타입으로 만들어서 //프레임이 달라져도 속도가 일정하게 만들어 보자. static int m_Dir = 1; static RECT m_Rect = { 800, 100, 900, 200 }; static float Top = (float)m_Rect.top; static float Bottom = (float)m_Rect.bottom; Rectangle(m_hDC, m_Rect.left, Top, m_Rect.right, Bottom); Top += m_Dir * 500 * DeltaTime; Bottom += m_Dir * 500 * DeltaTime; i..

WIN32API FrameWork/코드별 설명 개별저장(검색용)

WIN32API - HDC를 이용한 그리기 함수들

/* * TextOutA: 멀티바이트 문자열(char 문자열)을 출력하는 함수이다. * TextOutW: 유니코드 문자열(wchar_t 문자열)을 출력하는함수이다. * TextOut: 현재 프로젝트의 설정에 따라 두 함수 중에서 자동 선택해주는 함수이다. #ifdef UNICODE #define TextOut TextOutW #else #define TextOut TextOutA */ TextOut(m_hDC, 50, 50, TEXT("텍스트 출력"), lstrlen(TEXT("텍스트 출력"))); // //가운데가 흰색으로 칠해져있고, 테두리가 검은색인 사각형을 그린다. Rectangle(m_hDC, 100, 100, 200, 200); //원 출력 //지정한 사이즈..

WIN32API FrameWork/코드별 설명 개별저장(검색용)

LARGE_INTEGER , 공용체(Union)

* LARGE_INTEGER: 공용체(union) - 공용체는 메모리 공간을 공유하는 메모리 타입이다. * 32비트 기준 - DWORD LowPart = Unsigned int (4byte) - LONG HighPart= int(4byte) - 둘이 합친 공간인 8byte는 - LONGLONG Quadpart와 공유된다. typedef union _LARGE_INTEGER { struct { DWORD LowPart; LONG HighPart; } DUMMYSTRUCTNAME; struct { DWORD LowPart; LONG HighPart; } u; LONGLONG QuadPart; } LARGE_INTEGER;

WIN32API FrameWork/원본

220502_WIN32API_Framework_2_그리기, DeltaTime

* HDC를 통한 그리기 방법 학습 * DeltaTime을 구현하여 프레임 변동해도 일정한 게임 속도 유지시키는 법 학습 //Class CGameManager //GameManager.h #pragma once #include "GameInfo.h" #include "SingletonMacro.h" /* [프레임과 게임 처리] 내 컴퓨터는 100프레임 PC방 컴퓨터는 200프레임 게임 코드는 1프레임당 한번 게임 로직을 처리 만약 게임 로직이 1프레임에 5씩 캐릭터를 이동시킨다면 내 컴퓨터에서 500 움직일 동안 PC방 컴퓨터는 1000을 움직이게 된다. 아주 심각한 문제 * 매 프레임마다 한 프레임을 그리는 데 걸렸던 시간을 변수에 저장한다. * 그리고 다음 프레임을 그릴때 시간 단위를 위에서 저장한 ..

자습

변수)매번 생성과 동시에 값을 저장 vs 미리 생성해놓고 값 저장

#include "TestClass.h" #include #include int main() { LARGE_INTEGER Second = {}; LARGE_INTEGER Start = {}; LARGE_INTEGER End = {}; int AWin = 0; int BWin = 0; for (int k = 0; k < 100; ++k) { QueryPerformanceFrequency(&Second); QueryPerformanceCounter(&Start); for (int i = 0; i < 10000000; ++i) { int j = i; } QueryPerformanceCounter(&End); double Elapsed1 = (End.QuadPart - Start.QuadPart) / (doub..

WIN32API FrameWork/코드별 설명 개별저장(검색용)

윈도우 핸들( HINSTANCE , HWND , HDC )

* 일종의 번호로 되어 있음. - 이 번호들은 커널 오브젝트에 속함. * 커널: 운영체제가 사용하는 특수한 영역 및 핵심 부분. 사용자는 컨트롤 불가능 * 커널 오브젝트: 커널에 있는 메모리 - 커널에 값을 넣어 놓음 * 핸들은 각자 자신이 부여받은 번호에 속한 오브젝트들을 컨트롤하는 역할을 한다. ex) HWND(윈도우 핸들): 윈도우 창을 컨트롤하기 위한 용도 HDC: WIN32에서 제공하는 그리기 도구. 윈도우 창의 클라이언트와 연결 됨. HINSTANCEm_hInst; HWNDm_hWnd; HDCm_DC;​

WIN32API FrameWork/코드별 설명 개별저장(검색용)

static LRESULT WndProc , static m_Loop

* m_Loop 루프 지속 여부를 확인할 변수 - static 변수로 선언한 이유 static 함수는 static 변수만 처리 가능하다. 계속 루프를 할 지 여부는 메시지를 통해 결정해야 한다. 메시지 루프 처리는 WinProc 함수에서 진행한다. WinProc는 static 함수이다 -> 일반 선언 변수는 처리가 불가능하고 static 변수만 처리 가능하기 때문에 아래 변수를 static으로 선언한 것 static boolm_Loop; static LRESULT CALLBACK WndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam) { //WIN32API 기본 코드에서 가져온 내용 // //message 큐로부터 받은 message에 따라 어떤 ..

WIN32API FrameWork/코드별 설명 개별저장(검색용)

UpdateWindow

이 함수를 호출하여 클라이언트 영역이 제대로 갱신되었다면 0이 아닌 값을 반환하고 갱신이 실패했을 경우 0을 반환한다. UpdateWindow(m_hWnd);

WIN32API FrameWork/코드별 설명 개별저장(검색용)

ShowWindow

윈도우 창을 보여준다. 1번인자에 들어간 핸들의 윈도우 창을 보여줄지 말지를 결정해준다. 2번인자: 기본값인 nCmdShow 대신 SW_SHOW(창을 보여준다), SW_HIDE(창울 숨긴다 - 백그라운드)를 넣어줄 수도 있다. cf)SW_HIDE 외에도 왼도우 서비스를 통해 창을 표시하지 않을 수도 있다. ShowWindow(m_hWnd, SW_SHOW);

WIN32API FrameWork/코드별 설명 개별저장(검색용)

RECT 구조체 , AdjustWindowRect , MoveWindow

사각형을 표현하기 위해서 지원하는 구조체이다. left, top, right, bottom 값으로 이루어져 있다. left와 top = 사각형의 좌측 상단 좌표 right와 bottom = 사각형의 우측 하단 좌표 두 점을 통해 직사각형을 그린다. 윈도우 크기를 표현하는 Rect 구조체를 하나 만들어준다. RECT rc = { 0, 0, 1280, 720 }; 위에서 지정한 크기만큼 클라이언트 영역의 크기로 잡기 위해서 필요한 실제 윈도우의 크기를 얻어온다. * 1번 인자: 원하는 창의 크기가 저장된 주소(RECT 구조체) * 2번 인자: 조절할 창의 기본 형태가 무엇인지 전달 * 3번 인자: 메뉴바 있는지 여부 전달 * 해당 인자들을 전달해 주면, ..

hyrule
'분류 전체보기' 카테고리의 글 목록 (11 Page)