Window API 14

[Window API] 파일 입출력

게임 프로그래머 입문 올인원 강의 수강 후 복습용으로 작성   1. 타일맵 정보 저장하기1) 저장할 정보 정하기2) 파일 포맷 정하기3) 파일 저장하기 : SaveFile()C style// Tilemap.cppvoid Tilemap::SaveFile(const wstring& path){ // C style { FILE* file = nullptr; ::_wfopen_s(&file, path.c_str(), L"wb"); assert(file != nullptr); // _mapSize.x ::fwrite(&_mapSize.x, sizeof(_mapSize.x), 1, file); ::fwrite(&_mapSize.y, sizeof(_mapSize.y), 1, file); for (int3..

[Window API] UI

게임 프로그래머 입문 올인원 강의 수강 후 복습용으로 작성   1. UI 만들기1) UI 클래스 추가// UI.h#pragma onceclass UI{public: UI(); virtual ~UI(); virtual void BeginPlay(); virtual void Tick(); virtual void Render(HDC hdc); void SetPos(Vec2 pos) { _pos = pos; } Vec2 GetPos() { return _pos; } RECT GetRect(); bool IsMouseInRect();protected: Vec2 _pos = { 400, 300 }; Vec2Int _size = { 150, 150 };};// UI.cpp// ...RECT UI::GetRect(){..

[Window API] 충돌

게임 프로그래머 입문 올인원 강의 수강 후 복습용으로 작성   1.  충돌 감지하기 (Component로 충돌 구현)1) Collider 클래스 추가// Collider.h#pragma once#include "Component.h"class BoxCollider;class SphereCollider;class Collider : public Component{public: Collider(ColliderType colliderType); virtual ~Collider() override; virtual void BeginPlay() override; virtual void TickComponent() override; virtual void Render(HDC hdc) override; virtual..

[Window API] 카메라

게임 프로그래머 입문 올인원 강의 수강 후 복습용으로 작성   1. 카메라 만들기1) SceneManager 수정camera 위치 추가// SceneManager.hclass SceneManager{// ...public: Vec2 GetCameraPos() { return _cameraPos; } void SetCameraPos(Vec2 pos) { _cameraPos = pos; }private: Vec2 _cameraPos = { 400, 300 };};  2) SpriteActor 수정// SpriteActor.cppvoid SpriteActor::Render(HDC hdc){ Super::Render(hdc); if (_sprite == nullptr) return; Vec2Int size = ..

[Window API] 애니메이션 (Flipbook)

게임 프로그래머 입문 올인원 강의 수강 후 복습용으로 작성   1. Animation 만들기1) DevScene 수정2) pch.h에 라이브러리 추가3) BitBlt() → TransparentBlt() : 배경이 렌더링 안되는 문제 있음// DevScene.cppvoid DevScene::Init(){ GET_SINGLE(ResourceManager)->LoadTexture(L"Stage01", L"Sprite\\Map\\Stage01.bmp"); GET_SINGLE(ResourceManager)->LoadTexture(L"Sword", L"Sprite\\Item\\Sword.bmp"); GET_SINGLE(ResourceManager)->LoadTexture(L"Potion", L"Sprite\\UI..

[Window API] 코드 구조 설계 (Unreal, Unity 방식)

게임 프로그래머 입문 올인원 강의 수강 후 복습용으로 작성   1. Unreal 방식 : Scene에서 Actor 사용1) DevScene 수정// DevScene.h#pragma once#include "Scene.h"class Actor;class DevScene : public Scene{public: DevScene(); virtual ~DevScene(); virtual void Init() override; virtual void Update() override; virtual void Render(HDC hdc) override;public: vector _actors;};// DevScene.cpp// ...void DevScene::Init(){ GET_SINGLE(ResourceMana..

[Window API] Texture, Sprite

게임 프로그래머 입문 올인원 강의 수강 후 복습용으로 작성   1. 프로젝트 폴더 관리1) 폴더 생성Resources : 사운드 파일, 아트 리소스 등을 담는 폴더Binaries : 빌드한 결과물이 저장되는 폴더Intermediate : 중간에 만들어지는 파일을 담는 폴더  2) 디렉터리 경로 변경프로젝트 우클릭 > 속성 > 일반 > 출력 디렉터리 / 중간 디렉터리 > 편집 > 원하는 경로 입력   2. Resource 사용하기1) ResourceManager 수정ResourceManager를 사용하는 이유는? 한 번만 로드해서 여러 번 사용하기 위해 (Object와 다름)// ResourceManager.h#pragma onceclass ResourceBase;class Texture;class Res..

[Window API] 포트리스 모작

게임 프로그래머 입문 올인원 강의 수강 후 복습용으로 작성   1. Resource 추가프로젝트 폴더에 리소스 파일들 추가 VS 프로젝트 필터에 드래그 & 드롭    2. Values.h 추가미리 지정해 둘 변수// Values.h#pragma onceconst int32 GWinSizeX = 800;const int32 GWinSizeY = 600;const int32 GMinimapSizeX = 200;const int32 GMinimapSizeY = 128;const float PI = 3.1415926f;   3. ResourceManager 수정Resource 추가 : UI, Menu, MissileTank, CanonTank// ResourceManager.cppvoid ResourceMana..

[Window API] 게임 수학

게임 프로그래머 입문 올인원 강의 수강 후 복습용으로 작성 (수업자료 참고)   목차삼각 함수벡터내적외적역삼각함수속도와 가속도   1. 삼각 함수1) cos, sin, tan※ 응용 a = cos × c → cos과 c를 알 때 a 값을 구할 수 있다.b = sin × c → sin과 c를 알 때 b 값을 구할 수 있다.  2) 각도법 (단위 원에 대한 각도)Degree 각도법 (수도법) : 0º ~ 360ºRadian 각도법 (호도법) : 0 ~ 2π → 게임에서 주로 사용1 rad = 57.29º 2π = 360ºπ = 180º π/2  = 90ºπ/3 = 60º π/4 = 45º π/6 = 30º   3) 코드에 적용발사 각도 입력받기 : Q, E key발사 위치 구하기 : GetFirePos()..

게임 수학 2025.03.01

[Window API] Resource

게임 프로그래머 입문 올인원 강의 수강 후 복습용으로 작성   1. EditScene : 사용자가 화면에 그린 그림을 리소스로 저장1) 사용자가 그린 선을 담아둘 vector 추가2) 마우스 왼쪽 버튼과 오른쪽 버튼을 사용해서 선을 그리는 로직 추가3) 그린 선을 화면에 렌더링하는 로직 추가4) 그림을 리소스 파일로 저장 : 파일 스트림 방식5) 저장한 리소스 파일을 로드// EditScene.hprivate: vector> _lines; bool _setOrigin = true; POINT _lastPos = {}; // EditScene.cpp#include void EditScene::Update(){ if (GET_SINGLE(InputManager)->GetButtonDown(Key..