Gogs 4 meses atrás
pai
commit
1cfa863713

+ 4 - 4
src/server/game/room/room.go

@@ -13,7 +13,7 @@ type GameRound struct {
 	// 押注总数
 	TotalBet int32
 	//回合列表
-	Rounds []msg.ReqRound
+	Rounds []*msg.ReqRound
 }
 
 // RoomStatus 房间状态
@@ -35,7 +35,7 @@ type Room struct {
 	// 每局游戏
 	GameRound *GameRound
 	// 牌堆
-	CardDeck *[]msg.ReqCard
+	CardDeck []*msg.ReqCard
 }
 
 type Player struct {
@@ -44,7 +44,7 @@ type Player struct {
 	IsRobot  bool
 	UserData interface{}
 	//手牌
-	HandCards *[]msg.ReqCard
+	HandCards []*msg.ReqCard
 	// 座位
 	SitPos int32
 	// 等待发牌
@@ -177,7 +177,7 @@ func (r *Room) GetPlayerBySitPos(sitPos int32) *Player {
 // 增加玩家操作到当前回合
 func (r *Room) AddPlayerOpt(round *msg.ReqRound) {
 	r.Round++
-	r.GameRound.Rounds = append(r.GameRound.Rounds, *round)
+	r.GameRound.Rounds = append(r.GameRound.Rounds, round)
 }
 
 // 设置当前回合为下个没有弃牌的玩家(逆时针)

+ 15 - 15
src/server/game/teen/buildRoom.go

@@ -40,15 +40,15 @@ func convertToMsgPlayerList(players []*room.Player) []*msg.ReqPlayer {
 	return msgPlayers
 }
 
-func convertToMsgCardList(cards *[]msg.ReqCard) []*msg.ReqCard {
-	msgCards := make([]*msg.ReqCard, len(*cards))
-	for i, card := range *cards {
-		msgCards[i] = &msg.ReqCard{
-			Color: int32(card.Color),
-			Point: int32(card.Point),
-		}
-	}
-	return msgCards
+func convertToMsgCardList(cards []*msg.ReqCard) []*msg.ReqCard {
+	// msgCards := make([]*msg.ReqCard, len(*cards))
+	// for i, card := range *cards {
+	// 	msgCards[i] = &msg.ReqCard{
+	// 		Color: int32(card.Color),
+	// 		Point: int32(card.Point),
+	// 	}
+	// }
+	return cards
 }
 
 func convertToMsgGameRound(gameRound *room.GameRound) *msg.ReqGameRound {
@@ -57,12 +57,12 @@ func convertToMsgGameRound(gameRound *room.GameRound) *msg.ReqGameRound {
 		Rounds: convertToMsgRoundList(gameRound.Rounds),
 	}
 }
-func convertToMsgRoundList(rounds []msg.ReqRound) []*msg.ReqRound {
-	msgRounds := make([]*msg.ReqRound, len(rounds))
-	for i := range rounds {
-		msgRounds[i] = &rounds[i]
-	}
-	return msgRounds
+func convertToMsgRoundList(rounds []*msg.ReqRound) []*msg.ReqRound {
+	// msgRounds := make([]*msg.ReqRound, len(rounds))
+	// for i := range rounds {
+	// 	msgRounds[i] = rounds[i]
+	// }
+	return rounds
 }
 
 func convertToMsgRoomList(rooms []TeenPattiRoom) *msg.TeenPattiRoomList {

+ 2 - 2
src/server/game/teen/event.go

@@ -40,10 +40,10 @@ func handleEvents() {
 				IsShow:    false,
 				IsDealer:  false,
 				CanShow:   false,
-				HandCards: &[]msg.ReqCard{},
+				HandCards: []*msg.ReqCard{},
 			})
 			userData.Teen_Patti_Room.GameRound = &room.GameRound{
-				Rounds:   make([]msg.ReqRound, 0),
+				Rounds:   make([]*msg.ReqRound, 0),
 				TotalBet: 0,
 			}
 			go startGame(m.UserId, m.RoomId, event.Agent, userData.Teen_Patti_Room)

+ 4 - 4
src/server/game/teen/opt.go

@@ -15,17 +15,17 @@ func seen(room *room.Room, sitPos int32) {
 	log.Debug("看牌的位置: %d", room.RoundSitPos)
 	player := room.GetPlayerBySitPos(sitPos)
 	player.IsSeen = true
-	var seenCards []msg.ReqCard
+	var seenCards []*msg.ReqCard
 	//如果是机器人返回空的看牌
 	if player.IsRobot {
-		seenCards = make([]msg.ReqCard, 0)
+		seenCards = make([]*msg.ReqCard, 0)
 	} else {
-		seenCards = *room.GetPlayerBySitPos(sitPos).HandCards
+		seenCards = room.GetPlayerBySitPos(sitPos).HandCards
 	}
 	SendRoundMsgToAll(room, &msg.ReqRound{
 		Round:       int32(room.Round),
 		RoundSitPos: int32(sitPos),
-		PlayerOpt:   &msg.PlayerOpt{OptType: msg.PlayerOptType_OPT_SEEN, SeenCards: convertToMsgCardList(&seenCards)},
+		PlayerOpt:   &msg.PlayerOpt{OptType: msg.PlayerOptType_OPT_SEEN, SeenCards: convertToMsgCardList(seenCards)},
 		UserId:      room.GetPlayerBySitPos(sitPos).GetUserId(),
 	})
 }

+ 5 - 4
src/server/game/teen/round.go

@@ -56,13 +56,13 @@ func startDealCard(r *room.Room) {
 }
 
 // 返回牌堆里3张牌,并从牌堆中移除
-func getThreeCards(room *room.Room) *[]msg.ReqCard {
+func getThreeCards(room *room.Room) []*msg.ReqCard {
 	// 获取前三张牌
-	threeCards := (*room.CardDeck)[:3]
+	threeCards := (room.CardDeck)[:3]
 	// 移除这三张牌(保留剩余的牌)
-	*room.CardDeck = (*room.CardDeck)[3:]
+	room.CardDeck = (room.CardDeck)[3:]
 	// 返回这三张牌
-	return &threeCards
+	return threeCards
 }
 
 // 通知玩家发牌
@@ -186,4 +186,5 @@ func sendRoomDynamicMsg(r *room.Room, room_msg string) {
 
 // 开始下一局游戏
 func startNextRound(r *room.Room) {
+	log.Debug("开始下一局游戏")
 }

+ 1 - 1
src/server/game/teen/sit.go

@@ -12,7 +12,7 @@ func randomDealer(room *room.Room) {
 }
 
 // 一共4个座位,指定需要的座位数量,且不重复的随即返回
-func randomSitPos(room *room.Room, num int) []int {
+func randomSitPos(_ *room.Room, num int) []int {
 	availablePos := make([]int, 4)
 	for i := range availablePos {
 		availablePos[i] = i

+ 17 - 17
src/server/game/teen/teen.go

@@ -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