
1번 과제: 텍스트 슈팅 게임 버그 고치기
지금까지 구현한 텍스트 슈팅 게임에는 버그들이 존재함. 그 중 가장 중요한 버그 두 가지를 고쳐보자.
1) 30발 이상 격발 할 수 있는 버그
현재 총알의 개수가 0보다 작은 경우에는 발사할 수 없게끔 로직을 수정해보세요.
”Out of ammo…”라는 문구가 출력되면 더 좋습니다.


2) 총알이 가득차 있는 경우에도 재장전 되는 버그
현재 총알의 개수가 30발 만발인 경우에는 재정전 되지 않게끔 수정해보세요.
”Already full…”이라는 문구가 출력되면 더 좋습니다.

2번 과제: 텍스트 슈팅 게임 기능 추가하기
총알을 발사하고 장전만 할 수 있는 게임은 너무 지루함. 두 가지 추가 기능을 구현해보자.
1) 과열 상태 추가
여러 발을 격발할 경우, 총기가 과열될 수 있습니다.
CurrentTemperature라는 속성을 추가하고 한 발당 1씩 증가하게끔 로직을 짜봅시다.
그리고 CurrentHeatState라는 속성을 추가하고,
CurrentTemperature가 0~30까지는 CurrentHeatState가 ”Normal”
CurrentTemperature가 31~70까지는 CurrentHeatState가 ”High”
CurrentTemperature가 71이상은 CurrentHeatState가 ”Over”로 설정되게끔 합니다.

2) 쿨다운 기능
특정 키를 누를때마다 총기의 온도가 내려가게끔 구현해봅시다.
C키를 누르면 CurrentTemperature를 1씩 감소하게끔 로직을 작성해보세요.
CurrentTemperature가 변하면 CurrentHeatState도 그에따라 변해야합니다.




3번 과제: 텍스트 슈팅 게임 무기 추가하기
라이플, 샷건, 피스톨 무기를 추가하고 무기교체를 구현해봅시다.
1) 무기 추가하기
0번을 누르면 라이플, 1번을 누르면 샷건, 2번을 누르면 피스톨로 교체됩니다.
격발하면 현재 무기의 총알만 소모하고, 과열 상태도 현재 무기만 과열됩니다.
구조체(Structure)를 이용하여 변수들을 묶어서 하나의 데이터 타입으로 만든다.

변수를 2개 만들어서 하나는 만든 구조체 Weapon을 넣고 여러 무기를 넣기 위해 배열로 바꾼다.
나머지 하나는 배열의 Index값을 넣기 위한 변수로 인티저로 바꿔준다.

배열에 무기의 각 이름, 최대 총알 값을 넣어준다.

키보드 숫자 1, 2, 3을 누를 때 배열의 인덱스 값을 0, 1, 2로 저장하고 배열의 Get 노드를 이용하여 인덱스 값이 바뀌면 바뀐 인덱스에 해당하는 무기의 이름이 출력되도록 구현한다.(get노드의 출력 핀을 분할함.)

이 get 노드를 이용하여 다른 로직에도 똑같이 구현해준다.



재장전 로직은 첫번째로 인덱스의 숫자(=어떤 무기인지)를 먼저 판단하고 그 무기에 해당하는 초기 Bullets값과 같은지를 판단한다.
R을 누를 때 만약 각 무기의 초기 Bullets값과 현재의 총알 개수가 같다면 "Already full..." 출력, 아니면 "무기이름 Reload" 출력함.

결과
'개인 프로젝트(과제)' 카테고리의 다른 글
| C++ 숙제(배터리 관리 클래스 만들기) (2) | 2025.08.13 |
|---|---|
| C++ 숙제(포인터 변수를 활용한 변수값 변경, 레퍼런스 변수를 활용한 변수값 변경) (0) | 2025.08.13 |
| 본 캠프 3일차 (숙제 : 게임을 더 재미있게 만들어보기) (0) | 2025.08.06 |
| 본 캠프 1일차 (숙제 : 나만의 인공지능을 만들고 배치해보기) (0) | 2025.08.05 |
| 블루프린트로 쉽게 배우는 3D 게임 개발 3-4 과제 : 리깅된 캐릭터 3D에셋을 가져와 리타게팅 하기 (0) | 2025.07.30 |