|
@@ -69,7 +69,7 @@ func init() {
|
|
|
go handleEvents()
|
|
|
}
|
|
|
|
|
|
-func createRoom(userId string, roomId string, agent gate.Agent) {
|
|
|
+func createRoom(_ string, _ string, agent gate.Agent) {
|
|
|
//随即创建 1-3 个人机陪这个userId
|
|
|
userData := agent.UserData().(*user.UserData)
|
|
|
random := rand.Intn(3) + 1
|
|
@@ -84,7 +84,7 @@ func createRoom(userId string, roomId string, agent gate.Agent) {
|
|
|
IsRobot: true,
|
|
|
UserData: robotUserData,
|
|
|
SitPos: int32(sitPosList[i]),
|
|
|
- HandCards: &[]msg.ReqCard{},
|
|
|
+ HandCards: []*msg.ReqCard{},
|
|
|
IsPacked: false,
|
|
|
IsSeen: false,
|
|
|
IsShow: false,
|
|
@@ -162,28 +162,28 @@ func startGame(userId string, roomId string, agent gate.Agent, teenPattiRoom *ro
|
|
|
// 初始化房间的卡牌
|
|
|
func initCardDeck(c_room *room.Room) {
|
|
|
// 创建长度为52的切片
|
|
|
- cards := make([]msg.ReqCard, 52)
|
|
|
+ cards := make([]*msg.ReqCard, 52)
|
|
|
|
|
|
// 初始化卡牌
|
|
|
for i := 0; i < 52; i++ {
|
|
|
- cards[i] = msg.ReqCard{
|
|
|
+ cards[i] = &msg.ReqCard{
|
|
|
Color: int32(i / 13),
|
|
|
Point: int32(i%13 + 1),
|
|
|
}
|
|
|
}
|
|
|
// 赋值给房间
|
|
|
- c_room.CardDeck = &cards
|
|
|
+ c_room.CardDeck = cards
|
|
|
}
|
|
|
|
|
|
// 洗牌
|
|
|
-func shuffleCardDeck(deck *[]msg.ReqCard) {
|
|
|
- rand.Shuffle(len(*deck), func(i, j int) {
|
|
|
- (*deck)[i], (*deck)[j] = (*deck)[j], (*deck)[i]
|
|
|
+func shuffleCardDeck(deck []*msg.ReqCard) {
|
|
|
+ rand.Shuffle(len(deck), func(i, j int) {
|
|
|
+ deck[i], deck[j] = deck[j], deck[i]
|
|
|
})
|
|
|
}
|
|
|
|
|
|
// 计算一个玩家的手牌的类型,按照同花顺>同花>对子>散牌的顺序
|
|
|
-func calculateCardType(cards []msg.ReqCard) CardType {
|
|
|
+func calculateCardType(cards []*msg.ReqCard) CardType {
|
|
|
// 先判断是否是同花顺
|
|
|
isFlush := isFlush(cards)
|
|
|
isStraight := isStraight(cards)
|
|
@@ -206,7 +206,7 @@ func calculateCardType(cards []msg.ReqCard) CardType {
|
|
|
}
|
|
|
|
|
|
// 判断是否是同花(三张牌花色相同)
|
|
|
-func isFlush(cards []msg.ReqCard) bool {
|
|
|
+func isFlush(cards []*msg.ReqCard) bool {
|
|
|
if len(cards) != 3 {
|
|
|
return false
|
|
|
}
|
|
@@ -214,7 +214,7 @@ func isFlush(cards []msg.ReqCard) bool {
|
|
|
}
|
|
|
|
|
|
// 判断是否是顺子(三张牌点数连续)
|
|
|
-func isStraight(cards []msg.ReqCard) bool {
|
|
|
+func isStraight(cards []*msg.ReqCard) bool {
|
|
|
if len(cards) != 3 {
|
|
|
return false
|
|
|
}
|
|
@@ -245,7 +245,7 @@ func isStraight(cards []msg.ReqCard) bool {
|
|
|
}
|
|
|
|
|
|
// 判断是否是对子(三张牌中有两张点数相同)
|
|
|
-func isPair(cards []msg.ReqCard) bool {
|
|
|
+func isPair(cards []*msg.ReqCard) bool {
|
|
|
if len(cards) != 3 {
|
|
|
return false
|
|
|
}
|
|
@@ -256,7 +256,7 @@ func isPair(cards []msg.ReqCard) bool {
|
|
|
}
|
|
|
|
|
|
// 计算一个玩家的手牌的总值
|
|
|
-func calculateCardTotalValue(cards []msg.ReqCard) int {
|
|
|
+func calculateCardTotalValue(cards []*msg.ReqCard) int {
|
|
|
total := 0
|
|
|
for _, card := range cards {
|
|
|
total += int(card.Point)
|
|
@@ -291,8 +291,8 @@ func compareCards(players []*room.Player) *room.Player {
|
|
|
continue
|
|
|
}
|
|
|
|
|
|
- cards1 := *maxPlayer.HandCards
|
|
|
- cards2 := *player.HandCards
|
|
|
+ cards1 := maxPlayer.HandCards
|
|
|
+ cards2 := player.HandCards
|
|
|
|
|
|
cardType1 := calculateCardType(cards1)
|
|
|
cardType2 := calculateCardType(cards2)
|
|
@@ -316,7 +316,7 @@ func compareCards(players []*room.Player) *room.Player {
|
|
|
}
|
|
|
|
|
|
// 两个玩家手牌类型相同,比手牌总值
|
|
|
-func compareCardValue(cards1 []msg.ReqCard, cards2 []msg.ReqCard) int {
|
|
|
+func compareCardValue(cards1 []*msg.ReqCard, cards2 []*msg.ReqCard) int {
|
|
|
// 计算手牌总值
|
|
|
cardValue1 := calculateCardTotalValue(cards1)
|
|
|
cardValue2 := calculateCardTotalValue(cards2)
|
|
@@ -331,7 +331,7 @@ func compareCardValue(cards1 []msg.ReqCard, cards2 []msg.ReqCard) int {
|
|
|
// 正数:cards1 赢
|
|
|
// 负数:cards2 赢
|
|
|
// 0:平局(理论上不会发生,因为不可能有完全相同的牌)
|
|
|
-func compareCardColor(cards1 []msg.ReqCard, cards2 []msg.ReqCard) int {
|
|
|
+func compareCardColor(cards1 []*msg.ReqCard, cards2 []*msg.ReqCard) int {
|
|
|
// 先把牌按点数排序
|
|
|
sort.Slice(cards1, func(i, j int) bool {
|
|
|
return cards1[i].Point < cards1[j].Point
|