From 1e426d20a1a2491c9cd2cbab507360995d1188fb Mon Sep 17 00:00:00 2001 From: by <123456@qq.com> Date: Thu, 24 Oct 2024 10:08:16 +0800 Subject: [PATCH] =?UTF-8?q?tienlen=E7=BA=AF=E9=9A=8F=E6=9C=BA=E5=8F=91?= =?UTF-8?q?=E7=89=8C?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- gamesrv/tienlen/scenedata_tienlen.go | 57 ++++++++++++++++++++++++++ gamesrv/tienlen/scenepolicy_tienlen.go | 12 +++++- 2 files changed, 68 insertions(+), 1 deletion(-) diff --git a/gamesrv/tienlen/scenedata_tienlen.go b/gamesrv/tienlen/scenedata_tienlen.go index b2bbc7f..a8af25e 100644 --- a/gamesrv/tienlen/scenedata_tienlen.go +++ b/gamesrv/tienlen/scenedata_tienlen.go @@ -557,6 +557,63 @@ func (this *TienLenSceneData) GetFreeGameSceneType() int32 { return this.GetSceneType() } +// 纯随机发牌 +func (this *TienLenSceneData) RandomCards() { + allCards := []int32{} + for i := 0; i < rule.POKER_CNT; i++ { + allCards = append(allCards, int32(i)) + } + for i := 0; i < 5; i++ { + shuffleInts(allCards) + } + fmt.Println("打乱后的切片:", allCards) + cardss := map[int][]int32{} + for i, card := range allCards { + if card != rule.InvalideCard { + index := i / 13 + cardss[index] = append(cardss[index], int32(card)) + } + } + minCard := int32(999) + for i, seat := range this.seats { + if seat != nil && seat.IsGameing() { + for index, card := range cardss[i] { + seat.cards[index] = card + if rule.Value(card) < rule.Value(minCard) { + this.startOpPos = int32(seat.GetPos()) + minCard = card + this.curMinCard = minCard + } else if rule.Value(card) == rule.Value(minCard) { + if rule.Color(card) < rule.Color(minCard) { + this.startOpPos = int32(seat.GetPos()) + minCard = card + this.curMinCard = minCard + } + } + } + pack := &tienlen.SCTienLenCard{} + for j := int32(0); j < rule.HandCardNum; j++ { + pack.Cards = append(pack.Cards, seat.cards[j]) + } + pack.IsOutRecord = seat.CanUseRecordItem() + proto.SetDefaults(pack) + seat.SendToClient(int(tienlen.TienLenPacketID_PACKET_SCTienLenCard), pack) + logger.Logger.Trace("SnId: ", seat.SnId, ";SCTienLenCard: ", pack.Cards) + + pack.SnId = seat.SnId + this.BroadcastToAudience(int(tienlen.TienLenPacketID_PACKET_SCTienLenCard), pack) + } + } +} +func shuffleInts(ints []int32) { + // 使用当前时间作为随机种子 + rand.Seed(time.Now().UnixNano()) + for i := len(ints) - 1; i > 0; i-- { + j := rand.Intn(i + 1) + ints[i], ints[j] = ints[j], ints[i] + } +} + // SendHandCard_Match 发牌 // 比赛场发牌 // 纯真人,随机发牌 diff --git a/gamesrv/tienlen/scenepolicy_tienlen.go b/gamesrv/tienlen/scenepolicy_tienlen.go index e1d3ac2..5965abc 100644 --- a/gamesrv/tienlen/scenepolicy_tienlen.go +++ b/gamesrv/tienlen/scenepolicy_tienlen.go @@ -991,7 +991,7 @@ func (this *SceneHandCardStateTienLen) OnEnter(s *base.Scene) { if rule.TestOpen { sceneEx.SendHandCardTest() } else { - if len(sceneEx.testPokers) > 1 { + /*if len(sceneEx.testPokers) > 1 { sceneEx.SendHandCardOdds() } else { if sceneEx.IsMatchScene() || sceneEx.IsCustom() { @@ -999,6 +999,16 @@ func (this *SceneHandCardStateTienLen) OnEnter(s *base.Scene) { } else { sceneEx.SendHandCardOdds() } + }*/ + + if sceneEx.WGCreateScene.GetCloseCtrl() { + sceneEx.RandomCards() + } else { + if sceneEx.IsMatchScene() || sceneEx.IsCustom() { + sceneEx.SendHandCard_Match() + } else { + sceneEx.SendHandCardOdds() + } } }