From 95fe38699b2ab8caaf677978443e9f2836e829db Mon Sep 17 00:00:00 2001 From: bel Date: Sun, 16 Jul 2023 13:58:58 -0600 Subject: [PATCH] define src.game.maze.Spec and .Seed --- src/game/maze/spec.go | 21 +++++++++++++++++++++ src/game/maze/spec_test.go | 18 ++++++++++++++++++ src/game/maze/speed.go | 19 +++++++++++++++++++ 3 files changed, 58 insertions(+) create mode 100644 src/game/maze/spec.go create mode 100644 src/game/maze/spec_test.go create mode 100644 src/game/maze/speed.go diff --git a/src/game/maze/spec.go b/src/game/maze/spec.go new file mode 100644 index 0000000..6210cb4 --- /dev/null +++ b/src/game/maze/spec.go @@ -0,0 +1,21 @@ +package maze + +type Spec struct { + Size struct { + W uint16 + H uint16 + } + Seed uint32 +} + +func NewSpec(w, h uint16) Spec { + return NewSpecWithSeed(w, h, NewSeed()) +} + +func NewSpecWithSeed(w, h uint16, seed uint32) Spec { + result := Spec{} + result.Size.W = w + result.Size.H = h + result.Seed = seed + return result +} diff --git a/src/game/maze/spec_test.go b/src/game/maze/spec_test.go new file mode 100644 index 0000000..a339c13 --- /dev/null +++ b/src/game/maze/spec_test.go @@ -0,0 +1,18 @@ +package maze_test + +import ( + "testing" + + "gogs.inhome.blapointe.com/imicromouse/src/game/maze" +) + +func TestNewSpec(t *testing.T) { + spec := maze.NewSpec(8, 6) + if got := spec.Size.W; got != 8 { + t.Error(got) + } else if got := spec.Size.H; got != 6 { + t.Error(got) + } else if got := spec.Seed; got == 0 { + t.Error(got) + } +} diff --git a/src/game/maze/speed.go b/src/game/maze/speed.go new file mode 100644 index 0000000..db5f37c --- /dev/null +++ b/src/game/maze/speed.go @@ -0,0 +1,19 @@ +package maze + +import ( + "fmt" + "hash/crc32" + "time" +) + +func NewSeed() uint32 { + return NewSeedAt(time.Now()) +} + +func NewSeedAt(t time.Time) uint32 { + n := t.UnixNano() / int64(time.Millisecond) + b := fmt.Sprintf("%b", n) + hash := crc32.NewIEEE() + hash.Write([]byte(b)) + return hash.Sum32() +}