From 546a176a9f5f47aadb63a0eb9872a9ec32e920ab Mon Sep 17 00:00:00 2001 From: wtz Date: Sun, 22 Feb 2026 22:50:45 +0800 Subject: [PATCH] =?UTF-8?q?fix:=20=E7=82=B8=E5=BC=B9=E6=AF=94=E8=BE=83?= =?UTF-8?q?=E5=85=88=E6=AF=94=E5=BC=A0=E6=95=B0=E5=86=8D=E6=AF=94=E7=89=8C?= =?UTF-8?q?=E5=80=BC?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/internal/game/game.go | 17 +++++++++++++++++ nginx/html/js/game.js | 7 ++++++- 2 files changed, 23 insertions(+), 1 deletion(-) diff --git a/app/internal/game/game.go b/app/internal/game/game.go index f598dc9..8b749c3 100644 --- a/app/internal/game/game.go +++ b/app/internal/game/game.go @@ -256,6 +256,12 @@ func (cl *CardLogic) CanPlay(cards []models.Card, lastPlay *models.PlayRecord) b if cardType == models.CardTypeBomb { if lastPlay.CardType == models.CardTypeBomb { + // 先比张数,张数多的赢;张数相同再比牌值 + myCount := cl.getBombCount(cards) + lastCount := cl.getBombCount(lastPlay.Cards) + if myCount != lastCount { + return myCount > lastCount + } return cl.getMainValue(cards) > cl.getMainValue(lastPlay.Cards) } if lastPlay.CardType == models.CardTypeRocket { @@ -310,6 +316,17 @@ func (cl *CardLogic) getMainValue(cards []models.Card) int { } } return maxValue + return maxValue +} + +func (cl *CardLogic) getBombCount(cards []models.Card) int { + counts := cl.getValueCounts(cards) + for _, c := range counts { + if c >= 3 { + return c + } + } + return 0 } type GameManager struct { diff --git a/nginx/html/js/game.js b/nginx/html/js/game.js index f56aec7..9370f17 100644 --- a/nginx/html/js/game.js +++ b/nginx/html/js/game.js @@ -514,9 +514,14 @@ function canPlay(cards, lastPlay) { if (cardType === 9) return true; if (cardType === 8) { if (lastPlay.cardType === 8) { - var myMain = 0, lastMain = 0; + // 先比张数,张数多的赢;张数相同再比牌值 var myCounts = getValueCounts(cards); var lastCounts = getValueCounts(lastPlay.cards); + var myCount = 0, lastCount = 0; + for (var k in myCounts) { if (myCounts[k] >= 3) myCount = myCounts[k]; } + for (var k in lastCounts) { if (lastCounts[k] >= 3) lastCount = lastCounts[k]; } + if (myCount !== lastCount) return myCount > lastCount; + var myMain = 0, lastMain = 0; for (var k in myCounts) { if (myCounts[k] >= 3 && parseInt(k) > myMain) myMain = parseInt(k); } for (var k in lastCounts) { if (lastCounts[k] >= 3 && parseInt(k) > lastMain) lastMain = parseInt(k); } return myMain > lastMain;