- ✅ 직업 선택 (전사 / 마법사 / 궁수 / 도적 / 해적)
- ✅ 고유 스킬 사용 및 MP 소모
- ✅ 전투 시스템 (일반 공격, 스킬 공격)
- ✅ 던전 난이도 선택 및 실패 확률
- ✅ 레벨업 및 능력치 성장
- ✅ 상점에서 아이템 구매/판매
- ✅ 인벤토리 및 장착 시스템
- ✅ 퀘스트 수락 및 완료
- ✅ 게임 저장 및 불러오기 (다중 슬롯)
| 분류 | 내용 |
|---|---|
| 언어 | C# (.NET Console App) |
| 패턴 | OOP (상속, 다형성, 인터페이스) |
| 자료구조 | List, Dictionary, LINQ |
| 구조화 | 클래스 분리, 모듈화, 책임 분산 |
- Visual Studio로
TextRPG.sln열기 Program.cs실행 (또는 Ctrl + F5)- 콘솔에서 지시에 따라 플레이 진행
🚀 TroubleShooting 1️⃣ 직업 클래스 분리의 한계와 구조 개선
-
초기 설계에서는 직업마다 클래스를 따로 정의하여 능력치와 스킬을 관리했습니다.
-
하지만 이 방식은 클래스 간 중복 코드가 많아지고,
-
새로운 직업이 추가될 때마다 클래스를 새로 생성해야 하는 단점이 있었습니다.
-
구조 개선을 통해 직업 정보를 문자열 필드로 전환하고,
-
스킬은 SkillSet 인터페이스 기반으로 관리하도록 변경했습니다.
-
그 결과 확장성과 유지보수성이 크게 향상되었습니다.
2️⃣ 퀘스트 클래스 세분화
-
초기에는 단일 Quest 클래스가 모든 퀘스트 데이터를 관리했습니다.
-
이로 인해 조건 검사, 보상 처리, UI 출력 등 다양한 책임이 한 클래스에 집중되어 있었습니다.
-
퀘스트의 양이 많아질수록 관리가 어려워졌고,
-
코드 중복과 가독성 저하 문제도 발생했습니다.
-
이를 해결하기 위해 Quest, QuestUI, QuestManager로 클래스를 분리하여
-
각 역할에 맞게 책임을 나누었고, 구조가 명확해지며 유지보수성이 향상되었습니다.
3️⃣ 재귀 호출: 상태 기반 전투 흐름의 구조적 개선
-
기존 전투 흐름은 MainUI → EncounterUI → Result → MainUI 구조에서
-
각 메서드가 서로를 재귀적으로 호출하는 방식이었습니다.
-
이 방식은 반복 전투 시 스택이 계속 쌓이는 문제를 유발했고,
-
장시간 플레이 시 성능 저하나 스택 오버플로우 위험이 있었습니다.
-
이를 해결하기 위해 BattleState enum과 while-switch 구조를 도입하여
-
전투 상태를 명확히 구분하고, 반복 호출 없이 안전하게 흐름을 유지할 수 있도록 개선했습니다.
4️⃣ 전투 체력 추적 구조 개선: a = b, b = c, c = a
-
전투 중 HP 변화가 콘솔에 명확히 출력되지 않거나,
-
결과 화면에서 직관적으로 보이지 않는 문제가 있었습니다.
-
이는 체력 값을 하나의 변수로만 관리하면서,
-
전/중/후 상태를 명확히 구분하지 않았기 때문입니다.
-
이에 따라 체력을 a = b, b = c, c = a 구조로 나눠
-
전투 전/중/후 상태를 각각 추적할 수 있도록 개선하였습니다.
-
결과적으로 체력 변화가 명확하게 시각화되었고,
-
전투 흐름 이해도도 높아졌습니다.
5️⃣ 아이템 효과 구조의 한계
-
기존에는 장비 클래스 내에서 아이템 효과를 개별 변수로 선언해 관리했습니다.
-
이 방식은 새로운 효과가 생길 때마다 변수를 추가해야 했고,
-
하나의 아이템이 여러 효과를 가지는 데 어려움이 있었습니다.
-
이 문제를 해결하기 위해 배열 기반 구조로 설계를 변경하고,
-
부모 클래스인 Item이 효과 타입과 값을 배열로 관리하도록 리팩토링했습니다.
-
이를 통해 하나의 아이템에 복수 효과를 적용할 수 있게 되었고,
-
아이템 시스템의 확장성과 일관성 또한 개선되었습니다.










