오늘 한 것
- C++ Text RPG 수정
- 게임 개발자를 위한 C++ 문법 강의 듣기 완료
내일 할 것
- C++ Text RPG 도전과제 해보기 + 최종본 완성
- 밀린 CodeKata 하기
- 강의 들을 거 있으면 듣고 정리하기
느낀 점
C++ Text RPG 수정 중에서
전직 시스템에서 1 ~ 4번이 아닌 다른 숫자 입력 시 생기는 오류,
[공격], [방어], [도주] 행동을 추가 중 [도주] 에서 굉장히 힘들었다.
default: 에 isSuccess = false; 추가하는 것을 모르고 있었다. 한참을 찾았던 것 같다.
그리고 [도주] 기능 추가... 정말 힘들었다.
#include <cstdlib>
#include <ctime>
srand(static_cast<unsigned int>(time(nullptr)));
이 3가지를 알아내고 무슨 뜻인지 찾고를 반복하는 하루였다.
그래도 내가 원하는대로 수정이 다 되었으니 만족한다...
.
.
.
그리고.. Unreal_9기 5월 3주차 우수 TIL로 뽑혀 굉장히 기쁘다.
이번 선정은 잘했다는 칭찬보다는 앞으로도 이 방향을 잃지 말고 더 열심히 하라는 응원의 의미라고 생각한다.
잠깐의 기쁨에 안주하지 않고, 늘 그랬듯 내가 부족한 부분을 냉정하게 짚어내며 묵묵히 정진해야겠다.


C++ Text RPG 필수 구현 기능 수정
STEP 3 - 스탯 관리 메뉴
1. 공격력과 방어력 증가가 계속 적용이 가능하던 것을 한 번만 적용되게 수정하였음.
bool isPowerUpgrade = false;
bool isDefenceUpgrade = false;
를 사용하여 적용 되지 않을 땐 false, 적용 된 후엔 true 가 되어 한 번만 적용이 되도록 수정함.


2. 공격력과 방어력 증가를 10 증가로 바꾸어 RPG 진행이 너무 쉽지 않도록 막았음.
power *= 2; 공격력 2배 증가에서 → power += 10; 공격력 10 증가
defence *= 2; 방어력 2배 증가에서 → defence += 10; 방어력 10 증가
[ 3번: 공격력 2배 / 4번: 방어력 2배 ] → [ 3번: 공격력 증가 / 4번: 방어력 증가 ] 로 변경


STEP 4 - Player 클래스 + 직업 선택
- 전직 시스템에서 1 ~ 4번이 아닌 다른 숫자 입력 시 생기는 오류를 해결하였음.
에러 코드
Exception thrown: read access violation. player was nullptr.
→ 전직 시스템에서 1 ~ 4번이 아닌 다른 번호(예시: 5번)를 입력하면 switch문은 default: 로 가게됨.
→ defauit: 에는 객체를 생성하는 코드가 없음.
→ player 변수에 처음 입력된 nullptr 은 그대로 존재하게 됨.
→ player 가 nullptr 인 상태로 전투로 넘어가 에러가 생김.
해결 방법
default: 에 isSuccess = false; 를 추가
→ 잘못된 번호 입력 시 if (isSuccess) break; 조건에 맞지 않아 switch문 맨 위로 다시 올라가게 됨.


STEP 5 - Monster 클래스 + 1:1 전투 (클래스 설계, 전투 루프)
- 몬스터와 조우했을 때 자동 전투 되는 방식을 수정하였음.
- 몬스터와의 조우 시
플레이어와 몬스터의 스탯을 실시간으로 볼 수 있음
→ 매 턴이 시작될 때마다 플레이어와 몬스터의 HP 가 새로고침되어 출력됨.
- [공격], [방어], [도주] 행동을 추가하였음.
→ 자동 전투 방식에서 플레이어가 직접 행동을 결정하는 턴제 선택형 전투 시스템으로 바꿨음.
int battleChoice; → 플레이어가 입력할 숫자를 저장할 정수형 변수 생성( 1, 2, 3번을 눌러야됨)
if (!(cin >> battleChoice)) → 괄호 안의 결과가 실패하면(!) 실행


- 공격
→ 기본 STEP 5 와 동일하게 작동함.
- 방어
→ 플레이어는 공격 X, 몬스터만 공격, 플레이어는 방어하는 턴 동안만 + 10을 얻음.

- 도주
→ 50% 확률로 도주를 성공하게 설정했음.

실행할 때마다 랜덤을 하게 해주는 명령어
#include <cstdlib>
→ 랜덤 숫자를 뽑는 기능 rand(), srand()을 사용하기 위함
#include <ctime>
→ time(nullptr)를 사용하기 위함
→ 컴퓨터의 현재 시간을 초 단위로 가져옴
→ 1초에 1씩 계속 켜짐
→ 중복되지 않는 숫자가 들어옴
srand()
→ 컴퓨터 내부의 난수 테이블을 섞는 함수
srand(static_cast<unsigned int>(time(nullptr)));
→ 매초 바뀌는 컴퓨터 시간 데이터를 활용하여,
프로그램을 실행할 때마다 랜덤 숫자가 다르게 나오도록 만든 난수 초기화 명령어

도주 성공 시 몬스터를 처치했을 때의 보상은 얻지 못하고 바로 메인메뉴로 나가게 됨.
bool isEscaped = false;
→ 아직 도망치지 않은 상태
else if (isEscaped == true)
→ 도망에 성공한다면



'본 캠프 TIL' 카테고리의 다른 글
| 26.05.20 TIL / C++ Text RPG 오류 수정, 도전 과제, 세부 기능 보완 (0) | 2026.05.20 |
|---|---|
| 26.05.19 / C++ Text RPG 오류 수정, 도전 과제 , AI 튜터 에이타니 활용 (0) | 2026.05.19 |
| 26.05.15 TIL / C++ Text RPG 수정 (0) | 2026.05.15 |
| 26.05.14 TIL (0) | 2026.05.14 |
| 26.05.13 TIL / C++ Text RPG STEP 6 ~ 8 (0) | 2026.05.13 |