======================================================================== WIN32 응용 프로그램 : LabProject 프로젝트 개요 ======================================================================== 응용 프로그램 마법사에서 이 LabProject 응용 프로그램을 만들었습니다. 이 파일에는 LabProject 응용 프로그램을 구성하는 각 파일에 대한 요약 설명이 포함되어 있습니다. LabProject.vcproj 응용 프로그램 마법사를 사용하여 생성한 VC++ 프로젝트의 기본 프로젝트 파일입니다. 파일을 생성한 Visual C++ 버전에 대한 정보와 응용 프로그램 마법사를 사용하여 선택한 플랫폼, 구성 및 프로젝트 기능에 대한 정보가 포함되어 있습니다. LabProject.cpp 기본 응용 프로그램 소스 파일입니다. ///////////////////////////////////////////////////////////////////////////// 응용 프로그램 마법사에서 다음 리소스를 만들었습니다. LabProject.rc 프로그램에서 사용하는 모든 Microsoft Windows 리소스의 목록입니다. 여기에는 RES 하위 디렉터리에 저장된 아이콘, 비트맵 및 커서가 포함됩니다. 이 파일은 Visual C++에서 직접 편집할 수 있습니다. Resource.h 새 리소스 ID를 정의하는 표준 헤더 파일입니다. Microsoft Visual C++에서 이 파일을 읽고 업데이트합니다. LabProject.ico 아이콘 파일이며, 응용 프로그램의 아이콘(32x32)으로 사용됩니다. 이 아이콘은 기본 리소스 파일인 LabProject.rc에 의해 포함됩니다. small.ico 응용 프로그램의 아이콘으로 사용되는 파일로, 16x16 크기의 작은 버전의 아이콘이 포함되어 있습니다. 이 아이콘은 기본 리소스 파일인 LabProject.rc에 의해 포함됩니다. ///////////////////////////////////////////////////////////////////////////// 기타 표준 파일: StdAfx.h, StdAfx.cpp 이 파일은 미리 컴파일된 헤더(PCH) 파일인 LabProject.pch와 미리 컴파일된 형식(PCT) 파일인 StdAfx.obj를 빌드하는 데 사용됩니다. ///////////////////////////////////////////////////////////////////////////// 기타 참고: 응용 프로그램 마법사에서 사용하는 "TODO:" 주석은 사용자가 추가하거나 사용자 지정해야 하는 소스 코드 부분을 나타냅니다. ///////////////////////////////////////////////////////////////////////////// 게임 객체를 제어하기 위한 파일 : GameObject.h, GameObject.cpp 화면에 그래픽을 출력하기 위해 매쉬를 그리기 위한 클래스와, 기본적인 게임오브젝트 클래스, 그리고 게임오브젝트를 상속하는 paticle클래스가 존재합니다. 게임오브젝트는 게임상의 존재하는 모든 객체들이 상속하는 클래스입니다. 기본적인 위치와 회전방향, 회전속도, 이동방향, 이동속도, 객체의 색깔, 충돌체크 객체가 가지고 있는 매쉬의 정보 등을 정의하고 있습니다. 또한 실제로 오브젝트가 움직이고 화면상의 그리기 위한 Animate함수와 Render함수를 가지고 있습니다. paticle클래스는 게임오브젝트 클래스를 상속하는 클래스입니다. 파티클클래스는 충돌체크를 할 필요가 없으므로 Animate함수에서 OOBB에 대한 제어를 수행하지 않습니다. Player.h, Player.cpp 플레이어 객체를 위한 클래스와 카메라를 위한 클래스가 존재합니다 플레이어 클래스는 게임오브젝트를 상속하는 클래스입니다. 거기에 추가로 총알을 제어하기 위한 변수들과 카메라를 제어하기 위한 변수, 플레이어의 다양한 조작을 위한 함수들을 추가로 포함하고 있습니다 카메라 클래스는 월드 상의 객체들을 화면 상에 그려주는 역활을 합니다. EnemyObject.h, EnemyObject.cpp 적 객체를 위한 클래스를 가지고 있습니다. 게임오브젝트 클래스를 상속합니다. 간단한 적의 생성 규칙에 대한 함수를 가지고 있습니다. Bullet.h, Bullet.cpp 총알 객체를 위한 클래스를 가지고 있습니다. 게임오브젝트 클래스를 상속하는 클래스입니다. 총알의 최대 생존 시간(생존시간이 지나면 자동 소멸)과 총알이 존재할 수 있는 영역(영역 밖으로 나가면 소멸) 에 대해 정의하고 있습니다. Item.h, Item.cpp 아이템 객체를 위한 클래스를 가지고 있습니다. 게임오브젝트 클래스를 상속하는 클래스입니다. 아이템의 종류를 설정하기 위한 함수를 가지고 있습니다. Map.h, Map.cpp 게임월드의 맵을 위한 Wall 클래스와 그 맵을 그리기 위한 타일 클래스를 가지고 있습니다. Wall클래스는 맵의 전체적인 사이즈와 타일을 세팅하기 위한 함수를 정의하고 있습니다. //////////////////////////////////////////////////////////////////////////// 게임의 전체적인 흐름을 제어하기 위한 파일 : GameFrameWork.h, GameFrameWork.cpp 전체적인 게임의 흐름을 제어하기 위한 CGameFramework클래스와 점수를 저장하기 위한 Score클래스와 간단한 UI를 띄우기 위한 UI클래스가 존재합니다. CGameFramework클래스는 게임상의 객체들의 생성과 객체들간의 상호작용, Render, 키보드, 마우스의 입출력에 대한 반응과 객체들의 소멸에 대해 담당합니다. 객체들 간의 상호작용에는 객체들 간의 충돌체크와 객체들의 움직임이 포함됩니다. 키보드, 마우스 입출력에 대한 반응으로 게임이 시작, 종료되고 플레이어 객체가 움직입니다. Scroe클래스는 플레이어가 이동한 거리와 파괴한 객체의 수를 체크해서 점수를 산정합니다 UI클래스는 현재 플레이어의 점수와 총알의 이동속도, 부스터 사용가능한 게이지를 표시합니다. GameTimer.h, GameTimer.cpp 현재 게임의 fps를 띄우고 게임의 fps를 제한하기 위한 CGameTimer클래스가 존재합니다. 게임의 프레임을 볼 수 있고, 개발자가 원하는 데로 제한할 수 있습니다. ////////////////////////////////////////////////////////////////////////////