Skip to content

jwyxym/YGO_build

 
 

Repository files navigation

YGO_build - 游戏王卡组概率计算器

一个基于 Vue 3 + Naive UI 的游戏王卡组概率计算工具,支持精确计算、蒙特卡洛模拟和智能卡组优化。

✨ 功能特性

  • 📊 双模式计算

    • 精确计算:枚举所有可能的组合,结果完全精确
    • 蒙特卡洛模拟:快速估算,适合大型卡组和复杂条件
  • 🎯 智能卡组优化

    • 根据目标启动率自动生成多种调整方案
    • 支持保持卡组大小、扩充卡组、压缩卡组三种策略
    • 自动评估方案效果,推荐最佳方案
  • 🔍 强大的条件表达式

    • 支持复杂逻辑表达式
    • 多种运算符:>, <, >=, <=, ==, !=, &&, ||
    • 支持算术求和:a + b >= 2
  • 💾 卡组管理

    • 保存和加载卡组配置
    • 支持多个卡组切换
    • 自动保存计算记录
  • 📱 响应式设计

    • 完美支持桌面端和移动端
    • 自适应布局,优化用户体验
  • 🚀 高性能

    • 使用 Web Worker 进行后台计算
    • 不阻塞主线程,界面流畅
    • 实时显示计算进度

🏗️ 技术栈

  • 前端框架: Vue 3 (Composition API)
  • UI 组件库: Naive UI
  • 计算引擎: @ygo_build/calc(独立封装的计算库)
  • 构建工具: Vite
  • 图表库: Chart.js
  • 拖拽: vuedraggable
  • 评论系统: Waline

📦 项目结构

YGO_build/
├── src/
│   ├── components/              # Vue 组件
│   │   ├── DeckManagement.vue   # 卡组管理
│   │   ├── CardInput.vue        # 卡牌输入
│   │   ├── DeckPieChart.vue     # 卡组饼图
│   │   ├── DrawSettings.vue     # 抽卡设置
│   │   ├── ConditionInput.vue   # 条件输入
│   │   ├── CalculationPanel.vue # 计算面板
│   │   ├── DeckOptimizer.vue    # 卡组优化器
│   │   └── ReasoningCalculator.vue # 推理计算器
│   ├── composables/             # 组合式函数
│   │   ├── useCalculation.js    # 概率计算
│   │   ├── useOptimizer.js      # 卡组优化
│   │   ├── useConditionBuilder.js # 条件构建
│   │   └── useDeck.js           # 卡组管理
│   ├── App.vue                  # 主应用
│   └── main.ts                  # 入口文件
├── package.json
└── README.md

🚀 快速开始

安装依赖

# 在 monorepo 根目录
npm install

# 或在项目目录
cd F:/work/YGO_build
npm install

运行开发服务器

npm dev

访问 http://localhost:5173

构建生产版本

npm build

预览生产构建

npm preview

部署到 GitHub Pages

npm deploy:build

📖 使用说明

1. 基础使用

  1. 配置卡组

    • 在"卡牌配置"区域输入各类卡牌的数量
    • 可以自定义卡牌名称
    • 设置单张卡的最大上限
  2. 设置条件

    • 在"逻辑判定"区域输入条件表达式
    • 例如:a > 0 表示至少1张A卡
    • 支持复杂条件:(a > 0 || b > 0) && c >= 1
  3. 开始计算

    • 点击"精确计算"或"快速估算"按钮
    • 实时查看计算进度
    • 查看概率和组合数结果

2. 条件表达式语法

变量名

  • 单字母:a-z (对应 A-Z 卡)
  • 双字母:aa-ad (对应 AA-AD 卡)
  • 自定义卡名:直接使用您输入的卡名

运算符

  • 比较:>, <, >=, <=, ==, !=
  • 逻辑:&& (与), || (或)
  • 算术:+, - (用于变量求和)

示例

// 简单条件
'a > 0'              // 至少1张A卡
'b >= 2'             // 至少2张B卡

// 逻辑组合
'a > 0 && b > 0'     // A和B都至少1张
'a > 0 || b > 0'     // A或B至少1张

// 算术求和
'a + b >= 2'         // A和B合计至少2张
'a + b + c >= 3'     // A、B、C合计至少3张

// 复杂条件
'(a > 0 || b > 0) && c >= 1'  // (A或B至少1张) 且 C至少1张

3. 卡组优化

  1. 设置目标启动率

    • 在"卡组优化"面板输入目标启动率(百分比)
    • 例如:80 表示希望达到 80% 的启动率
  2. 生成优化方案

    • 点击"生成优化方案"按钮
    • 系统会自动分析当前卡组和目标启动率
    • 生成多种调整方案供选择
  3. 查看和应用方案

    • 查看保持卡组大小、扩充卡组、压缩卡组三类方案
    • 每个方案显示新的启动率和提升幅度
    • 点击"应用"按钮将方案应用到当前卡组

4. 卡组管理

  1. 保存卡组

    • 输入卡组名称
    • 点击"保存卡组"按钮
    • 卡组会保存到浏览器本地存储
  2. 加载卡组

    • 从下拉列表选择已保存的卡组
    • 点击"加载"按钮
  3. 删除卡组

    • 选择要删除的卡组
    • 点击"删除"按钮

🎯 使用场景

场景1: 计算初手概率

卡组配置:
- A卡(增殖的G): 3张
- 其他: 37张

条件:a > 0
结果:初手5张抽到至少1张增G的概率

场景2: 连锁概率

卡组配置:
- A卡(展开卡): 10张
- B卡(手坑): 6张
- 其他: 24张

条件:a > 0 && b > 0
结果:既有展开又有手坑的概率

场景3: 多条件组合

卡组配置:
- A卡(展开卡): 9张
- B卡(手坑): 9张
- 其他: 22张

条件:b >= 2 || a >= 1
结果:至少2张手坑 或 至少1张展开的概率

场景4: 卡组优化

当前卡组:
- A卡(增殖的G): 3张
- B卡(灰流丽): 2张
- 其他: 35张

条件:a > 0 || b > 0
目标启动率:80%

结果:系统生成多种调整方案,推荐最佳配置

🔧 开发说明

核心依赖

  • @ygo_build/calc: 独立封装的计算库
    • 提供精确计算和蒙特卡洛模拟
    • 条件表达式解析和编译
    • 卡组优化算法

组件说明

  • DeckManagement: 卡组的保存、加载、删除
  • CardInput: 卡牌数量输入和名称设置
  • DeckPieChart: 卡组构成的可视化饼图
  • DrawSettings: 抽卡数和相关设置
  • ConditionInput: 条件表达式输入(支持手动输入和可视化构建)
  • CalculationPanel: 计算控制和结果显示
  • DeckOptimizer: 卡组优化方案生成和应用
  • ReasoningCalculator: 推理分析功能

Composables 说明

  • useCalculation: 管理计算状态和 Worker 通信
  • useOptimizer: 管理优化状态和方案应用
  • useConditionBuilder: 条件表达式的构建和解析
  • useDeck: 卡组数据管理和 localStorage 操作

📝 迁移说明

项目已从原有的内置计算逻辑迁移到使用 @ygo_build/calc 库:

  • ✅ 代码量减少约 1000+ 行
  • ✅ 计算逻辑统一维护
  • ✅ 性能和准确性得到保证
  • ✅ 易于测试和调试

详见 迁移指南

🤝 贡献

欢迎提交 Issue 和 Pull Request!

📄 许可证

MIT

🙏 致谢

  • 部分代码与思路来源于"天天发蛋糕的工具箱"
  • UI 设计参考了多个优秀的概率计算工具
  • 感谢所有贡献者和使用者的支持

📮 联系方式

如有问题或建议,欢迎通过 Issue 或评论区联系我们。

About

YGO_build

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages

  • Vue 90.4%
  • JavaScript 9.4%
  • Other 0.2%