diff options
Diffstat (limited to 'bingo/generators.go')
| -rw-r--r-- | bingo/generators.go | 41 |
1 files changed, 41 insertions, 0 deletions
diff --git a/bingo/generators.go b/bingo/generators.go new file mode 100644 index 0000000..1365f2b --- /dev/null +++ b/bingo/generators.go @@ -0,0 +1,41 @@ +package bingo + +type GameSeed string + +type Generator interface { + New(int, int) *Game + SetSeed(int64) + Seed() int64 +} + +type RandomGenerator struct { + tiles TilePool + picker TilePicker + seed int64 +} + +func (g RandomGenerator) New(size int, length int) *Game { + g.picker.Reset() + + board := make([]string, 0, size) + checked := make([]bool, size) + + for _, tile := range g.picker.Iter(size) { + board = append(board, tile) + } + + game := new(Game) + game.Board = board + game.Checked = checked + game.Length = length + + return game +} + +func (g RandomGenerator) Seed() int64 { + return g.seed +} + +func (g RandomGenerator) SetSeed(seed int64) { + g.seed = seed +} |
