|
|
f57446bd84
|
fix(DSL): 武汉删死番型 '将', 国标加鸡胡兜底
武汉: '将' base_fan=0 是死番型(引擎不生成,无人exclude)→删除
国标: 缺少鸡胡兜底→添加 {name:鸡胡,base_fan:1,level:0}
两处均为纯DSL修复, 引擎代码零修改
|
2026-07-04 22:18:25 +08:00 |
|
|
|
978fcd87dd
|
fix: 国标fan_types缺常见番型→0%胡牌率(补全28种)
Root cause: guobiao.yaml只列了11个高番型(≥24番),缺少Level 1-6的常见番型。
add_max每level只取最大值→缺中低番型拼不出8番门槛。
修复:
- DSL补全:全大/全中/全小(12番),大于五/小于五(8番),碰碰和/混一色/五门齐/全求人(6番),
全带幺(4番),断幺九/平和/门前清(2番),缺一门/无字(1番)
- ScoreEngine/PhaseMachine fallback加'碰碰和'(国标名称)
- 随机AI 国标胡牌率: 0%→30%(纯运气,合理)
注: 完整国标有81种番型,Demo阶段补到28种够覆盖常见组合
|
2026-07-04 19:16:16 +08:00 |
|
|
|
21bf35c453
|
fix: DSL命名不一致 — camelCase→underscore_case (UnderscoredNamingConvention)
DSL YAML字段includeHonors/includeFlowers/wildcardCount等使用了camelCase,
但DslLoader配置了UnderscoredNamingConvention(期望include_honors)。
导致所有DSL的deck配置(字牌/花牌/wildcard)从未生效:
- 武汉: 108张(只有数牌) → 现140张(136+4wildcard)
- 国标: 108张 → 现144张(+花+字)
- 广东: 108张 → 现136张(+花+字)
修复: 4个YAML文件统一改为underscore_case
|
2026-07-04 17:33:42 +08:00 |
|
|
|
3c6748bf06
|
[verified] feat: 麻将规则引擎 Demo 完整实现
RuleEngine 核心类:
- MahjongTile.cs — int编码 (1-29万条筒, 31-37字, 41-48花, 50-59宝牌)
- MeldsSolver.cs — 标准回溯 + wildcard缺口填充 + 七对/十三幺/全不靠
- PhaseMachine.cs — 回合机(摸打碰杠胡 + 优先级仲裁)
- ScoreEngine.cs — 番型计分 + 互斥图
- DslLoader.cs — YAML DSL加载 + 能力检查
4个DSL: 四川血战/广东鸡平胡/国标麻将/武汉麻将
控制台Demo: 交互模式 + 自动模式(--auto)
测试: 33个测试用例, 32个通过
|
2026-07-03 17:51:59 +08:00 |
|