깃허브
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의 Init 단계에서 모든 UI 초기화UIList(map)에 UI 할당.
현재 씬에 필요한 UI만 활성화.
씬 전환 시 불필요한 UI 비활성화.
UI는 단순히 이미지를 띄우는 용도.
Button은 UI를 상속받았으며 추상클래스임.
각 버튼마다 고유한 ClickEvent가 있을것이기 때문에 각 버튼에서 정의.
상속받은 클래스에서 반드시 ClickEvent 구현.
탄맥 패턴
- BasicShot
- ShapeShot
- CircleShot
- CircleShotGoToTarget
- HeartShot
- HeartShotGoToTarget
- SpinShot
- SpinShotGoToTarget
- RoseShot
- RoseSpinShot
각 패턴의 파라미터를 다르게 설정하여 다양한 탄막 효과 구현 가능.
Enemy
Enemy 기본 클래스를 상속받은 TrashMob 구현.
각 TrashMob별 고유한 움직임 및 공격 패턴.
적 사망 시 터지는 효과.
약 30% 확률로 플레이어에게 도움되는 아이템 드롭.
Object
배운점
- 이 프로젝트를 통해 포인터 활용 능력이 크게 향상되었습니다. 특히 포인터의 메모리 관리와 할당 해제에 대한 깊은 이해를 얻을 수 있었습니다.
- 메모리 누수 문제에 대해서도 이전보다 훨씬 더 체계적이고 효과적으로 대응할 수 있게 되었으며 코드 작성 과정에서 메모리 관리의 중요성을 더욱 명확히 인식하게 되었습니다.
- 또한 이 프로젝트는 객체 지향 프로그래밍의 상속 구조에 대한 제 이해를 크게 넓혀주었습니다. 클래스 간의 관계를 설계하고 상속을 효과적으로 활용하는 방법을 실제 게임 개발 과정에서 익힐 수 있었습니다.
- 앞으로 프레임워크를 개발할 때는 리소스 관리와 메모리 관리에 특별히 더 많은 주의를 기울여야 한다는 중요한 교훈을 얻었습니다.
'c++' 카테고리의 다른 글
| 보이드 포인터(void pointer)에 대해 알아보자. (0) | 2025.02.09 |
|---|---|
| 복사 연산자를 만들때 주의해야 할점을 알아보자. (1) | 2025.02.05 |
| 컴파일러가 자동으로 만들어 주는 함수들을 알아보자. (1) | 2025.01.14 |
| Cpp의 컴파일 과정을 알아보자. (5) | 2025.01.12 |
| l-value와 r-value (0) | 2024.10.30 |