본 캠프 TIL

26.05.20 TIL / C++ Text RPG 오류 수정, 도전 과제, 세부 기능 보완

jh009 2026. 5. 20. 20:24

오늘한 것

C++ Text RPG 

- 도전 STEP 2 완료

- 오류 수정

- 세부 기능 보완 및 밸런스 조정 사항 작성

- 최종본 제출 완료

 

AI 튜터 에이타니 AI 진단 퀴즈 풀기

Blueprint 학습주차

- 블루프린트 노드 연결과 동작 구현

- 콜리전 채널과 오버랩·블록 이해

 

C++ 문법 학습주차

- 객체지향 프로그래밍의 4대 특성 이해

- 클래스와 객체의 이해

- 생성자·소멸자와 접근 제어자의 이해

- 포인터와 동적 메모리 관리

- 함수와 연산자 오버로딩 이해

- 템플릿과 제네릭 프로그래밍의 이해 


배운 점

소멸자의 대한 설명을 다시 공부하였다.

- 클래스 이름 앞에 ~(틸드) 기호를 붙여 선언

- 오버로딩이 불가능 (한 클래스에 하나만 존재)

- 매개변수를 가질 수 없음

- 명시적으로 정의하지 않아도 컴파일러가 기본 소멸자를 자동으로 생성하여 객체 소멸 시 호출

 

AI 튜터

Blueprint 학습주차 - 언리얼 에디터의 주요 구성 요소와 기능 이해 복습을 하였다.

뷰포트, 아웃라이너, 디테일 패널, 콘텐츠 브라우저처럼 자주 사용하는 영역이 각각 어떤 역할을 하는지 다시 정리하면서,

에디터 화면 구조를 더 익혔다.


내일할 것

- AI 진단 퀴즈 풀기 Blueprint 학습주차, C++ 문법 학습주차 복습

- AI 튜터를 활용하여 개념 점검

- 21일부터 시작되는 팀프로젝트 참여


느낀점

C++ Text RPG (과제 2번)이 드디어 끝났다. 처음엔 내가 할 수 있을지 막막하고, 스트레스도 좀 받았지만 강의를 듣고

천천히 진행하다보니 어떻게든 다 끝낼 수 있었다. 마무리까지 잘 한 것 같지만, 도전과제를 1번과 2번만 해서 조금은 아쉽다.

팀프로젝트로 발제 되는 과제를 더 열심히 참여해야겠다.

 

C++ 문법 학습주차에서 AI튜터를 활용하여 문제를 더 풀어야겠다. 아직 이해가 덜 된 것들이 많다. 

객체지향 프로그래밍의 4대 특성 / 함수와 연산자 오버로딩 이해 / 생성자·소멸자와 접근 제어자의 이해

/ 제네릭 프로그래밍은 더 공부가 필요하다.


도전 STEP 2 - 레벨 & 경험치 시스템 (변수 활용)


Player.h

- exp, maxExp, level 을 상속받는 자식 클래스들이 접근할 수 있도록 protected 영역에 추가

- getter 메서드를 const로 선언

Player.h


Player.cpp 

생성자 초기화

플레이어 생성 시 기본적으로 Level = 1, Exp = 0, MaxExp = 100으로 기본값이 세팅되도록 설정

Player.cpp 1

 

한 번에 많은 경험치를 얻어 2번 이상 연속으로 레벨업하는 상황을 대비

if문 대신 while문(exp >= maxexp)을 사용

 

전투 승리 후 경험치를 얻음

→ maxexp가 100이 됨 

→ 레벨업 조건이 발동하고 스탯이 상승

Player.cpp 2

 

main.cpp 

슬라임과 고블린의 경험치를 각각 30, 40으로 설정 

main.cpp

 

경험치 획득과 레벨 업


C++ Text RPG main.cpp 수정

1. 이름 충돌 방지내부 전용 기능임을 명확히 하기 위해서 static 을 추가로 붙여주었음

main.cpp


2. main.cpp의 가독성을 높이기 위해 Monster.h 와 Monster.cpp 에 따로 공격 함수를 추가하였음 

Monster.h
Monster.cpp
수정 전 main.cpp
수정 후 main.cpp


C++ Text RPG 세부 기능 보완 및 밸런스 조정 사항 (5/15 ~ 5/20)

STEP 1 - 캐릭터 생성 화면

캐릭터 생성 화면 UI 및 편의성 개선

 

[기존]

스탯 2개씩 입력

 

[변경]

스탯 4개 한꺼번에 입력


STEP 2 - 입력 유효성 검사

- 스탯 입력 최대치 제한을 통한 난이도 조절 기능 보완

 

[기존]

하한선만 검증 스탯 50 이상이면 통과 (상한선 없음)

 

[변경] 

모든 스탯의 상/하한선(40~50) 일괄 검증

 

[추가]

텍스트 입력 예외 처리 및 초기화

if (!(cin >> hp >> mp >> power >> defence)) 
{
     cout << "* 숫자만 입력해주세요." << endl;
     cin.clear();
     cin.ignore(100, '\n');
     continue;
}

STEP 3 - 스탯 관리 메뉴

- 공격력, 방어력 업그레이드 활성화 횟수 제한(최대 1회) , 증가 방식 변경

 

[기존]

업그레이드 활성화 횟수 제한 없음 / 증가 방식: 기존 스탯의 2배 증가

 

[변경]

업그레이드 활성화 횟수 최대 1회 / 증가 방식: 고정 수치 10 증가


STEP 4 - Player 클래스 + 직업 선택

- 직업별 특화 스탯(보너스/패널티) 도입 및 클래스 개성 강화

 

[기존]
전사: HP +30

궁수: 방어력 +30
마법사: MP +30
도적: 공격력 +30


[변경]
전사: HP +20, 방어력 +20, MP -10 
궁수: HP +20, 공격력 +20, 방어력 -10
마법사: MP +30, 공격력 +10, HP -10
도적: MP +10, 공격력 +30, 방어력 -10

 

[추가]

텍스트 입력 예외 처리 및 초기화

if (!(cin >> hp >> mp >> power >> defence)) 
{
     cout << "* 숫자만 입력해주세요." << endl;
     cin.clear();
     cin.ignore(100, '\n');
     continue;
}

STEP 5 - Monster 클래스 + 1:1 전투

- 몬스터 조우 시 자동 전투를 선택형 전투로 변경

 

[기존]

- 스탯 실시간 확인 불가

- 자동 전투 시스템

 

[변경]

- 매 턴 시작 시 현재 HP 출력

- 턴제 선택형 전투 시스템

- [공격], [방어], [도주] 행동을 추가

[공격] → 자동 전투 시스템과 동일

[방어] → 해당 턴 방어력 +10 상승 (공격 불가, 몬스터만 공격)

[도주] → 50% 확률로 도주 성공

(성공 시: 보상 없이 메인 메뉴 이동 / 실패 시: 해당 턴 방어력 -10 하락 된 후 몬스터만 공격)

 

[수정]

몬스터 처치 시에도 패배 처리되는 현상

[기존] if (player->getHP() > 0 && enemy->getHP() == false)
[변경] if (player->getHP() > 0 && enemy->getHP() <= 0)