refactor: 将 Blackjack 模拟器中的状态管理从 util 移动到 utiljack

This commit is contained in:
lixiangwuxian 2025-07-12 02:00:52 +08:00
parent db84731d9d
commit 101dba4f9e
5 changed files with 28 additions and 22 deletions

View File

@ -4,7 +4,7 @@ import (
"strconv"
"git.lxtend.com/lixiangwuxian/qqbot/handler/blackjack/model"
"git.lxtend.com/lixiangwuxian/qqbot/handler/blackjack/util"
"git.lxtend.com/lixiangwuxian/qqbot/handler/blackjack/utiljack"
)
type BackJackSimulator struct {
@ -13,7 +13,7 @@ type BackJackSimulator struct {
playerCards *model.Deck
dealerScore int
playerScore int
status util.Status
status utiljack.Status
}
func NewBlackJackSimulator() *BackJackSimulator {
@ -77,13 +77,13 @@ func (simulator *BackJackSimulator) Init() *BackJackSimulator {
simulator.playerCards = initPlayerCards(simulator.playerCards, simulator.deck)
simulator.dealerScore, simulator.playerScore = 0, 0
simulator.status = util.INITIALIZED
simulator.status = utiljack.INITIALIZED
return simulator
}
func (simulator *BackJackSimulator) Hit() *BackJackResponse {
if simulator.status == util.FAILED || simulator.status == util.WINNED || simulator.status == util.DRAW {
if simulator.status == utiljack.FAILED || simulator.status == utiljack.WINNED || simulator.status == utiljack.DRAW {
return NewBlackJackResponse(400, "[🐧] You have failed in this Blackjack game !\n")
}
@ -96,7 +96,7 @@ func (simulator *BackJackSimulator) Hit() *BackJackResponse {
}
if simulator.playerScore > 21 {
simulator.status = util.FAILED
simulator.status = utiljack.FAILED
return NewBlackJackResponse(400, "[🐧] Your total score exceeds 21 ! You lose !\n")
}
}
@ -105,7 +105,7 @@ func (simulator *BackJackSimulator) Hit() *BackJackResponse {
}
func (simulator *BackJackSimulator) Stand() *BackJackResponse {
if simulator.status == util.FAILED || simulator.status == util.WINNED || simulator.status == util.DRAW {
if simulator.status == utiljack.FAILED || simulator.status == utiljack.WINNED || simulator.status == utiljack.DRAW {
return NewBlackJackResponse(400, "[🐧] You have failed in this Blackjack game !\n")
}
@ -150,20 +150,20 @@ func (simulator *BackJackSimulator) Stand() *BackJackResponse {
}
if minDealerScore > 21 {
simulator.status = util.WINNED
simulator.status = utiljack.WINNED
return NewBlackJackResponse(400, "[🐧] The dealer burst and you have won the game !\n")
}
}
}
if maxDealerScore > maxPlayerScore {
simulator.status = util.FAILED
simulator.status = utiljack.FAILED
return NewBlackJackResponse(400, "[🐧] The dealer wins the game !\n")
} else if maxDealerScore < maxPlayerScore {
simulator.status = util.WINNED
simulator.status = utiljack.WINNED
return NewBlackJackResponse(400, "[🐧] You have won the game !\n")
} else if maxDealerScore == maxPlayerScore {
simulator.status = util.DRAW
simulator.status = utiljack.DRAW
return NewBlackJackResponse(200, "[🐧] It is a draw !\n")
}
@ -178,6 +178,6 @@ func (simulator *BackJackSimulator) GetPlayerCards() *model.Deck {
return simulator.playerCards
}
func (simulator *BackJackSimulator) GetStatus() util.Status {
func (simulator *BackJackSimulator) GetStatus() utiljack.Status {
return simulator.status
}

View File

@ -1,10 +0,0 @@
package util
type Status int
const (
INITIALIZED Status = iota
WINNED Status = iota
FAILED Status = iota
DRAW Status = iota
)

View File

@ -1,4 +1,4 @@
package util
package utiljack
var Dict map[string]string

View File

@ -0,0 +1,10 @@
package utiljack
type Status int
const (
INITIALIZED Status = iota
WINNED Status = iota
FAILED Status = iota
DRAW Status = iota
)

View File

@ -4,6 +4,12 @@ import (
"regexp"
)
/*
按空格分割字符串返回分割后的字符串数组
@param text 要分割的字符串
@param n 分割的次数
@return 分割后的字符串数组
*/
func SplitN(text string, n int) []string {
re := regexp.MustCompile(`\s+`)
tokens := re.Split(text, n)