aboutsummaryrefslogtreecommitdiffstats
path: root/bingo/generators.go
diff options
context:
space:
mode:
authorJP Appel <jeanpierre.appel01@gmail.com>2024-09-11 22:27:00 -0400
committerJP Appel <jeanpierre.appel01@gmail.com>2024-09-11 22:27:00 -0400
commita0ab77f2e8f21a7096dc9b0828907d6e4e34fc2d (patch)
tree2929f087116ba6b2ee1bd3b2482f8197509313cb /bingo/generators.go
parent4d9a3334fbfea46ac1d17648ac532b8ff8b0363b (diff)
Start work on bingo functionality
Created a simple struct for game state. Started work on board generators and their seeds.
Diffstat (limited to 'bingo/generators.go')
-rw-r--r--bingo/generators.go41
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
+}