728x90 WinAPI6 연습 - 이동하는 적과 적의 총알 만들기 ✨ 구현목표조건1. 위, 아래로 이동하는 적 만들기. 플레이어와 동일하게 네모로 표현.조건2. 적이 위로 이동 중 최상단에 닿으면 아래로 이동한다.적이 아래로 이동 중 최하단에 닿으면 위로 이동한다.조건3. 1초에 한번씩 플레이어 방향으로 향하는 총알을 발사한다. ✨ 구현 결과 ▶️GameManager.h#pragma once#include "GameInfo.h"class CGameManager{private : static bool mLoop; // 윈도우 HINSTANCE 저장. HINSTANCE mhInst = 0; HWND mhWnd = 0; HDC mhDC = 0; // 윈도우 클래스 이름 저장. TCHAR mClassName[256] = {}; TCHAR mTitle.. 2025. 2. 12. 키 입력, 총알 생성 및 이동처리 ▶️ 키입력 처리하기- GetAsyncKeyState() : 키 입력을 바로 처리할 수 있는 함수입니다.- DX Input보다는 성능이 좋진 않습니다. 거의 비슷하긴 합니다.void CGameManager::Input ( float DeltaTime ){ // GetAsyncKeyState() : 키입력을 바로 처리할 수 있다. // 한개의 문자키는 ' '로 감싸서 입력한다. // &연산으로 0x8000을 하여 true가 나올 경우 해당키를 누르고 있는 상태이다. // 특수키의 경우 이미 등록되어있다 // space의 경우 VK_SPACE를 사용하면 된다. if ( GetAsyncKeyState ( 'W' ) & 0x8000 ) { mRC.Top -= .. 2025. 2. 11. 게임실행 단계 분리, 타이머 클래스, 클라이언트 영역 조절 ▶️ GameManager.Logic()추가- Run()에서 윈도우 데트타임일 경우 Logic()을 호출해줍니다.- Logic()은 게임을 만들기위한 단계들을 분리하여 실행할 함수입니다.- 프레임별로 게임을 처리할 함수들을 추가합니다.// GameManager.hvoid Logic ();// 사용자의 입력 받는 기능 - 키 등. deltaTime을 이용하여 계산할 예정.void Input ( float DeltaTime );// 데이터의 갱신 담당void Update ( float DeltaTime );// 데이터들이 업데이트 되고 나서 처리할 함수.void PostUpdate ( float DeltaTime );// 충돌 처리void Collision ( float DeltaTime );// 충돌 후 .. 2025. 2. 10. 기본 구조 설계 : 게임관리자/게임정보/메인 클래스 제작, 폴더 정리를 위한 솔루션 제거와 기존 프로젝트를 솔루션에 추가 게임을 만들기에 앞서서, 기본 구조를 우리가 수정하기 좋은 구조로 설계하여 새로 만들어보겠습니다. ▶️새프로젝트 만들기 새 프로젝트 만들기 - Windows 데스크톱 마법사 를 이용하여 새 프로젝트를 생성합니다. 프로젝트 이름을 설정하고만들기를 누르면어플리케이션 종류를 설정할 수 있는 창이 출력됩니다.콘솔 애플리케이션 - 기존에 했던 콘솔창으로 출력 데스크톱 애플리케이션 - 우리가 사용할 애플리케이션 종류.dll - 동적링크 라이브러리(dynamic Link Library). 동적으로 코드를 링크를 걸고 사용할 수 해주게 해주는 라이브러리 종류lib - 정적링크 라이브러리.링크를 걸고 라이브러리화 되어있는 코드를 우리코드로 끌어다가 쓸 때 사용 빈프로젝트 체크 - 텅 비어있는 상태로 프로젝트를 생.. 2025. 2. 3. 화면에 도형, 문자, 선 출력하기 wWinMain()에서 기본 메세지 루프인 GetMessage() 대신 PeekMessage()를 사용하는 구조로 변경해줍니다. // 전역변수 gLoop 추가bool gLoop = true;...//while (GetMessage(&msg, nullptr, 0, 0))while ( gLoop ){ // 메세지가 있을때만 동작 if ( PeekMessage(&msg, nullptr, 0, 0, PM_REMOVE)) { TranslateMessage(&msg); DispatchMessage(&msg); } // 윈도우 데드타임일 경우 동작한다. (메세지 큐에 메세지가 없는 경우) // 게임은 보통 이 위치에서 동작하도록 작업한다. els.. 2025. 2. 2. 이전 1 2 다음 728x90