项目初始化
This commit is contained in:
commit
141fd6252f
42
.cursorrules
Normal file
42
.cursorrules
Normal file
@ -0,0 +1,42 @@
|
||||
# Role
|
||||
你是一名精通Python的高级工程师,拥有20年的软件开发经验。你的任务是帮助一位不太懂技术的初中生用户完成Python项目的开发。你的工作对用户来说非常重要,完成后将获得10000美元奖励。
|
||||
|
||||
# Goal
|
||||
你的目标是以用户容易理解的方式帮助他们完成Python项目的设计和开发工作。你应该主动完成所有工作,而不是等待用户多次推动你。
|
||||
|
||||
在理解用户需求、编写代码和解决问题时,你应始终遵循以下原则:
|
||||
|
||||
## 第一步:项目初始化
|
||||
- 当用户提出任何需求时,首先浏览项目根目录下的README.md文件和所有代码文档,理解项目目标、架构和实现方式。
|
||||
- 如果还没有README文件,创建一个。这个文件将作为项目功能的说明书和你对项目内容的规划。
|
||||
- 在README.md中清晰描述所有功能的用途、使用方法、参数说明和返回值说明,确保用户可以轻松理解和使用这些功能。
|
||||
|
||||
## 第二步:需求分析和开发
|
||||
### 理解用户需求时:
|
||||
- 充分理解用户需求,站在用户角度思考。
|
||||
- 作为产品经理,分析需求是否存在缺漏,与用户讨论并完善需求。
|
||||
- 选择最简单的解决方案来满足用户需求。
|
||||
|
||||
### 编写代码时:
|
||||
- 遵循PEP 8 Python代码风格指南。
|
||||
- 使用最新的Python 3语法特性和最佳实践。
|
||||
- 合理使用面向对象编程(OOP)和函数式编程范式。
|
||||
- 利用Python的标准库和生态系统中的优质第三方库。
|
||||
- 实现模块化设计,确保代码的可重用性和可维护性。
|
||||
- 使用类型提示(Type Hints)进行类型检查,提高代码质量。
|
||||
- 编写详细的文档字符串(docstring)和注释。
|
||||
- 实现适当的错误处理和日志记录。
|
||||
- 编写单元测试确保代码质量。
|
||||
|
||||
### 解决问题时:
|
||||
- 全面阅读相关代码文件,理解所有代码的功能和逻辑。
|
||||
- 分析导致错误的原因,提出解决问题的思路。
|
||||
- 与用户进行多次交互,根据反馈调整解决方案。
|
||||
|
||||
## 第三步:项目总结和优化
|
||||
- 完成任务后,反思完成步骤,思考项目可能存在的问题和改进方式。
|
||||
- 更新README.md文件,包括新增功能说明和优化建议。
|
||||
- 考虑使用Python的高级特性,如异步编程、并发处理等来优化性能。
|
||||
- 优化代码性能,包括算法复杂度、内存使用和执行效率。
|
||||
|
||||
在整个过程中,始终参考[Python官方文档](https://docs.python.org/),确保使用最新的Python开发最佳实践。
|
360
README.txt
Normal file
360
README.txt
Normal file
@ -0,0 +1,360 @@
|
||||
# 项目名称:云顶之弈阵容推荐器
|
||||
|
||||
## 概述
|
||||
|
||||
本项目旨在基于 Riot 官方提供的云顶之弈数据(包括职业、特质、棋子信息)实现自动化的阵容推荐。通过一系列可配置的评分机制,项目能够输出一套最优的阵容组合。本 README 将详细介绍项目功能、模块设计、开发环境、使用方法及开发要点,方便后续的代码实现与维护。
|
||||
|
||||
---
|
||||
|
||||
## 目标功能
|
||||
|
||||
1. **数据提供模块**
|
||||
|
||||
* 从本地或在线接口获取最新的「职业(job)」「特质(race)」「棋子(chess)」数据。
|
||||
* 提供统一的查询接口:
|
||||
|
||||
* 获取指定羁绊(职业/特质)的所有可用棋子
|
||||
* 获取某个棋子的所有羁绊
|
||||
* 获取所有羁绊列表
|
||||
* 获取某个棋子的详细信息
|
||||
* 获取某个羁绊的详细信息
|
||||
* 支持缓存与数据更新,确保系统在多次查询时有较快的响应速度。
|
||||
2. **阵容推荐模块**
|
||||
|
||||
* 根据指定的阵容需求(人口数量、必须包含的羁绊/棋子等)自动生成当前版本云顶之弈中合理的阵容。
|
||||
* 兼容多羁绊、多棋子等多种复杂输入,生成符合要求的多个可行阵容。
|
||||
* 将所有候选阵容进行分数计算并择优返回最高得分阵容。
|
||||
3. **阵容评分模块**
|
||||
|
||||
* 提供评分系统,对阵容进行综合打分:
|
||||
|
||||
* 考虑羁绊数量及羁绊等级(如:2重装、4重装、6重装等触发效果)。
|
||||
* 考虑棋子的费用、属性强度、技能等基础输出或耐久能力。
|
||||
* 提供默认评分权重(例如羁绊优先度、棋子星级、费用等),并允许自定义权重配置(通过配置文件覆盖默认值)。
|
||||
* 保证评分算法可扩展性,后续可集成更复杂的策略或外部数据(如胜率、大数据统计等)。
|
||||
4. **接口模块**
|
||||
|
||||
* 提供外部可调用的API,接收下列可能的输入条件:
|
||||
|
||||
* 指定人口(如 8 人口或 9 人口阵容)。
|
||||
* 指定必须包含的羁绊(一个或多个)。
|
||||
* 指定必须包含的棋子(一个或多个)。
|
||||
* 其它自定义约束条件(如费用上限、指定主C等)。
|
||||
* 调用数据提供模块和阵容推荐模块完成计算后,将结果(最佳阵容或多套可行阵容)返回给调用方。
|
||||
|
||||
---
|
||||
|
||||
## 环境和依赖
|
||||
|
||||
* **开发语言:** Python 3.8 或更高版本
|
||||
* **主要依赖库(示例):**
|
||||
|
||||
* `requests`:在线获取官方数据
|
||||
* `pandas`:数据处理库,用于数据筛选、分析等
|
||||
* `pyyaml`:配置文件解析库,用于加载自定义权重配置
|
||||
* 其他依赖请根据实际需求添加
|
||||
|
||||
安装依赖示例:
|
||||
|
||||
```bash
|
||||
pip install -r requirements.txt
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## 项目结构
|
||||
|
||||
下面是建议的项目目录结构,供参考和进一步修改:
|
||||
|
||||
```
|
||||
.
|
||||
├── data/
|
||||
│ ├── job.json # 职业数据(从官方api获取后存放本地)
|
||||
│ ├── race.json # 特质数据
|
||||
│ └── chess.json # 棋子数据
|
||||
├── config/
|
||||
│ └── score_config.yaml # (可选)自定义评分权重配置文件
|
||||
├── src/
|
||||
│ ├── data_provider/
|
||||
│ │ ├── data_loader.py # 从本地或在线获取数据的逻辑
|
||||
│ │ └── data_query_api.py # 提供对外的数据查询API
|
||||
│ ├── recommendation/
|
||||
│ │ └── composition_recommender.py # 阵容推荐模块核心逻辑
|
||||
│ ├── scoring/
|
||||
│ │ └── score_calculator.py # 阵容评分模块
|
||||
│ └── interface/
|
||||
│ └── api.py # 对外接口模块
|
||||
├── tests/
|
||||
│ ├── test_data_provider.py
|
||||
│ ├── test_recommendation.py
|
||||
│ ├── test_scoring.py
|
||||
│ └── test_api.py
|
||||
├── README.md
|
||||
└── requirements.txt
|
||||
```
|
||||
|
||||
各模块功能说明:
|
||||
|
||||
1. **`data_loader.py`**
|
||||
|
||||
* 负责从本地文件或在线接口获取最新的 job/race/chess 数据。
|
||||
* 每次启动时更新数据。
|
||||
* 在线接口:
|
||||
|
||||
* `'chess': 'https://game.gtimg.cn/images/lol/act/img/tft/js/chess.js'`
|
||||
* `'job': 'https://game.gtimg.cn/images/lol/act/img/tft/js/job.js'`
|
||||
* `'race': 'https://game.gtimg.cn/images/lol/act/img/tft/js/race.js'`
|
||||
2. **`data_query_api.py`**
|
||||
|
||||
* 读取 `data_loader` 载入的数据并对外提供查询功能:
|
||||
|
||||
* 获取指定羁绊下的所有棋子
|
||||
* 获取棋子的所有羁绊
|
||||
* 获取某个羁绊/棋子的详细信息
|
||||
* 其它辅助查询方法。
|
||||
3. **`composition_recommender.py`**
|
||||
|
||||
* 接收需求参数(如人口、羁绊、棋子)进行阵容搜索与组合。
|
||||
* 生成所有可能的组合后,调用 **评分模块** 对组合评分。
|
||||
* 推荐评分最高的一套或多套阵容输出。
|
||||
* 推荐逻辑可参考:
|
||||
|
||||
* *基于羁绊的优先级:* 每当阵容中某一羁绊人数接近下一等级阈值时,可优先考虑补充同羁绊棋子。
|
||||
* *基于棋子价值:* 根据棋子费用、技能强度等优先选择高价值棋子,但要平衡费用和羁绊需求。
|
||||
4. **`score_calculator.py`**
|
||||
|
||||
* 根据提供的评分配置(默认或自定义)对给定阵容进行评分:
|
||||
|
||||
* *羁绊评分:* 如 2重装、4重装、6重装等带来的收益加分。
|
||||
* *棋子评分:* 根据费用、技能伤害、攻防属性等进行综合评估。
|
||||
* *人口/星级加成:* 如果同一个棋子假设有星级等维度,也可作为额外加分点。
|
||||
* 如果有 `score_config.yaml`,则读取自定义权重覆盖默认值。
|
||||
* 返回阵容总得分,供推荐模块最终排序使用。
|
||||
5. **`api.py`**
|
||||
|
||||
* 提供对外可调用的API函数或 RESTful 接口:
|
||||
|
||||
* 接口示例:
|
||||
|
||||
```python
|
||||
def get_recommended_composition( population=8, required_syns=None, # 必须包含的羁绊 required_champs=None, # 必须包含的棋子 score_config_path=None): """ 外部可调用的主要函数: 1. 从 data_query_api 获取基础数据 2. 调用 composition_recommender 生成所有可行阵容 3. 调用 score_calculator 对阵容评分 4. 返回最优阵容 """ ...
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## 使用说明
|
||||
|
||||
1. **获取数据**
|
||||
|
||||
* 每次启动时,从官方接口获取数据,存放在内存缓存或本地文件中
|
||||
* 若数据获取失败,应用退出
|
||||
* 数据格式:
|
||||
|
||||
* job:
|
||||
|
||||
* ```json
|
||||
{
|
||||
"version": "15.7",
|
||||
"season": "2025.S14",
|
||||
"modeId": "1",
|
||||
"time": "2025-04-01 14:31:07",
|
||||
"data": [
|
||||
{
|
||||
"jobId": "10155",
|
||||
"name": "超频战士",
|
||||
"traitId": "10155",
|
||||
"introduce": "【超频战士】们可以通过该羁绊专有的【超频】属性来给他们的技能提供独特增强。",
|
||||
"alias": "10155.png",
|
||||
"level": {
|
||||
"2": "+1 【超频】属性, 100 生命值",
|
||||
"3": "+2 【超频】属性, 200 生命值",
|
||||
"4": "+3 【超频】属性, 350 生命值",
|
||||
"5": "+4 【超频】属性, 500 生命值"
|
||||
},
|
||||
"TFTID": "10155",
|
||||
"characterid": "TFT14_Supercharge",
|
||||
"id": "2623",
|
||||
"imagePath": "https://game.gtimg.cn/images/lol/act/img/tft/classes/10155.png",
|
||||
"job_color_list": "2:1,3:2,4:3,5:3"
|
||||
},
|
||||
{
|
||||
"jobId": "10157",
|
||||
"name": "重装战士",
|
||||
"traitId": "10157",
|
||||
"introduce": "【重装战士】们在有护盾时获得10%伤害减免。\r\n战斗开始时和50%生命值时:获得一部分最大生命值的护盾值,持续10秒。",
|
||||
"alias": "10157.png",
|
||||
"level": {
|
||||
"2": "16%最大生命值",
|
||||
"4": "32%最大生命值",
|
||||
"6": "40%最大生命值;在有护盾时获得16% 伤害减免"
|
||||
},
|
||||
"TFTID": "10157",
|
||||
"characterid": "TFT14_Vanguard",
|
||||
"id": "2624",
|
||||
"imagePath": "https://game.gtimg.cn/images/lol/act/img/tft/classes/10157.png",
|
||||
"job_color_list": "2:1,4:2,6:3"
|
||||
},
|
||||
|
||||
......
|
||||
```
|
||||
* chess:
|
||||
|
||||
* ```json
|
||||
{
|
||||
"version": "15.7",
|
||||
"season": "2025.S14",
|
||||
"modeId": "1",
|
||||
"time": "2025-04-01 14:31:07",
|
||||
"data": [
|
||||
{
|
||||
"raceId": "10153",
|
||||
"name": "圣灵使者",
|
||||
"traitId": "10153",
|
||||
"introduce": "【圣灵使者】弈子会为你的小队提供独特的属性,该加成会随着已登场的【圣灵使者】弈子数量而提升。\r\n【圣灵使者】弈子们获得双倍。",
|
||||
"alias": "10153.png",
|
||||
"level": {
|
||||
"1": "100% 加成。",
|
||||
"2": "110% 加成。",
|
||||
"3": "125% 加成。",
|
||||
"4": "140% 加成。",
|
||||
"5": "160% 加成。",
|
||||
"6": "180% 加成。",
|
||||
"7": "200% 加成。"
|
||||
},
|
||||
"TFTID": "10153",
|
||||
"characterid": "TFT14_Divinicorp",
|
||||
"id": "2727",
|
||||
"imagePath": "https://game.gtimg.cn/images/lol/act/img/tft/origins/10153.png",
|
||||
"race_color_list": "1:1,2:2,3:2,4:3,5:3,6:3,7:4"
|
||||
},
|
||||
{
|
||||
"raceId": "10154",
|
||||
"name": "街头恶魔",
|
||||
"traitId": "10154",
|
||||
"introduce": "在【彩绘格】中的友军将获得生命值、法术强度和攻击力。一些格子是【签名格】并多提供50%此加成。\r\n【街头恶魔】使所有此加成翻倍。",
|
||||
"alias": "10154.png",
|
||||
"level": {
|
||||
"3": "+6% 生命值,6 法术强度,6% 攻击力",
|
||||
"5": "+10% 生命值,10 法术强度,10% 攻击力",
|
||||
"7": "+6% 生命值,15 法术强度,15% 攻击力",
|
||||
"10": "+50% 生命值,50 法术强度,50% 攻击力,尽情绘画!"
|
||||
},
|
||||
"TFTID": "10154",
|
||||
"characterid": "TFT14_StreetDemon",
|
||||
"id": "2728",
|
||||
"imagePath": "https://game.gtimg.cn/images/lol/act/img/tft/origins/10154.png",
|
||||
"race_color_list": "3:1,5:2,7:3,10:4"
|
||||
},
|
||||
```
|
||||
* race:
|
||||
|
||||
* ```json
|
||||
{
|
||||
"version": "15.7",
|
||||
"season": "2025.S14",
|
||||
"modeId": "1",
|
||||
"time": "2025-04-01 14:31:07",
|
||||
"data": [
|
||||
{
|
||||
"raceId": "10153",
|
||||
"name": "圣灵使者",
|
||||
"traitId": "10153",
|
||||
"introduce": "【圣灵使者】弈子会为你的小队提供独特的属性,该加成会随着已登场的【圣灵使者】弈子数量而提升。\r\n【圣灵使者】弈子们获得双倍。",
|
||||
"alias": "10153.png",
|
||||
"level": {
|
||||
"1": "100% 加成。",
|
||||
"2": "110% 加成。",
|
||||
"3": "125% 加成。",
|
||||
"4": "140% 加成。",
|
||||
"5": "160% 加成。",
|
||||
"6": "180% 加成。",
|
||||
"7": "200% 加成。"
|
||||
},
|
||||
"TFTID": "10153",
|
||||
"characterid": "TFT14_Divinicorp",
|
||||
"id": "2727",
|
||||
"imagePath": "https://game.gtimg.cn/images/lol/act/img/tft/origins/10153.png",
|
||||
"race_color_list": "1:1,2:2,3:2,4:3,5:3,6:3,7:4"
|
||||
},
|
||||
{
|
||||
"raceId": "10154",
|
||||
"name": "街头恶魔",
|
||||
"traitId": "10154",
|
||||
"introduce": "在【彩绘格】中的友军将获得生命值、法术强度和攻击力。一些格子是【签名格】并多提供50%此加成。\r\n【街头恶魔】使所有此加成翻倍。",
|
||||
"alias": "10154.png",
|
||||
"level": {
|
||||
"3": "+6% 生命值,6 法术强度,6% 攻击力",
|
||||
"5": "+10% 生命值,10 法术强度,10% 攻击力",
|
||||
"7": "+6% 生命值,15 法术强度,15% 攻击力",
|
||||
"10": "+50% 生命值,50 法术强度,50% 攻击力,尽情绘画!"
|
||||
},
|
||||
"TFTID": "10154",
|
||||
"characterid": "TFT14_StreetDemon",
|
||||
"id": "2728",
|
||||
"imagePath": "https://game.gtimg.cn/images/lol/act/img/tft/origins/10154.png",
|
||||
"race_color_list": "3:1,5:2,7:3,10:4"
|
||||
},
|
||||
```
|
||||
2. **定制评分**
|
||||
|
||||
* 在 `config/score_config.yaml` 文件中写入自定义的评分权重,例如:
|
||||
|
||||
```yaml
|
||||
synergy_weight: base: 1.0 重装战士: 1.2 # 重装战士特殊加成 ...champion_weight: base_price_factor: 0.5 ...
|
||||
```
|
||||
* 也可直接在 `score_calculator.py` 模块中写死默认权重,不使用配置文件。
|
||||
3. **调用推荐接口**
|
||||
|
||||
* 在命令行 / 脚本中:
|
||||
|
||||
```python
|
||||
from src.interface.api import get_recommended_compositionbest_comp = get_recommended_composition( population=8, required_syns=['重装战士', '街头恶魔'], required_champs=['布兰德'], score_config_path='config/score_config.yaml')print(best_comp)
|
||||
```
|
||||
* 如果实现了网页接口或CLI,可直接通过相应方式进行调用。
|
||||
4. **扩展性**
|
||||
|
||||
* 通过新增或修改数据文件,可无缝整合新版本羁绊、棋子数据。
|
||||
* 评分系统可根据策略和经验进行不断迭代。
|
||||
|
||||
---
|
||||
|
||||
## 测试
|
||||
|
||||
* 建议使用 `pytest` 或 `unittest` 进行测试:
|
||||
|
||||
* `test_data_provider.py`:测试数据加载和查询的正确性。
|
||||
* `test_recommendation.py`:测试阵容推荐逻辑在各种输入条件下是否能正确生成可行阵容。
|
||||
* `test_scoring.py`:测试评分结果是否符合预期(含默认权重与自定义权重)。
|
||||
* `test_api.py`:测试对外接口的可用性和稳定性。
|
||||
|
||||
---
|
||||
|
||||
## 深度思考与注意事项
|
||||
|
||||
1. **数据版本与兼容性**
|
||||
|
||||
* 云顶之弈更新频繁,羁绊及棋子经常变动。为保证兼容性和可持续维护,需要在数据模块中预留多版本并行处理或自动更新的机制。
|
||||
* 可以在数据库或文件系统中记录不同版本的 json 数据,并通过接口指定使用哪个版本。
|
||||
2. **羁绊冲突与优先级**
|
||||
|
||||
* 部分羁绊可能存在冲突(如同时带来的属性相互覆盖)或并不兼容,需要在推荐阵容时自行过滤或降低评分。
|
||||
* 在评分系统中,应设定羁绊上限规则(如某些羁绊过量堆叠收益递减)。
|
||||
3. **棋子升星问题**
|
||||
|
||||
* 不考虑棋子升星问题
|
||||
4. **性能**
|
||||
|
||||
* 若人口和可选棋子规模较大,暴力穷举组合的时间开销可能很高,需要考虑使用回溯、剪枝、启发式算法、或动态规划方式加速推荐过程。
|
||||
5. **配置管理**
|
||||
|
||||
* 对于多种参数(如羁绊优先级、棋子费用优先级、特定羁绊的特殊加成等),建议使用统一配置文件管理,减少魔法值散落于代码。
|
||||
* 同时要注意不同格式(JSON/YAML/INI)的使用,保持一致性。
|
||||
|
||||
---
|
||||
|
||||
## 结语
|
||||
|
||||
此项目聚焦于云顶之弈的阵容搭配与推荐,核心思路是利用官方提供的职业(job)、特质(race)及棋子(chess)数据,通过一套灵活可扩展的评分系统,为特定版本提供自动化、高质量的阵容建议。
|
||||
如需进一步扩展,也可对接大数据平台,采集高分段玩家的对局数据,构建更准确的胜率模型和评分模型,从而不断优化 推荐器 的效果。
|
||||
|
||||
若有任何疑问或改进建议,欢迎在项目中提出 Issue 或 Pull Request,让我们一起将该项目做得更完善、易用、智能。祝各位在云顶之弈的旅程中诸神之巅!
|
199
requirement.md
Normal file
199
requirement.md
Normal file
@ -0,0 +1,199 @@
|
||||
我准备编写一个云顶之弈阵容推荐器,所有推荐都基于官方api接口获取的数据,数据包括三个文件:job、race、chess,分别代表职业、特质、棋子,数据内容如下(只截取部分):
|
||||
|
||||
job:
|
||||
|
||||
```json
|
||||
{
|
||||
"version": "15.7",
|
||||
"season": "2025.S14",
|
||||
"modeId": "1",
|
||||
"time": "2025-04-01 14:31:07",
|
||||
"data": [
|
||||
{
|
||||
"jobId": "10155",
|
||||
"name": "超频战士",
|
||||
"traitId": "10155",
|
||||
"introduce": "【超频战士】们可以通过该羁绊专有的【超频】属性来给他们的技能提供独特增强。",
|
||||
"alias": "10155.png",
|
||||
"level": {
|
||||
"2": "+1 【超频】属性, 100 生命值",
|
||||
"3": "+2 【超频】属性, 200 生命值",
|
||||
"4": "+3 【超频】属性, 350 生命值",
|
||||
"5": "+4 【超频】属性, 500 生命值"
|
||||
},
|
||||
"TFTID": "10155",
|
||||
"characterid": "TFT14_Supercharge",
|
||||
"id": "2623",
|
||||
"imagePath": "https://game.gtimg.cn/images/lol/act/img/tft/classes/10155.png",
|
||||
"job_color_list": "2:1,3:2,4:3,5:3"
|
||||
},
|
||||
{
|
||||
"jobId": "10157",
|
||||
"name": "重装战士",
|
||||
"traitId": "10157",
|
||||
"introduce": "【重装战士】们在有护盾时获得10%伤害减免。\r\n战斗开始时和50%生命值时:获得一部分最大生命值的护盾值,持续10秒。",
|
||||
"alias": "10157.png",
|
||||
"level": {
|
||||
"2": "16%最大生命值",
|
||||
"4": "32%最大生命值",
|
||||
"6": "40%最大生命值;在有护盾时获得16% 伤害减免"
|
||||
},
|
||||
"TFTID": "10157",
|
||||
"characterid": "TFT14_Vanguard",
|
||||
"id": "2624",
|
||||
"imagePath": "https://game.gtimg.cn/images/lol/act/img/tft/classes/10157.png",
|
||||
"job_color_list": "2:1,4:2,6:3"
|
||||
},
|
||||
|
||||
......
|
||||
```
|
||||
|
||||
|
||||
race:
|
||||
|
||||
```json
|
||||
{
|
||||
"version": "15.7",
|
||||
"season": "2025.S14",
|
||||
"modeId": "1",
|
||||
"time": "2025-04-01 14:31:07",
|
||||
"data": [
|
||||
{
|
||||
"raceId": "10153",
|
||||
"name": "圣灵使者",
|
||||
"traitId": "10153",
|
||||
"introduce": "【圣灵使者】弈子会为你的小队提供独特的属性,该加成会随着已登场的【圣灵使者】弈子数量而提升。\r\n【圣灵使者】弈子们获得双倍。",
|
||||
"alias": "10153.png",
|
||||
"level": {
|
||||
"1": "100% 加成。",
|
||||
"2": "110% 加成。",
|
||||
"3": "125% 加成。",
|
||||
"4": "140% 加成。",
|
||||
"5": "160% 加成。",
|
||||
"6": "180% 加成。",
|
||||
"7": "200% 加成。"
|
||||
},
|
||||
"TFTID": "10153",
|
||||
"characterid": "TFT14_Divinicorp",
|
||||
"id": "2727",
|
||||
"imagePath": "https://game.gtimg.cn/images/lol/act/img/tft/origins/10153.png",
|
||||
"race_color_list": "1:1,2:2,3:2,4:3,5:3,6:3,7:4"
|
||||
},
|
||||
{
|
||||
"raceId": "10154",
|
||||
"name": "街头恶魔",
|
||||
"traitId": "10154",
|
||||
"introduce": "在【彩绘格】中的友军将获得生命值、法术强度和攻击力。一些格子是【签名格】并多提供50%此加成。\r\n【街头恶魔】使所有此加成翻倍。",
|
||||
"alias": "10154.png",
|
||||
"level": {
|
||||
"3": "+6% 生命值,6 法术强度,6% 攻击力",
|
||||
"5": "+10% 生命值,10 法术强度,10% 攻击力",
|
||||
"7": "+6% 生命值,15 法术强度,15% 攻击力",
|
||||
"10": "+50% 生命值,50 法术强度,50% 攻击力,尽情绘画!"
|
||||
},
|
||||
"TFTID": "10154",
|
||||
"characterid": "TFT14_StreetDemon",
|
||||
"id": "2728",
|
||||
"imagePath": "https://game.gtimg.cn/images/lol/act/img/tft/origins/10154.png",
|
||||
"race_color_list": "3:1,5:2,7:3,10:4"
|
||||
},
|
||||
```
|
||||
|
||||
|
||||
chess:
|
||||
|
||||
```json
|
||||
{
|
||||
"version": "15.7",
|
||||
"season": "2025.S14",
|
||||
"modeId": "1",
|
||||
"time": "2025-04-01 14:31:08",
|
||||
"data": [
|
||||
{
|
||||
"chessId": "10274",
|
||||
"title": "",
|
||||
"name": "10274.png",
|
||||
"displayName": "魔像",
|
||||
"raceIds": "",
|
||||
"jobIds": "10178",
|
||||
"price": "0",
|
||||
"skillName": "魔像重击",
|
||||
"skillType": "主动",
|
||||
"skillImage": "https://game.gtimg.cn/images/lol/act/img/tft/champions/tft_bluegolem_spell.png",
|
||||
"skillIntroduce": "猛击当前目标,造成300/480/750 (AP)魔法伤害。",
|
||||
"skillDetail": "猛击当前目标,造成300/480/750 (AP)魔法伤害。",
|
||||
"life": "600",
|
||||
"magic": "100",
|
||||
"startMagic": "30",
|
||||
"armor": "40",
|
||||
"spellBlock": "40",
|
||||
"attackMag": "1.5",
|
||||
"attack": "55",
|
||||
"attackSpeed": "0.55",
|
||||
"attackRange": "1",
|
||||
"crit": "25",
|
||||
"originalImage": "https://game.gtimg.cn/images/lol/act/img/tft/original-image/tft_bluegolem_spell.png",
|
||||
"lifeMag": "1.8",
|
||||
"TFTID": "10274",
|
||||
"synergies": "",
|
||||
"illustrate": "",
|
||||
"recEquip": "",
|
||||
"proStatus": "",
|
||||
"hero_EN_name": "TFT_BlueGolem",
|
||||
"id": "11710",
|
||||
"races": "",
|
||||
"jobs": "召唤物",
|
||||
"attackData": "55/83/124",
|
||||
"lifeData": "600/1080/1944"
|
||||
},
|
||||
{
|
||||
"chessId": "10275",
|
||||
"title": "",
|
||||
"name": "10275.png",
|
||||
"displayName": "布兰德",
|
||||
"raceIds": "10154",
|
||||
"jobIds": "10172",
|
||||
"price": "4",
|
||||
"skillName": "颜料炸弹",
|
||||
"skillType": "主动",
|
||||
"skillImage": "https://game.gtimg.cn/images/lol/act/img/tft/champions/tft14_brandpyroclasm.tft_set14.png",
|
||||
"skillIntroduce": "向5格射程范围内敌人最密集的位置投掷一颗颜料炸弹,对1格内的敌人们造成260/390/1500 (AP)魔法伤害,并对相距最近的4名敌人造成100/150/600 (AP)魔法伤害。",
|
||||
"skillDetail": "向5格射程范围内敌人最密集的位置投掷一颗颜料炸弹,对1格内的敌人们造成260/390/1500 (AP)魔法伤害,并对相距最近的4名敌人造成100/150/600 (AP)魔法伤害。",
|
||||
"life": "800",
|
||||
"magic": "75",
|
||||
"startMagic": "25",
|
||||
"armor": "30",
|
||||
"spellBlock": "30",
|
||||
"attackMag": "1.5",
|
||||
"attack": "35",
|
||||
"attackSpeed": "0.75",
|
||||
"attackRange": "4",
|
||||
"crit": "25",
|
||||
"originalImage": "https://game.gtimg.cn/images/lol/act/img/tft/original-image/tft14_brandpyroclasm.tft_set14.png",
|
||||
"lifeMag": "1.8",
|
||||
"TFTID": "10275",
|
||||
"synergies": "",
|
||||
"illustrate": "",
|
||||
"recEquip": "",
|
||||
"proStatus": "",
|
||||
"hero_EN_name": "TFT14_Brand",
|
||||
"id": "11711",
|
||||
"races": "街头恶魔",
|
||||
"jobs": "高级工程师",
|
||||
"attackData": "35/53/79",
|
||||
"lifeData": "800/1440/2592"
|
||||
},
|
||||
```
|
||||
|
||||
|
||||
|
||||
我需要基于这三个数据进行分析,并根据限定好的羁绊(职业和特质的统称)和棋子生成合理的阵容,并尽可能推荐评分较高的阵容,因此项目需要设计以下模块:
|
||||
|
||||
* 数据提供模块:从本地或在线接口获取羁绊和棋子数据,并提供数据查询api,通过api可以获取指定羁绊下的所有棋子、获取棋子的所有羁绊、获取所有羁绊列表、获取某个棋子的详细信息、获取某个羁绊的详细信息等可能会用到的数据查询相关接口。
|
||||
* 阵容推荐模块:根据指定的阵容人数、羁绊、棋子搭配阵容,并使用评分系统计算阵容评分,找出评分最高的一组阵容后将阵容结果返回或输出
|
||||
* 阵容评分模块:根据阵容中的羁绊和棋子的数据,综合计算阵容的评价得分,计算标准需要深度思考,对于羁绊和棋子的评分优先级,可以添加一个默认的权重,并根据配置文件中指定的权重对默认值进行覆盖,使用覆盖后的值进行强度计算,如果不指定,则使用默认值进行强度计算,阵容强度计算需要考虑多种因素,例如羁绊数量、羁绊总人数、棋子的费用、棋子的属性数据等
|
||||
* 接口模块:可以接收外部传入的阵容推荐条件,例如指定人口、指定羁绊(一个或多个)、指定棋子(一个或多个),并调用其他模块进行阵容计算,最终返回给调用者
|
||||
|
||||
|
||||
|
||||
请根据以上需求,帮我编写一份README.md文档,整个项目使用python语言开发,要求在需求基础上加入自己的深入思考,并对细节或不合理的点进行调整和完善,我后续将使用README.md文档指导整个项目的开发,因此,需要尽可能详细设计
|
Loading…
x
Reference in New Issue
Block a user