You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 

51 lines
878 B

package game
import (
"math/rand"
)
// Dealer 发牌员, 有打乱的一副牌
type Dealer struct {
// 一副牌
// cardList *collect.LinkedList[Card]
cards []*Card
index int
}
func (d *Dealer) Init() *Dealer {
d.index = 0
d.cards = make([]*Card, 52)
// 初始化一副牌,13张牌
for i := 0; i < 13; i++ {
// 4 种花色
for j := 0; j < 4; j++ {
d.cards[i*4+j] = &Card{PokerDot(i), PokerSuit(j)}
}
}
// 洗牌
disorder(d.cards)
return d
}
// Deal 发牌堆第一张牌
func (d *Dealer) Deal() *Card {
card := d.cards[d.index]
d.index++
return card
}
// disorder 洗牌
func disorder(cards []*Card) {
length := len(cards)
// 洗13次
for i := 0; i < 13; i++ {
for j := 0; j < length; j++ {
repIdx := rand.Intn(length)
cards[i], cards[repIdx] = cards[repIdx], cards[i]
}
}
}
func NewDealer() *Dealer {
return new(Dealer).Init()
}