更新三个按钮 修了一堆bug

This commit is contained in:
2025-05-27 19:53:17 +08:00
parent 8215cfa3ee
commit 94f09b8dd9
47 changed files with 10303 additions and 3085 deletions

175
Server/README_Refactored.md Normal file
View File

@@ -0,0 +1,175 @@
# TCPGameServer 重构说明
## 概述
原始的 `TCPGameServer.py` 文件有 1569 行代码,包含大量相似的函数和重复的逻辑。为了提高代码的可维护性和可读性,我们对其进行了重构,将相似功能的函数分组整理。
## 重构前后对比
### 重构前的问题
- 文件过大1569行
- 函数分散,相似功能没有分组
- 大量重复的验证逻辑
- 缺乏清晰的代码结构
- 难以维护和扩展
### 重构后的改进
- 代码行数减少到约 1200 行
- 按功能模块清晰分组
- 提取公共方法,减少重复代码
- 增加详细的文档注释
- 更好的代码组织结构
## 代码结构分组
### 1. 初始化和生命周期管理
```python
# ==================== 1. 初始化和生命周期管理 ====================
- __init__() # 初始化服务器
- start_crop_growth_timer() # 启动作物生长计时器
- stop() # 停止服务器
- _remove_client() # 移除客户端
```
### 2. 验证和检查方法
```python
# ==================== 2. 验证和检查方法 ====================
- _check_client_version() # 检查客户端版本
- _check_user_logged_in() # 检查用户登录状态
- _validate_qq_number() # 验证QQ号格式
```
### 3. 数据管理方法
```python
# ==================== 3. 数据管理方法 ====================
- load_player_data() # 加载玩家数据
- save_player_data() # 保存玩家数据
- _load_player_data_with_check() # 带检查的加载玩家数据
- _load_crop_data() # 加载作物配置数据
- _update_player_logout_time() # 更新玩家登出时间
```
### 4. 作物系统管理
```python
# ==================== 4. 作物系统管理 ====================
- update_crops_growth() # 更新作物生长状态
- _push_crop_update_to_player() # 推送作物更新给玩家
```
### 5. 消息处理路由
```python
# ==================== 5. 消息处理路由 ====================
- _handle_message() # 消息路由分发
```
### 6. 用户认证处理
```python
# ==================== 6. 用户认证处理 ====================
- _handle_greeting() # 处理问候消息
- _handle_login() # 处理登录
- _handle_register() # 处理注册
- _handle_verification_code_request() # 处理验证码请求
- _handle_verify_code() # 处理验证码验证
```
### 7. 游戏操作处理
```python
# ==================== 7. 游戏操作处理 ====================
- _handle_harvest_crop() # 处理收获作物
- _handle_plant_crop() # 处理种植作物
- _handle_buy_seed() # 处理购买种子
- _handle_dig_ground() # 处理开垦土地
```
### 8. 系统功能处理
```python
# ==================== 8. 系统功能处理 ====================
- _handle_get_play_time() # 获取游玩时间
- _handle_update_play_time() # 更新游玩时间
- _handle_player_rankings_request() # 获取玩家排行榜
- _handle_crop_data_request() # 获取作物数据
- _handle_visit_player_request() # 访问其他玩家农场
- _handle_return_my_farm_request() # 返回自己农场
```
### 9. 辅助方法
```python
# ==================== 辅助方法 ====================
- _send_initial_login_data() # 发送登录初始数据
- _send_register_error() # 发送注册错误响应
- _send_action_error() # 发送游戏操作错误响应
- _create_new_user() # 创建新用户
- _process_harvest() # 处理作物收获逻辑
- _process_planting() # 处理作物种植逻辑
- _process_seed_purchase() # 处理种子购买逻辑
- _process_digging() # 处理土地开垦逻辑
```
## 主要改进点
### 1. 代码复用
- 提取了公共的验证逻辑(如 `_check_user_logged_in``_check_client_version`
- 统一了错误处理方式(如 `_send_action_error``_send_register_error`
- 将复杂的业务逻辑提取为独立方法(如 `_process_harvest``_process_planting`
### 2. 清晰的分组
- 按功能将方法分为8个主要组别
- 每个组别有明确的职责边界
- 便于查找和维护特定功能
### 3. 统一的导入
- 将所有导入语句集中在文件顶部
- 按标准库、第三方库、本地模块的顺序组织
### 4. 改进的文档
- 为每个方法组添加了清晰的注释
- 为主要方法添加了详细的文档字符串
- 在类的开头添加了功能概述
### 5. 错误处理优化
- 统一了错误响应格式
- 提取了公共的错误处理逻辑
- 减少了重复的错误处理代码
## 使用方法
重构后的代码与原代码功能完全相同,使用方法不变:
```python
# 启动服务器
python TCPGameServer_Refactored.py
```
## 迁移指南
如果要从原始版本迁移到重构版本:
1. 备份原始的 `TCPGameServer.py` 文件
2.`TCPGameServer_Refactored.py` 重命名为 `TCPGameServer.py`
3. 确保所有依赖文件(如 `TCPServer.py``QQEmailSend.py`)仍然存在
4. 测试所有功能是否正常工作
## 维护建议
1. **添加新功能时**:按照现有的分组结构,将新方法添加到相应的组别中
2. **修改现有功能时**:优先考虑是否可以复用现有的辅助方法
3. **错误处理**:使用统一的错误处理方法,保持响应格式一致
4. **文档更新**:添加新功能时,记得更新相应的文档注释
## 性能影响
重构主要关注代码结构和可维护性,对运行时性能的影响微乎其微:
- 方法调用层次略有增加,但影响可忽略
- 代码逻辑保持不变,算法复杂度相同
- 内存使用基本相同
## 总结
通过这次重构,我们成功地:
- 减少了代码重复
- 提高了代码可读性
- 改善了代码组织结构
- 便于后续维护和扩展
- 保持了原有功能的完整性
重构后的代码更加专业和易于维护,为后续的功能扩展奠定了良好的基础。