joker/cards.go

105 lines
2.5 KiB
Go

package cards
import "sort"
// Cards is a slice of Cards.
type Cards []Card
// StandardCards is a slice of standard cards.
var StandardCards = Cards{
NewCard(FaceAce, SuitHearts),
NewCard(Face2, SuitHearts),
NewCard(Face3, SuitHearts),
NewCard(Face4, SuitHearts),
NewCard(Face5, SuitHearts),
NewCard(Face6, SuitHearts),
NewCard(Face7, SuitHearts),
NewCard(Face8, SuitHearts),
NewCard(Face9, SuitHearts),
NewCard(Face10, SuitHearts),
NewCard(FaceJack, SuitHearts),
NewCard(FaceQueen, SuitHearts),
NewCard(FaceKing, SuitHearts),
NewCard(FaceAce, SuitDiamonds),
NewCard(Face2, SuitDiamonds),
NewCard(Face3, SuitDiamonds),
NewCard(Face4, SuitDiamonds),
NewCard(Face5, SuitDiamonds),
NewCard(Face6, SuitDiamonds),
NewCard(Face7, SuitDiamonds),
NewCard(Face8, SuitDiamonds),
NewCard(Face9, SuitDiamonds),
NewCard(Face10, SuitDiamonds),
NewCard(FaceJack, SuitDiamonds),
NewCard(FaceQueen, SuitDiamonds),
NewCard(FaceKing, SuitDiamonds),
NewCard(FaceAce, SuitClubs),
NewCard(Face2, SuitClubs),
NewCard(Face3, SuitClubs),
NewCard(Face4, SuitClubs),
NewCard(Face5, SuitClubs),
NewCard(Face6, SuitClubs),
NewCard(Face7, SuitClubs),
NewCard(Face8, SuitClubs),
NewCard(Face9, SuitClubs),
NewCard(Face10, SuitClubs),
NewCard(FaceJack, SuitClubs),
NewCard(FaceQueen, SuitClubs),
NewCard(FaceKing, SuitClubs),
NewCard(FaceAce, SuitSpades),
NewCard(Face2, SuitSpades),
NewCard(Face3, SuitSpades),
NewCard(Face4, SuitSpades),
NewCard(Face5, SuitSpades),
NewCard(Face6, SuitSpades),
NewCard(Face7, SuitSpades),
NewCard(Face8, SuitSpades),
NewCard(Face9, SuitSpades),
NewCard(Face10, SuitSpades),
NewCard(FaceJack, SuitSpades),
NewCard(FaceQueen, SuitSpades),
NewCard(FaceKing, SuitSpades),
}
func (c Cards) Len() int {
return len(c)
}
func (c Cards) Swap(i, j int) {
c[i], c[j] = c[j], c[i]
}
func (c Cards) Less(i, j int) bool {
return c[i].Value() < c[j].Value()
}
// Copy returns a copy of the supplied cards.
func (c Cards) Copy() Cards {
cc := make(Cards, len(c))
copy(cc, c)
return cc
}
// Sort returns the supplied cards in order.
func (c Cards) Sort() Cards {
cc := c.Copy()
sort.Sort(cc)
return cc
}
// Reverse returns the supplied cards in reverse order.
func (c Cards) Reverse() Cards {
l := len(c)
cc := make(Cards, l)
for i := 0; i < l; i++ {
cc[i] = c[l-i-1]
}
return cc
}
// Remove returns the supplied cards excluding the card at the specified index.
func (c Cards) Remove(i int) Cards {
cc := c.Copy()
return append(cc[:i], cc[i+1:]...)
}