前一章写的是单张的扑克牌, 这里要写一整副扑克牌
首先定义一个扑克牌的切片
// TCards
type TCards []*TCard
新建卡牌的时候, 分配空间, 并且随机洗牌
package main
import (
"log"
"math/rand"
"sort"
"time"
)
func init() {
//以时间作为初始化种子
rand.Seed(time.Now().UnixNano())
}
// TCards 排序用
type TCards []*TCard
// NewCards 新建卡牌
func NewCards(nLen int) TCards {
cards := make(TCards, nLen)
// 给牌堆里面的牌赋初始值
for i := 0; i < nLen; i++ {
pCard := NewCard(i + 1) // 这里是从1开始
cards[i] = pCard
}
cards.randomize()
return cards
}
// randomize 洗牌
func (self TCards) randomize() {
for i := 0; i < len(self); i++ {
nRand := rand.Intn(len(self) - 1) // 从 0 - 53 开始
// 两两指针进行交换
self.Swap(i, nRand)
}
}
加上排序用的 Sort 的 Interface 三件套
// 长度
func (self TCards) Len() int {
return len(self)
}
// 比较大小
fu