124 lines
2.5 KiB
Go
124 lines
2.5 KiB
Go
package common
|
|
|
|
import (
|
|
"fmt"
|
|
"strings"
|
|
)
|
|
|
|
//牌序- K, Q, J,10, 9, 8, 7, 6, 5, 4, 3, 2, A
|
|
// 52 53
|
|
//黑桃-51,50,49,48,47,46,45,44,43,42,41,40,39
|
|
//红桃-38,37,36,35,34,33,32,31,30,29,28,27,26
|
|
//梅花-25,24,23,22,21,20,19,18,17,16,15,14,13
|
|
//方片-12,11,10, 9, 8, 7, 6, 5, 4, 3, 2, 1, 0
|
|
|
|
// cards 将癞子牌转点数牌时使用
|
|
var cards = [][]int32{
|
|
{0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12},
|
|
{13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25},
|
|
{26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38},
|
|
{39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51},
|
|
{52, 53},
|
|
}
|
|
|
|
// GetPoint 获取牌点数
|
|
func GetPoint(val int32) int32 {
|
|
switch {
|
|
case val == 52:
|
|
return 16
|
|
case val == 53:
|
|
return 17
|
|
default:
|
|
return val%13 + 1
|
|
}
|
|
}
|
|
|
|
// PointValue: 13 12 11 10 9 8 7 6 5 4 3 2 1
|
|
// LogicValue: 13 12 11 10 9 8 7 6 5 4 3 15 14
|
|
var pointLogic = [18]int32{
|
|
1: 14, 2: 15,
|
|
3: 3, 4: 4, 5: 5, 6: 6, 7: 7, 8: 8, 9: 9, 10: 10, 11: 11, 12: 12, 13: 13,
|
|
14: 1, 15: 2,
|
|
16: 16, 17: 17,
|
|
}
|
|
|
|
// GetLogic 获取逻辑值
|
|
func GetLogic(val int32) int32 {
|
|
return pointLogic[GetPoint(val)]
|
|
}
|
|
|
|
// PointToLogic 根据点数获取逻辑值
|
|
func PointToLogic(point int32) int32 {
|
|
return pointLogic[point]
|
|
}
|
|
|
|
// LogicToPoint 根据逻辑值获取点数
|
|
func LogicToPoint(logic int32) int32 {
|
|
return pointLogic[logic]
|
|
}
|
|
|
|
// GetColor 获取花色
|
|
func GetColor(val int32) int32 {
|
|
switch {
|
|
case val >= 0 && val <= 12:
|
|
return 0
|
|
case val >= 13 && val <= 25:
|
|
return 1
|
|
case val >= 26 && val <= 38:
|
|
return 2
|
|
case val >= 39 && val <= 51:
|
|
return 3
|
|
default:
|
|
return val
|
|
}
|
|
}
|
|
|
|
// CreatCard 根据点数和花色生成牌
|
|
func CreatCard(point int32, color int32, defaultColor int32) int32 {
|
|
if point == 16 {
|
|
return 52
|
|
}
|
|
if point == 17 {
|
|
return 53
|
|
}
|
|
if color < 0 || color > 3 {
|
|
color = defaultColor
|
|
}
|
|
if color < 0 || color > 3 {
|
|
color = 0
|
|
}
|
|
return cards[int(color)][point-1]
|
|
}
|
|
|
|
var color = [4]string{"♦", "♣", "♥", "♠"}
|
|
|
|
func String(val int32) string {
|
|
switch {
|
|
case val == -1:
|
|
return ""
|
|
case val == 52:
|
|
return "小王"
|
|
case val == 53:
|
|
return "大王"
|
|
default:
|
|
return fmt.Sprint(GetPoint(val), color[GetColor(val)])
|
|
}
|
|
}
|
|
|
|
func StringCards(cards []int32) string {
|
|
s := strings.Builder{}
|
|
for _, v := range cards {
|
|
s.WriteString(String(v))
|
|
s.WriteString(" ")
|
|
}
|
|
return s.String()
|
|
}
|
|
func StringCardsInt(cards []int) string {
|
|
s := strings.Builder{}
|
|
for _, v := range cards {
|
|
s.WriteString(String(int32(v)))
|
|
s.WriteString(" ")
|
|
}
|
|
return s.String()
|
|
}
|