diff options
| author | Florian Fischer <florian.fischer@muhq.space> | 2025-07-03 21:58:12 -0400 |
|---|---|---|
| committer | Florian Fischer <florian.fischer@muhq.space> | 2025-08-20 15:57:22 +0200 |
| commit | ce22bf133cc341e64a106152e486ba410436710f (patch) | |
| tree | 50e8cc2de9c07c9b4faf55e7e6cdd4daf8f3a358 | |
| parent | 98c95cdae3193741fd97c0662e6d3397076b8bdb (diff) | |
| download | muhqs-game-ce22bf133cc341e64a106152e486ba410436710f.tar.gz muhqs-game-ce22bf133cc341e64a106152e486ba410436710f.zip | |
add RandomCard and String to PoC interface
| -rw-r--r-- | go/game/pileOfCards.go | 17 |
1 files changed, 15 insertions, 2 deletions
diff --git a/go/game/pileOfCards.go b/go/game/pileOfCards.go index 88a3c750..27ecb09d 100644 --- a/go/game/pileOfCards.go +++ b/go/game/pileOfCards.go @@ -17,9 +17,11 @@ type PileOfCards interface { AddCards(cards []*Card) AddCard(card *Card) RemoveCard(card *Card) + RandomCard() *Card MoveCard(card *Card, into PileOfCards) MoveInto(into PileOfCards) ToList() string + String() string } type PileOfCardsBase struct { @@ -39,13 +41,13 @@ func (poc *PileOfCardsBase) String() string { return fmt.Sprintf("[%s]", strings.Join(cardNames, ", ")) } -var InvalidPocString = errors.New("Invalid PileOfCards format") +var ErrInvalidPocString = errors.New("Invalid PileOfCards format") // Initialise a PileOfCard from a string. // Return InvalidPocString on error. func (poc *PileOfCardsBase) FromString(in string) error { if in[0] != '[' || in[len(in)-1] != ']' { - return InvalidPocString + return ErrInvalidPocString } in = in[1 : len(in)-1] @@ -106,6 +108,17 @@ func (poc *PileOfCardsBase) RemoveCard(card *Card) { } } +func (poc *PileOfCardsBase) RandomCard() *Card { + availCards := poc.Cards() + var pick int + if n := len(availCards); n > 1 { + pick = rand.Intn(n - 1) + } else { + pick = 0 + } + return availCards[pick] +} + func (poc *PileOfCardsBase) MoveCard(c *Card, into PileOfCards) { poc.RemoveCard(c) into.AddCard(c) |
