61 lines
1.2 KiB
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
|
|
}
|