Spaces:
Sleeping
Sleeping
File size: 7,445 Bytes
b7d75f3 | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 | # 로컬 TRPG 메이커 프로젝트 구조
이제까지 작성된 코드를 기반으로 전체 프로젝트의 구조를 정리하겠습니다. 각 파일과 함수들의 관계와 역할을 체계적으로 설명하겠습니다.
## 프로젝트 폴더 구조
```
📂 src/
├── config/ # 환경 설정
│ ├── constants.py # 상수 정의
│ └── styles.py # UI 스타일 정의
├── modules/ # 기능 모듈
│ ├── ai_service.py # AI 서비스 연동
│ ├── character_creation.py # 캐릭터 생성 기능
│ ├── character_utils.py # 캐릭터 관련 유틸리티
│ ├── game_play.py # 게임 플레이 기능
│ ├── item_manager.py # 아이템 관리 기능
│ └── world_description.py # 세계관 설명 기능
├── utils/ # 유틸리티 함수
│ ├── dice_roller.py # 주사위 굴림 기능
│ ├── location_manager.py # 위치 관리 기능
│ ├── session_manager.py # 세션 상태 관리
│ └── theme_manager.py # 테마 관리 기능
└── main.py # 메인 애플리케이션
```
## 파일별 주요 기능
### main.py
- 애플리케이션의 진입점
- 전체 UI 레이아웃 구성 및 단계 흐름 제어
- 세션 상태 초기화 및 관리
- 현재 단계(stage)에 따른 UI 표시 로직
### config/constants.py
- 애플리케이션 전반에서 사용되는 상수 정의
- 통합된 상수 관리로 일관성 유지
- 주요 상수: 스텟 이름, 테마 유형, AI 서비스 설정 등
### config/styles.py
- UI 스타일 관련 CSS 정의
- 일관된 디자인 시스템 유지
- 주요 스타일: 카드, 버튼, 패널, 알림 등의 스타일 정의
### modules/ai_service.py
- AI 서비스 연동 기능
- 주요 함수:
- `setup_gemini()`: AI 모델 초기화
- `generate_gemini_text()`: AI 모델로 텍스트 생성
- `generate_world_description()`: 세계관 생성
- `generate_character_options()`: 캐릭터 배경 옵션 생성
- `generate_story_response()`: 주사위 결과에 따른 스토리 생성
- `get_ability_suggestion()`: 행동에 적합한 능력치 제안
- `master_answer_game_question()`: 마스터 질문 응답 생성
### modules/character_creation.py
- 캐릭터 생성 관련 기능
- 주요 함수:
- `initialize_character_creation_state()`: 캐릭터 생성 상태 초기화
- `display_character_creation_page()`: 캐릭터 생성 페이지 표시
- `display_race_selection()`: 종족 선택 UI 표시
- `display_profession_selection()`: 직업 선택 UI 표시
- `display_background_selection()`: 배경 선택 UI 표시
- `display_abilities_selection()`: 능력치 설정 UI 표시
- `ability_roll_section()`: 주사위 굴림 기반 능력치 생성
- `base_abilities_section()`: 기본 능력치 설정
- `display_character_review()`: 캐릭터 최종 확인
### modules/character_utils.py
- 캐릭터 관련 유틸리티 함수
- 주요 함수:
- `generate_races()`: 테마별 종족 목록 생성
- `generate_professions()`: 테마별 직업 목록 생성
- `extract_background_tags()`: 배경 스토리에서 태그 추출
- `get_stat_info()`: 능력치 정보 및 시각적 표현 제공
- `generate_special_trait()`: 캐릭터 특별 특성 생성
### modules/game_play.py
- 게임 플레이 핵심 기능
- 주요 함수:
- `initialize_game_state()`: 게임 상태 초기화
- `display_game_play_page()`: 게임 플레이 페이지 표시
- `display_character_panel()`: 캐릭터 정보 패널 표시
- `display_story_and_actions()`: 스토리 및 행동 UI 표시
- `handle_action_phase()`: 행동 단계 관리
- `handle_movement()`: 위치 이동 처리
- `handle_ability_check()`: 능력치 판정 처리
- `handle_action_suggestions()`: 행동 제안 관리
- `handle_story_progression()`: 스토리 진행 처리
- `display_game_tools()`: 게임 도구 패널 표시
- `display_master_question_ui()`: 마스터 질문 UI 표시
### modules/item_manager.py
- 아이템 관리 기능
- 주요 함수 및 클래스:
- `Item` 클래스: 아이템 데이터 및 메서드 정의
- `initialize_inventory()`: 테마별 기본 인벤토리 초기화
- `display_inventory()`: 인벤토리 아이템 표시
- `display_inventory_for_review()`: 캐릭터 검토용 인벤토리 표시
- `extract_items_from_story()`: 스토리에서 아이템 추출
- `extract_used_items_from_story()`: 사용된 아이템 추출
- `update_inventory()`: 인벤토리 아이템 추가/제거/사용
### modules/world_description.py
- 세계관 설명 관련 기능
- 주요 함수:
- `world_description_page()`: 세계관 설명 페이지 표시
- `process_question()`: 세계관 질문 처리
- `handle_world_expansion()`: 세계관 확장 처리
### utils/dice_roller.py
- 주사위 관련 유틸리티
- 주요 함수:
- `roll_dice()`: 기본 주사위 굴림
- `calculate_dice_result()`: 주사위 표현식 계산
- `display_dice_animation()`: 주사위 굴림 애니메이션
### utils/location_manager.py
- 위치 관련 유틸리티
- 주요 함수:
- `generate_locations()`: 테마별 위치 생성
- `generate_movement_story()`: 이동 스토리 생성
- `get_location_image()`: 위치 이미지 생성
### utils/session_manager.py
- 세션 상태 관리 유틸리티
- 주요 함수:
- `reset_game_session()`: 게임 세션 초기화
- `initialize_session_state()`: 세션 상태 초기화
### utils/theme_manager.py
- 테마 관련 유틸리티
- 주요 함수:
- `create_theme_image()`: 테마별 이미지 생성
- `get_theme_description()`: 테마 설명 제공
## 주요 기능 흐름
1. **초기화 및 메인 UI**: `main.py`에서 시작하여 각 모듈 초기화
2. **테마 선택**: 사용자가 테마 선택 → `theme_manager.py`의 함수 활용
3. **세계관 생성**: `ai_service.py`를 통해 세계관 생성
4. **세계관 탐색**: `world_description.py`를 통해 세계관 확장 및 질문 처리
5. **캐릭터 생성**: `character_creation.py`의 단계별 함수를 통해 캐릭터 생성
6. **게임 플레이**: `game_play.py`를 통해 스토리 진행, 행동 처리, 능력치 판정 등
## 개선된 설계 특징
1. **모듈화**: 기능별로 명확히 분리된 모듈로 유지보수성 향상
2. **단일 책임 원칙**: 각 모듈과 함수가 명확한 하나의 책임을 가짐
3. **상태 관리**: 세션 상태를 효율적으로 관리하여 일관된 사용자 경험 제공
4. **UI/비즈니스 로직 분리**: 표시 로직과 비즈니스 로직을 분리
5. **확장성**: 새로운 기능, 테마, 아이템 등을 쉽게 추가할 수 있는 구조
6. **재사용성**: 공통 유틸리티 함수를 통해 코드 중복 제거
이 구조는 기존의 단일 파일 애플리케이션(app.py)에 비해 훨씬 더 체계적이고 유지보수하기 쉬운 코드베이스를 제공합니다. 각 모듈은 독립적으로 테스트하고 개발할 수 있으며, 전체 시스템의 복잡성을 관리하기 쉽게 합니다. |