Skip to content

CLI 기반 RPG 게임 구현_김락현#1

Open
Rakhyunn wants to merge 25 commits into
ktk33762:mainfrom
Rakhyunn:main
Open

CLI 기반 RPG 게임 구현_김락현#1
Rakhyunn wants to merge 25 commits into
ktk33762:mainfrom
Rakhyunn:main

Conversation

@Rakhyunn
Copy link
Copy Markdown

@Rakhyunn Rakhyunn commented Apr 16, 2026

📁 파일 구조

📦 src
 ┣ 📂 main
 ┃ ┗ 📂 java
 ┃   ┗ 📂 com
 ┃     ┣ 📂 controller             // UI 출력 및 사용자 흐름 제어 계층
 ┃     ┃ ┣ 📜 BattleController.java
 ┃     ┃ ┣ 📜 SystemController.java
 ┃     ┃ ┗ 📜 TownController.java
 ┃     ┃
 ┃     ┣ 📂 domain                 // 데이터 모델 및 엔티티 계층
 ┃     ┃ ┣ 📂 monster
 ┃     ┃ ┃ ┣ 📜 Goblin.java
 ┃     ┃ ┃ ┣ 📜 Monster.java
 ┃     ┃ ┃ ┗ 📜 Slime.java
 ┃     ┃ ┣ 📂 user
 ┃     ┃ ┃ ┣ 📜 BaseCharacter.java
 ┃     ┃ ┃ ┣ 📜 BaseUser.java
 ┃     ┃ ┃ ┣ 📜 Mage.java
 ┃     ┃ ┃ ┗ 📜 Warrior.java
 ┃     ┃ ┗ 📜 BaseInterface.java   // 도메인 공통 인터페이스
 ┃     ┃
 ┃     ┣ 📂 global                 // 전역 유틸리티 및 공통 클래스
 ┃     ┃ ┗ 📜 Rq.java              // CLI 입력 처리
 ┃     ┃
 ┃     ┣ 📂 service                // 핵심 비즈니스 로직 계층
 ┃     ┃ ┣ 📜 BattleService.java   // 전투 결과 계산 및 처리
 ┃     ┃ ┗ 📜 UserService.java     // 캐릭터 생성 및 사망 페널티 로직
 ┃     ┃
 ┃     ┣ 📂 sound                  // 오디오 재생 및 관리
 ┃     ┃ ┣ 📜 SoundFade.java
 ┃     ┃ ┣ 📜 SoundManager.java
 ┃     ┃ ┗ 📜 SoundType.java
 ┃     ┃
 ┃     ┣ 📜 App.java               // 애플리케이션 초기화 및 메인 루프
 ┃     ┣ 📜 AppContext.java  // 전역 상태 관리
 ┃     ┗ 📜 Main.java             // 프로그램 진입점 (Entry Point)
 ┃
 ┗ 📂 test
   ┗ 📂 java
     ┗ 📂 com
       ┣ 📂 service
       ┃ ┗ 📜 UserServiceTest.java // UserService 테스트 코드
       ┣ 📜 AppTest.java           // 게임 전체 흐름 테스트
       ┗ 📜 AppTestRunner.java     // 테스트용 콘솔 입출력 제어 러너

✅ 주요 구현

  1. Interface 및 상속 활용
  • 데미지 받는 메서드를 인터페이스로 만들어 사용하였습니다.
  • 몬스터와 캐릭터의 공통 변수와 메서드(HP, 공격력 등)를 묶어 상위 클래스를 만들어 코드 중복을 줄였습니다.
  • 추후 새로운 직업이나 몬스터가 추가되더라도 기존 코드를 수정하지 않고 확장에 열려있는(OCP) 구조를 설계했습니다.
  1. Rq 및 AppContext 전역 관리
  • Rq를 구현하여 입력을 받는 로직을 분리하였습니다.
  • AppContext를 구현하여 전역적으로 자주 사용하는 객체를 사용할 수 있도록 하였습니다.
  1. Controller, Service 도입
  • App에서 모든 것을 구현하는 것이 아니라 각 컨트롤러를 구현하여 관련된 입출력 등을 처리하였습니다.
  • Service를 구현하여 유저의 생성, 레벨업이나 전투의 공격이나 경험치 부여 로직을 분리하여 비즈니스 로직을 처리하였습니다.
  1. TDD
  • 리팩토링으로 구조를 변경하면서도 기존의 AppTest 시나리오가 모두 통과하도록 유지했습니다.
  • 로직을 분리한 덕분에 UserServiceTest처럼 출력문에 의존하지 않는 순수한 단위 테스트 작성이 가능해졌습니다.

🎮 플레이영상

  • 소리 키면 조금 더 재밌습니다!
_.mp4

🤔 참고 사항

사운드 관련

  • 사운드 로직은 처음 넣어봐서 대부분 AI를 활용하여 구현하면서 저도 배웠으며 주석을 최대한 달아두었습니다.

테스트 관련

  • 만약 클론 후 테스트 코드를 실행하면 사운드 재생 때문에 테스트가 조금 오래 걸릴 수 있습니다.
  • 소리 관련 로직을 주석처리 하거나 테스트 돌리고 조금 다른 거 보다가 오면 됩니다. 😅 (추후 테스트에서 사운드를 배제하도록 구현해보겠습니다...)

전체 코드 관련

  • 수업 시간에 배운 CSR(Controller-Service-Repository) 패턴이나 Rq 등을 활용하려고 노력했지만 아직 부족한 점이 많을 것 같습니다. 보시고 개선 사항 보이시면 편하게 피드백 해주세요!
  • 주석을 크게 달지 않았는데 메서드나 어떤 로직 동작하는 것이 궁금하면 말해주세요. 정리해서 답변 해드리겠습니다!

@Rakhyunn Rakhyunn changed the title CLI 기반 RPG 게임 구현 CLI 기반 RPG 게임 구현_김락현 Apr 17, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant