Skip to content

dqqql/DND_Calculator

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

22 Commits
 
 
 
 
 
 

Repository files navigation

D&D 5e 战斗数据工坊

一个专为D&D 5e设计的战斗数据分析和遭遇平衡工具,帮助DM快速计算队伍输出、怪物威胁度,优化游戏体验。现已集成蒙特卡洛模拟引擎,提供更精确的战斗预测!

image image image

✨ 功能特色

🎯 队伍分析模式

  • 多玩家配置: 支持最多8名玩家的详细数据输入
  • 实时DPR计算: 自动计算每轮平均伤害输出
  • 优劣势支持: 完整的优势/劣势机制计算
  • 智能推荐: 基于队伍输出推荐合适的怪物血量
  • 数据联动: 可与怪物数据实时联动,获得真实对抗结果

👹 怪物分析模式

  • 威胁评估: 分析怪物对玩家的威胁程度
  • 秒杀风险: 检测怪物是否能一击秒杀玩家
  • 命中率计算: 精确的攻击命中概率分析
  • 伤害预测: 预估怪物每轮输出和最大爆发
  • BOSS机制: 支持BOSS怪物的多次攻击配置

🎲 核心算法

  • 基于D&D 5e官方规则的精确数学模型
  • 支持多种骰子类型 (d4, d6, d8, d10, d12, d20)
  • 优势/劣势状态的准确概率计算
  • 暴击机制完整实现
  • 法术豁免机制支持

🔬 蒙特卡洛模拟引擎 (新增)

  • 单体伤害验证: 10万次模拟验证理论DPR的准确性
  • 全战役模拟: 1万次完整战斗模拟,预测玩家胜率
  • 实战数据: 提供平均战斗轮数、团灭风险等关键指标
  • Python后端: 高性能计算引擎,支持复杂战斗逻辑

🚀 快速开始

环境要求

  • Node.js 16.0 或更高版本
  • npm 或 yarn 包管理器
  • Python 3.7+ (用于蒙特卡洛模拟,可选)

安装步骤

  1. 克隆项目
git clone <repository-url>
cd dnd-combat
  1. 一键启动 (推荐)

Windows用户:

# 双击运行批处理文件
start.bat

所有系统用户:

# 使用Node.js启动脚本
node start.js
# 或使用npm命令
npm start

传统方式:

# 手动安装依赖
npm install
# 启动开发服务器
npm run dev
  1. 启动蒙特卡洛后端 (可选,用于高精度模拟)
# 在项目根目录运行
python dnd_monte_carlo.py
  1. 打开浏览器 一键启动会自动打开浏览器,或手动访问 http://localhost:5173

📖 使用指南

队伍分析

  1. 选择"分析队伍"模式
  2. 设置目标怪物的AC值和豁免加值
  3. 为每个玩家配置:
    • 攻击加值或法术DC
    • 伤害骰子 (数量/面数)
    • 固定伤害加值
    • 每轮攻击次数
    • 优势状态
    • 防御属性 (AC/HP/豁免)
  4. 查看实时计算的队伍总DPR
  5. 参考推荐的怪物血量范围
  6. 开启数据联动获得真实对抗结果

怪物分析

  1. 选择"分析怪物"模式
  2. 配置怪物数据:
    • 攻击加值或法术DC
    • 伤害公式
    • 每轮攻击次数 (BOSS可多次攻击)
    • 优势状态
    • 防御属性 (AC/HP/豁免)
  3. 设置目标玩家的AC和HP
  4. 查看威胁评估和秒杀风险
  5. 开启数据联动进行模拟战报

蒙特卡洛模拟 (高级功能)

  1. 单体验证: 点击任意角色卡片上的紫色按钮进行单体伤害模拟
  2. 全战役模拟: 开启数据联动后,点击"运行蒙特卡洛全战役模拟"
  3. 结果分析: 查看玩家胜率、平均战斗轮数、实战DPR等数据
  4. 参数调整: 可选择1万次或10万次模拟精度

🛠️ 技术栈

前端

  • 框架: React 19.2.0
  • 构建工具: Vite 7.2.4
  • 样式框架: Tailwind CSS 3.4.17
  • 图标库: Lucide React 0.562.0
  • 代码规范: ESLint

后端 (蒙特卡洛引擎)

  • 语言: Python 3.7+
  • Web框架: Flask
  • 跨域支持: Flask-CORS
  • 算法: 蒙特卡洛随机模拟

桌面应用

  • 打包: Electron 40.0.0
  • 构建工具: Electron Builder 26.4.0

📁 项目结构

dnd-combat/
├── src/
│   ├── App.jsx          # 主应用组件 (战斗计算器)
│   ├── App.css          # 应用样式
│   ├── main.jsx         # 应用入口
│   ├── index.css        # 全局样式
│   └── assets/          # 静态资源
├── public/              # 公共文件
├── package.json         # 项目配置
├── vite.config.js       # Vite配置
├── tailwind.config.js   # Tailwind配置
├── main.js              # Electron主进程
├── start.js             # 一键启动脚本
├── start.bat            # Windows批处理启动
└── dnd_monte_carlo.py   # Python蒙特卡洛模拟引擎

🎮 使用场景

适合DM使用

  • 遭遇设计: 根据队伍实力设计合适难度的战斗
  • 怪物调整: 快速调整怪物数据以平衡战斗
  • 威胁评估: 预判怪物对队伍的威胁程度
  • 战斗预测: 通过蒙特卡洛模拟预测战斗结果

适合玩家使用

  • 角色优化: 分析不同装备和技能的输出效果
  • 战术规划: 计算优势/劣势对战斗的影响
  • 数据对比: 比较不同角色构建的效果
  • 团队配合: 评估队伍整体战斗力

适合理论研究

  • 数学验证: 通过蒙特卡洛模拟验证理论计算
  • 概率分析: 深入理解D&D战斗机制的随机性
  • 平衡测试: 测试自制规则和内容的平衡性

🔧 开发命令

# 一键启动 (推荐)
npm start

# 开发模式
npm run dev

# 构建生产版本
npm run build

# 预览构建结果
npm run preview

# 代码检查
npm run lint

# 启动蒙特卡洛后端
python dnd_monte_carlo.py

# 构建桌面应用
npm run build:exe

🚀 快速启动

项目提供了两种一键启动方式:

Windows 批处理启动

  • 双击 start.bat 文件
  • 自动检查环境和依赖
  • 自动打开浏览器

跨平台 Node.js 启动

  • 运行 node start.jsnpm start
  • 支持 Windows/Mac/Linux
  • 自动检测系统并打开浏览器

两种方式都会:

  • ✅ 自动检查 Node.js 环境
  • ✅ 自动安装依赖(首次运行)
  • ✅ 自动打开浏览器
  • ✅ 提供友好的中文提示

🤝 贡献指南

欢迎提交Issue和Pull Request来改进这个工具!

  1. Fork 项目
  2. 创建功能分支 (git checkout -b feature/AmazingFeature)
  3. 提交更改 (git commit -m 'Add some AmazingFeature')
  4. 推送到分支 (git push origin feature/AmazingFeature)
  5. 开启 Pull Request

📄 许可证

本项目采用 MIT 许可证 - 查看 LICENSE 文件了解详情

🎯 未来计划

  • 添加更多职业和种族的预设模板
  • 支持法术伤害计算的进一步优化
  • 集成官方怪物数据库
  • 添加战斗轮次详细模拟器
  • 支持自定义规则变体
  • 多语言支持 (英文版本)
  • 移动端适配优化
  • 云端数据同步功能

🔬 技术特性

蒙特卡洛模拟精度

  • 单体模拟: 支持1万-10万次模拟,验证理论DPR
  • 团战模拟: 1万次完整战斗,提供胜率和战斗时长预测
  • 高性能: Python后端优化,模拟速度快
  • 准确性: 完整实现D&D 5e规则,包括暴击、优劣势等

数据联动系统

  • 实时同步: 玩家和怪物数据自动联动
  • 智能计算: 自动计算平均AC、豁免、总HP
  • 灵活切换: 可随时切换手动模式和联动模式

Made with ❤️ for the D&D community

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Packages

 
 
 

Contributors