🧠 오늘의 핵심 정리
- 추석인데도… TextRPG 과제 진행 (한숨)
- 처음 보는 기능: 한글/영문 정렬 계산, 게임 데이터 저장
- 기능 구현: 상태/인벤토리/모험/상점/던전/휴식/저장까지 전반 구성
🎑 추석인데 TextRPG 과제 중
추석 때 놀 생각 가득했는데… 과제 보니까 한숨만 나왔습니다.
그래도 진짜 나만 뒤쳐질까봐 틈틈이 하나씩 풀어봤습니다.
풀만한 것도 있었고, 처음 보는 코드들도 꽤 많아서 생각보다 공부가 많이 됐습니다.
💡 새롭게 알게 된 것
1) 한글/영문 글자 정렬
평소 C언어 공부할 땐 %4d 같은 걸 쓰면 글자 정렬이 쉬웠는데, C#도 비슷한 게 있나 찾아보니 {text, 4} 같은 형식이 있더라고요.
근데 문제는… 한글은 영어랑 글자 폭이 달라서 정렬이 계속 이상하게 나왔습니다.
결국 따로 정렬/폭 계산용 Class를 만들어서 한글 포함 텍스트도 최대한 깔끔하게 보이도록 조절했습니다.
2) 텍스트 컬러 유틸(TextUtils)
화면에서 강조하고 싶은 텍스트가 있어서 노란색 출력용 함수도 만들었습니다.
예를 들어 TextUtils.Yellow("안녕하세요"); 이런 식으로 쓰면 노란 글씨로 출력되도록 구성했습니다.

3) 게임 데이터 저장
- 시작 시 저장 데이터가 없으면 “저장된 데이터가 없습니다” 출력
- 저장 데이터가 있으면 {플레이어 이름}, LV.{플레이어 레벨} 데이터 로드 완료 같은 메시지 출력
- 저장 파일은 bin → Debug → net8.0 경로에 저장됨 (삭제하면 다시 데이터 없음 상태로 시작)
🛠️ 일단 다 만든 기능들
1) 상태 보기 && 인벤토리
- 인벤토리 정렬에 힘을 많이 줘서, 장착 여부와 상관없이 글자가 최대한 깔끔하게 보이게 구성
- 공격 아이템은 동시에 1개만 장착 가능 (다른 공격 아이템 장착하려면 기존 장착 해제 필요)
- 방어 아이템도 동일하게 동시 장착 제한 적용
- 장착 시 플레이어 공격력/방어력 상승, 장착 해제 시 다시 원래 수치로 복구
2) 랜덤 모험 / 마을 순찰하기 / 훈련하기
- 플레이어 스태미나를 사용해서 보상을 얻는 기능
- 스태미나가 없으면 실행 불가
3) 상점
- 아이템 구매 / 판매 가능
- 이미 보유한 아이템이면 옆에 구매 완료 표시, 아니면 가격 표시
- 판매 시 가격의 85%만 획득
- 장착한 아이템을 판매하면 자동으로 장착이 해제되도록 처리
4) 던전(경험치/레벨) && 휴식하기
- 던전은 3종류
- 권장 방어력보다 플레이어 방어력이 낮으면 40% 확률로 실패 (실패 시 체력이 반갈죽)
- 성공 시 던전별 보상이 다르고, 권장 방어력과 내 방어력 차이에 따라 체력 감소량이 달라짐
- 플레이어 공격력이 높을수록 보너스 골드/경험치 추가 지급
- (추가 기능) HP가 0 이하가 되면 0으로 고정 + 던전 보상 획득 불가 + 골드 1000 감소
- HP가 0인 상태에서는 던전 전투 진행 불가
[레벨 기능] 레벨마다 요구되는 Exp가 다르고, 레벨업 시 그 레벨에 필요한 Exp만큼 차감되며 남은 Exp가 유지되도록 구현했습니다.
예) 1레벨 요구 Exp = 50 / 기존 Exp = 0 상태에서 Exp 80 획득 → Lv.2, Exp = 30
휴식하기
- 체력 +100 / 스태미나 +20 회복
- 최대 체력 = 100, 최대 스태미나 = 100이라 여러 번 써도 그 이상 회복되지 않음
- 휴식 1회당 500 골드 소비
5) 저장하기
- 플레이어 + 인벤토리 데이터를 저장
- 저장 데이터가 없으면 시작 시 “데이터 없음” 메시지 출력
- 저장 후 실행하면 “게임 로드 중…” 같은 메시지와 함께 화면 전환(연출) 후 로드
- 저장 파일은 bin → Debug → net8.0 경로에 존재
- 저장 파일 삭제 시 다시 데이터 없음 상태로 시작
📌 오늘의 회고
추석인데 과제라니… 진짜 한숨이 먼저 나왔습니다.
그래도 “쉬는 날이니까 쉬자” 했다가 나만 뒤쳐질까봐 결국 틈틈이 붙잡고 하게 되더라고요.
특히 한글/영문 정렬이 계속 깨지는 걸 해결하면서, “UI는 보기 좋게 만드는 게 진짜 어렵다”는 걸 다시 느꼈습니다.
그리고 저장 기능까지 직접 만들어보니, 이제야 게임이 “진짜 게임”처럼 굴러가는 느낌이 들어서 뿌듯했습니다. 허허
🔜 내일 할 일
- 정렬/출력 유틸 클래스 정리해서 재사용 가능하게 다듬기
- 저장/로드 로직 예외 처리 추가 (파일 없을 때, 데이터 깨졌을 때 등)
- 던전/상점/인벤토리 부분 코드 리팩토링 (중복 줄이기)
'내일배움캠프 본캠프' 카테고리의 다른 글
| [내일배움캠프 11일차 TIL] 깃허브 데스크탑 (0) | 2025.10.14 |
|---|---|
| [내일배움캠프 10일차 TIL] 자율 학습 (1) | 2025.10.13 |
| [내일배움캠프 9일차 TIL] 턴제 TextRPG (0) | 2025.10.02 |
| [내일배움캠프 8일차 TIL + 보너스] 블랙잭 게임 (0) | 2025.10.02 |
| [내일배움캠프 8일차 TIL] Snake Game (0) | 2025.10.01 |