From 978fcd87dd85e6694742451b3d43223d81c9c73f Mon Sep 17 00:00:00 2001 From: xiaoou Date: Sat, 4 Jul 2026 19:16:16 +0800 Subject: [PATCH] =?UTF-8?q?fix:=20=E5=9B=BD=E6=A0=87fan=5Ftypes=E7=BC=BA?= =?UTF-8?q?=E5=B8=B8=E8=A7=81=E7=95=AA=E5=9E=8B=E2=86=920%=E8=83=A1?= =?UTF-8?q?=E7=89=8C=E7=8E=87(=E8=A1=A5=E5=85=A828=E7=A7=8D)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 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种够覆盖常见组合 --- RuleEngine/Phase/PhaseMachine.cs | 2 +- RuleEngine/Scoring/ScoreEngine.cs | 1 + dsl-examples/guobiao.yaml | 22 +++++++++++++++++++++- 3 files changed, 23 insertions(+), 2 deletions(-) diff --git a/RuleEngine/Phase/PhaseMachine.cs b/RuleEngine/Phase/PhaseMachine.cs index 67e8e2b..4d582fa 100644 --- a/RuleEngine/Phase/PhaseMachine.cs +++ b/RuleEngine/Phase/PhaseMachine.cs @@ -119,7 +119,7 @@ public class MahjongPhaseMachine // Fallback for well-known fans when DSL doesn't define them return fanName switch { - "清一色" => 24, "混一色" => 6, "对对胡" => 2, + "清一色" => 24, "混一色" => 6, "对对胡" => 2, "碰碰和" => 6, "暗七对" => 8, "七对" => 8, "带幺九" => 2, "十三幺" => 88, _ => 0 }; diff --git a/RuleEngine/Scoring/ScoreEngine.cs b/RuleEngine/Scoring/ScoreEngine.cs index b4b1fd4..cff3ee9 100644 --- a/RuleEngine/Scoring/ScoreEngine.cs +++ b/RuleEngine/Scoring/ScoreEngine.cs @@ -126,6 +126,7 @@ public class MahjongScoreEngine "清一色" => 24, "混一色" => 6, "对对胡" => 2, + "碰碰和" => 6, "暗七对" => 8, "七对" => 8, "带幺九" => 2, diff --git a/dsl-examples/guobiao.yaml b/dsl-examples/guobiao.yaml index a97ee89..88f464c 100644 --- a/dsl-examples/guobiao.yaml +++ b/dsl-examples/guobiao.yaml @@ -57,7 +57,27 @@ fan_types: - { name: 清一色, base_fan: 24, level: 8, excludes: [无字, 缺一门] } - { name: 七对, base_fan: 24, level: 8, excludes: [门前清, 单钓将] } - { name: 全双, base_fan: 24, level: 8 } - # ... Demo阶段只列关键番种 + # 12番 + - { name: 全大, base_fan: 12, level: 6 } + - { name: 全中, base_fan: 12, level: 6 } + - { name: 全小, base_fan: 12, level: 6 } + # 8番 + - { name: 大于五, base_fan: 8, level: 5 } + - { name: 小于五, base_fan: 8, level: 5 } + # 6番 + - { name: 碰碰和, base_fan: 6, level: 4, conflicts: [暗七对] } + - { name: 混一色, base_fan: 6, level: 4, excludes: [缺一门] } + - { name: 五门齐, base_fan: 6, level: 4 } + - { name: 全求人, base_fan: 6, level: 4 } + # 4番 + - { name: 全带幺, base_fan: 4, level: 3, excludes: [缺一门] } + # 2番 + - { name: 断幺九, base_fan: 2, level: 2 } + - { name: 平和, base_fan: 2, level: 2 } + - { name: 门前清, base_fan: 2, level: 2 } + # 1番 + - { name: 缺一门, base_fan: 1, level: 1 } + - { name: 无字, base_fan: 1, level: 1 } phases: - name: deal