Football Match Simulator 是一个基于离散概率链与事件状态机驱动的桌面足球比赛模拟器。通过概率分配、数字判定序列、VAR 裁判介入、加时赛及点球大战机制,还原真实足球比赛的跌宕起伏与不可预测性。
单文件极简设计,基于 Python 原生 Tkinter 开发,零第三方依赖。
💡 致谢:核心推演规则与概率判定思路参考自 B站 UP主 @篮足实录。
- 🎯 概率推演机会体系:基于双方填写的实力参数(好机会、中等机会、送礼次数)动态计算实际进攻机会。
- 🎲 拟真判定链条:传球被截、射门偏出、扑救脱手、门前补射、角球二次进攻等多级链式判定。
- ⚡ 突发事件与 VAR 裁判系统:模拟恶劣犯规、黄牌改判红牌、伤停减员及点球判罚,动态影响剩余半场进攻机会。
- ⏱️ 全周期赛制支持:
- 常规时间(上下半场,动态伤停补时)
- 加时赛(上下半场各 15 分钟)
- 点球大战(前 5 轮定胜负 + 突然死亡阶段)
- 📊 全维度赛后技术统计:控球率、射门、射正、危险进攻、角球、点球、红黄牌等一览无遗。
- 💾 历史战绩与全量回放:本地 JSON 存档,支持回顾历史比赛完整文字解说与战报。
根据双方填写的「好机会」、「中等机会」与对方的「送礼次数」计算总机会(四舍五入且
- 常规时间机会均分至上下半场(单数时下半场多分 1 次)。
- 加时赛机会按常规时间机会的
$1/4$ 换算。
| 阶段 | 主队成功条件 | 客队成功条件 | 失败结果 |
|---|---|---|---|
| 中等机会组织 | 抽中单数 (1) | 抽中双数 (2) | 进攻失败,球权转换;成功则升级为好机会 |
| 好机会 - 传球 | 单数 (1) | 双数 (2) | 传球被截断 / 配合失误 |
| 好机会 - 射门 | 单数 (1) | 双数 (2) | 射门打偏 |
| 好机会 - 进球 | 双数 (2) 进球 | 单数 (1) 进球 | 门将扑救(触发二次补射/角球/解围判定) |
当门将扑救成功时,进入二次判定:
- 解围:防守方解围,进攻结束。
- 角球:获得角球进攻(奖励 1 次好机会推演)。
- 补射:再次射门,判定破门或再次扑救。
- 比赛中若连续出现 8 次相同数字,触发严重犯规中断。
- 裁判可能出示黄牌/红牌,VAR 可能介入改判点球或判定伤员离场。
- 红牌:受害方延后追加 1 次好机会。
- 伤退:犯规方获得 1 次中等机会战术优势。
如果你没有安装 Python,可以直接前往本仓库右侧的 Releases 页面,下载预编译好的 FootballSimulator.exe,双击即可直接开始游戏!
确保已安装 Python 3.8+(无需 pip install 任何额外依赖库):
# 启动程序
python game.py- 在主界面配置主客队名称与各项机会数值;
- 勾选是否开启「加时赛」与「点球大战」;
- 点击 【开始比赛】,随后点击 【继续 (Next)】 进行逐回合文字解说推演;
- 比赛结束后可查看全场技术统计表与历史对战回放。
如需自行编译打包,可使用 pyinstaller:
# 1. 安装打包工具
pip install pyinstaller
# 2. 一键打包(单文件、无黑框控制台、自定义程序名)
pyinstaller -F -w -n "FootballSimulator" game.py打包完成后,生成的独立可执行文件位于 dist/FootballSimulator.exe。
本项目基于 MIT License 开源协议。