feat(计分): 实现血战计分V1核心逻辑
- 新增血战计分服务,支持七对、清一色等基础番型及杠上花等特殊加番 - 扩展结算结果结构,包含番型明细与支付分数计算 - 新增PostGangContext记录杠后补摸窗口,用于判断杠上花/杠上炮 - 完善胡牌判定器,新增七对和对对胡识别方法 - 更新开发计划文档,补充注释规范要求 - 添加计分相关单元测试,确保核心逻辑正确性
This commit is contained in:
Binary file not shown.
40
.serena/memories/blood_battle_scoring_v1.md
Normal file
40
.serena/memories/blood_battle_scoring_v1.md
Normal file
@@ -0,0 +1,40 @@
|
||||
# 正式血战计分 V1(2026-03-20)
|
||||
- 已从工程占位分切换到“最小可扩展正式版”计分骨架。
|
||||
- 新增后端规则服务:`backend/src/main/java/com/xuezhanmaster/game/service/BloodBattleScoringService.java`
|
||||
- `SettlementResult` 已扩展 `settlementDetail`,结算事件 `SETTLEMENT_APPLIED` 现在会携带:
|
||||
- `baseScore`
|
||||
- `totalFan`
|
||||
- `paymentScore`
|
||||
- `fans`(番型明细)
|
||||
- 当前 V1 已支持的基础番型/加番:
|
||||
- `七对`:2 番
|
||||
- `对对胡`:1 番
|
||||
- `金钩钓`:1 番
|
||||
- `清一色`:2 番
|
||||
- `根`:每个 1 番
|
||||
- `抢杠胡`:1 番
|
||||
- `杠上花`:1 番
|
||||
- `杠上炮`:1 番
|
||||
- `海底捞月`:1 番
|
||||
- `海底炮`:1 番
|
||||
- 当前胡牌计分口径:`paymentScore = 1 << totalFan`
|
||||
- 点炮胡:放炮者单独支付 `paymentScore`
|
||||
- 自摸胡:所有未胡玩家各支付 `paymentScore`
|
||||
- 抢杠胡:按胡牌番型 + `抢杠胡` 1 番,由补杠方单独支付
|
||||
- 杠上花:在自摸胡基础上额外加 1 番
|
||||
- 杠上炮:在点炮胡基础上额外加 1 番
|
||||
- 海底捞月:自摸胡时若牌墙已空,额外加 1 番
|
||||
- 海底炮:点炮胡时若牌墙已空,额外加 1 番
|
||||
- 当前杠分口径:
|
||||
- `明杠/点杠`:放杠者单独支付 2 分
|
||||
- `补杠`:所有未胡玩家各支付 1 分
|
||||
- `暗杠`:所有未胡玩家各支付 2 分
|
||||
- `GameSession` 已新增 `PostGangContext`,只记录“杠后补摸到下一次自摸/弃牌裁决”这段窗口,用于判断 `杠上花/杠上炮`。
|
||||
- 海底相关不新增额外状态对象,直接复用“胡牌时牌墙已空”这一现有事实,保持 `KISS`。
|
||||
- `HuEvaluator` 已补 `七对` 胡牌判定,并暴露 `isSevenPairs` / `isPengPengHu` 给计分层复用。
|
||||
- 当前仍未实现:
|
||||
- 自摸加番/加底地方变体
|
||||
- 天胡、地胡
|
||||
- 查叫、退税、过水不胡、一炮多响
|
||||
- 文档约定已补到 `docs/DEVELOPMENT_PLAN.md`:后续前端、后端、数据库表结构与 SQL 脚本都需要补充必要中文注释,重点说明复杂规则、关键字段、状态切换、约束原因和索引用途。
|
||||
- 最小验证:`cd backend && mvn clean test`,当前 48 个测试通过。
|
||||
Reference in New Issue
Block a user