golang制作一个斗地主游戏服务器[4]:叫地主和抢地主

这篇博客介绍了如何利用Golang实现斗地主游戏中的叫地主和抢地主环节。通过Golang的select特性来处理玩家的选择超时逻辑,并模拟了客户端操作和逻辑。文章中提到,当地主确定后,将额外给地主分配三张牌,而如果没有选出地主,则可能需要重新开始或随机指定地主,这部分逻辑暂未详细展开。
摘要由CSDN通过智能技术生成

发牌结束以后, 就是三家依次进行叫地主和抢地主了

所以逻辑是   叫地主/不要  -> 抢地主/不要  -> 抢地主/不要 -> 抢回来/不要

在这里可以用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
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值