发牌结束以后, 就是三家依次进行叫地主和抢地主了
所以逻辑是 叫地主/不要 -> 抢地主/不要 -> 抢地主/不要 -> 抢回来/不要
在这里可以用golang 自身的一个特性就是, 通过select 来很方便的执行超时逻辑. 玩家正常选择的时候, 执行上面的chan逻辑. 超时执行下面的chan逻辑
// 叫地主
ch := make(chan int, 1)
self.chDefineDZ = ch
select {
case <-ch:
log.Println("叫地主")
case <-time.After(time.Second * 5): // 假设5秒超时
log.Println("超时")
}
因为这里还没有接入服务器相关, 只能暂时模拟一下客户端的操作和逻辑
go func() {
log.Println("模拟客户端叫地主")
self.nDZPosition = 1 // 1号位叫地主
self.nMultiples *= 2 // 倍数要乘以2
ch <- 1
}()
地主选完以后, 如果选出来地主, 那么应该给地主分配额外的三张手牌, 没选出地主的时候, 逻辑可能是重来或者说强制随机一个地主.这个逻辑先不管
// 给地主分配额外的3张手牌
switch self.nDZPosition {
case 0:
log.Println("无人抢地主, 游戏应该结束, 未来再做其他的异常处理")
case 1:
self.pHandCardList1 = append(self.pH