game_sync/gamerule/samloc/poker.go

61 lines
1.2 KiB
Go

package samloc
import (
"math/rand"
"time"
)
//牌序- 2, A, K, Q, J, 10, 9, 8, 7, 6, 5, 4, 3
//红桃- 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
type Card int
type Poker struct {
buf [POKER_CNT]Card
}
func (this *Poker) GetPokerBuf() [POKER_CNT]Card {
return this.buf
}
func NewPoker() *Poker {
p := &Poker{}
p.init()
return p
}
func (this *Poker) init() {
for i := int32(0); i < POKER_CNT; i++ {
this.buf[i] = Card(i)
}
rand.Seed(time.Now().UnixNano())
this.Shuffle()
}
func (this *Poker) Shuffle() {
for i := int32(0); i < POKER_CNT; i++ {
j := rand.Intn(int(i) + 1)
this.buf[i], this.buf[j] = this.buf[j], this.buf[i]
}
}
// 牌型算分~
func GetCardsGrade(cards []int32) int {
return 0
}
func SelectOut(pokers []int32, lastShowCard *KindOfCard, otherPokers [][]int32, warn bool, outType int) (ret []int32, lcards []int32, err error) { // 选择手牌
var v *line
v, err = selectOut(pokers, lastShowCard,
otherPokers, warn, 0)
if err == nil {
ret, lcards = v.outPokers(pokers)
//v.Print(os.Stdout)
}
return
}