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;