snengame/deck.go
2021-07-15 20:58:21 -04:00

45 lines
767 B
Go

package main
import "math/rand"
type Deck struct {
Cards []Card
}
func NewDeck() *Deck {
cards := []Card{NewCard(0)}
for i := 0; i < 3; i++ {
for j := 1; j < 10; j++ {
cards = append(cards, Card(NewCard(j)))
}
}
return &Deck{
Cards: cards,
}
}
func (d *Deck) Shuffle() {
cards := d.Cards
for i := range cards {
j := rand.Intn(i + 1)
cards[i], cards[j] = cards[j], cards[i]
}
d.Cards = cards
}
func (d *Deck) Scry(s int) []Card {
seen := []Card{}
if len(d.Cards) < s {
seen = d.Cards
d.Cards = []Card{}
return seen
}
seen = d.Cards[(len(d.Cards) - s):len(d.Cards)]
d.Cards = d.Cards[0 : len(d.Cards)-s]
return seen
}
func (d *Deck) Bottom(result []Card) {
d.Cards = append(result, d.Cards...) //Should shuffle result first?
}