本来两个文章想叠加写在一起的,发现内容有点多, 拆分一下
前面讲了客户端发送协议的, 现在就要讲服务器如何接收到协议
// 大部分还是抄袭23协议的内容
case 26:
// 26 是打掉具体手牌的
req := pack.GetOutCardReq()
log.Println("玩家要求打牌", req)
nTableIndex := req.GetTableIndex()
// 找一下有没有这个桌子
pTable := GetTableByIndex(int(nTableIndex))
if pTable == nil {
log.Println("找不到桌子 ID = [", nTableIndex, "]")
return
}
if !pTable.checkPlayerValid(pData) {
log.Println("发现一个非法的用户发包")
return
}
// 拿到手牌的所有内容, 并且通过 chan传入
outCards := req.GetOutCards()
pTable.ddz.chPlayDZ <- outCards.GetCardValue() // 把打牌的具体内容通过chan
}
通过协议和 chan 送进来的手牌列表, 会在ddz的逻辑里面处理
// 回合开始
func (self *TDDZ) roundStart() {
log.Println("回合开始, 准备打牌")
//1. 新人打牌, 打第一张
ch := make(chan []int32, 1)
self.chPlayDZ = ch
var pOutCards c.TCards // 打出的牌的列表
var pLeftCards c.TCards // 剩余的牌的列表
select {
c

该博客详细介绍了如何在Golang中实现斗地主游戏服务器的打牌和跟牌功能。作者首先提及原本打算将这部分内容整合为一文,但由于内容丰富,故分为上下两篇。文章主要讨论了服务器接收客户端发送的协议,以及如何通过协议和通道(chan)来处理玩家的手牌列表,进一步展开斗地主的游戏逻辑处理。
最低0.47元/天 解锁文章
6287

被折叠的 条评论
为什么被折叠?



