golang制作一个斗地主游戏服务器[1]:从扑克牌开始

打牌, 首先就应该从最基础的扑克牌类入手
单个牌来说 斗地主3最小,然后依次是 ... K, A, 2, 小王, 大王

// 花色 const ( flowerNILint = iota // 留空 flowerHEITAO// 黑桃(小王) flowerHONGTAO// 红桃(大王) flowerMEIHUA// 梅花 flowerFANGKUAI// 方块 )// 点数 const ( cardPointNIL int = iota // 留空 cardPoint3 cardPoint4 cardPoint5 cardPoint6 cardPoint7 cardPoint8 cardPoint9 cardPointT cardPointJ cardPointQ cardPointK cardPointA cardPoint2 cardPointX // 小王 cardPointY // 大王 )

【golang制作一个斗地主游戏服务器[1]:从扑克牌开始】我们定义所有扑克牌的牌值是 1 - 54 正好对应54张牌, 这样每张牌都有自己的牌值,花色,点数

// TCard 扑克牌类 type TCard struct { nValueint // 牌值 nFlower int // 花色 nPointint // 点数 }// NewCard 新建卡牌 func NewCard(nValue int) *TCard { p := &TCard{} p.nValue = https://www.it610.com/article/nValue p.nFlower = toFlower(nValue) p.nPoint = toCardValue(nValue) return p }// 从牌值获取花色 func toFlower(nValue int) int { if nValue <= 0 || nValue> 54 { return flowerNIL } return ((nValue - 1) / 13) + 1 }// 从牌值获取点数 func toCardValue(nValue int) int { if nValue <= 0 { return cardPointNIL } if nValue =https://www.it610.com/article/= 53 { return cardPointX // 小王 } if nValue == 54 { return cardPointY // 大王 } return ((nValue - 1) % 13) + 1 }

最后, 为了调试方便,写一个快速转化字符串的函数
// 转换成字符串 func (self *TCard) tostr() string { strResult := "" // 花色 switch self.nFlower { case flowerHEITAO: { strResult = "?" } case flowerHONGTAO: { strResult = "?" } case flowerMEIHUA: { strResult = "?" } case flowerFANGKUAI: { strResult = "?" } } // 点数 switch self.nPoint { case cardPoint3: { strResult = strResult + "3" } case cardPoint4: { strResult = strResult + "4" } case cardPoint5: { strResult = strResult + "5" } case cardPoint6: { strResult = strResult + "6" } case cardPoint7: { strResult = strResult + "7" } case cardPoint8: { strResult = strResult + "8" } case cardPoint9: { strResult = strResult + "9" } case cardPointT: { strResult = strResult + "T" } case cardPointJ: { strResult = strResult + "J" } case cardPointQ: { strResult = strResult + "Q" } case cardPointK: { strResult = strResult + "K" } case cardPointA: { strResult = strResult + "A" } case cardPoint2: { strResult = strResult + "2" } case cardPointX: { strResult = "小王" } case cardPointY: { strResult = "大王" } } return strResult }


    推荐阅读