본문 바로가기
c++

[winApi 프로젝트]북방 프로젝트

by chunma1126 2024. 12. 11.

깃허브

https://github.com/chunma1126/NorthProject

 

GitHub - chunma1126/NorthProject

Contribute to chunma1126/NorthProject development by creating an account on GitHub.

github.com


다운로드 링크
https://drive.google.com/file/d/1xZmJ0mfyy85U67-0q8DhlXkxG_B6lk4J/view

 

jyd_ojy_CPP_TEAM.zip

 

drive.google.com

 

프로젝트 배경

 게임 프로그래밍 수업의 마지막 프로젝트로, 개인의 수학적 역량 강화와 새로운 게임 장르에 대한 도전을 목표로 시작되었습니다. 대표적인 탄막 슈팅 게임인 동방 프로젝트를 모델로 삼아 게임을 제작하게 되었습니다.

 

 프로젝트 이름을 북방 프로젝트 로 정한 이유는 동방 프록제트를 모작 하자는 의미에서 동을 서로 바꾸기로 했는데 서방 프로젝트가 이미 있어서..어쩔수 없이 북으로 하기로 했습니다.

 

 

게임개요

게임이름 북방 프로젝트(North Project)
장르 탄막 슈팅
개발인원 3명
개발기간 2024.11.11~12.06

 

 

참고한 게임

동방프로젝트

 

맡은일

프로젝트의 팀장이기도 하고 다른 친구들보다 cpp에 익숙했기 때문에 상대적으로 중요한 일들을 주로 담당했습니다.

더보기
  • UI 관리
  • 탄막 패턴 설계
  • 적 움직임 및 사망 처리
  • 기타 잡일

 

UI

더보기

UIManager.cpp

UIManager의 Init 단계에서 모든 UI 초기화UIList(map)에 UI 할당.

현재 씬에 필요한 UI만 활성화.

씬 전환 시 불필요한 UI 비활성화.

 

UI.cpp

UI는 단순히 이미지를 띄우는 용도.

 

Button.cpp

Button은 UI를 상속받았으며 추상클래스임.

각 버튼마다 고유한 ClickEvent가 있을것이기 때문에 각 버튼에서 정의.

상속받은 클래스에서 반드시 ClickEvent 구현.

 

탄맥 패턴

더보기

BulletManager.cpp

  1. BasicShot
  2. ShapeShot
  3. CircleShot
  4. CircleShotGoToTarget
  5. HeartShot
  6. HeartShotGoToTarget
  7. SpinShot
  8. SpinShotGoToTarget
  9. RoseShot
  10. RoseSpinShot

각 패턴의 파라미터를 다르게 설정하여 다양한 탄막 효과 구현 가능.

 

Enemy

더보기

enemy.cpp

TrashMob1.cpp

TrashMob2.cpp

TrashMob3.cpp

 

Enemy 기본 클래스를 상속받은 TrashMob 구현.

각 TrashMob별 고유한 움직임 및 공격 패턴.

적 사망 시 터지는 효과.

약 30% 확률로 플레이어에게 도움되는 아이템 드롭.

 

 

 

Object

더보기

Background.cpp

텍스쳐 하나를 2번씩 그려주면서 무한 스크롤링 구현.

 

Item.cpp

 

배운점

  •  이 프로젝트를 통해 포인터 활용 능력이 크게 향상되었습니다. 특히 포인터의 메모리 관리와 할당 해제에 대한 깊은 이해를 얻을 수 있었습니다.
  •  메모리 누수 문제에 대해서도 이전보다 훨씬 더 체계적이고 효과적으로 대응할 수 있게 되었으며 코드 작성 과정에서 메모리 관리의 중요성을 더욱 명확히 인식하게 되었습니다.
  •  또한 이 프로젝트는 객체 지향 프로그래밍의 상속 구조에 대한 제 이해를 크게 넓혀주었습니다. 클래스 간의 관계를 설계하고 상속을 효과적으로 활용하는 방법을 실제 게임 개발 과정에서 익힐 수 있었습니다.
  •  앞으로 프레임워크를 개발할 때는 리소스 관리와 메모리 관리에 특별히 더 많은 주의를 기울여야 한다는 중요한 교훈을 얻었습니다.