feat: finalize with step 5

This commit is contained in:
jonas committed 2026-09-03 23:39:25 +02:00
1 parent 129dd5d8b8
commit aab128b55c
10 files changed
+332 -37

No files matched your search

@@ -0,0 +1,37 @@
// Command westworldwithmessaging runs the full messaging demo: Miner
// Bob and Elsa tick forward together, and each iteration also flushes
// any delayed telegrams that have come due (Dispatch.DispatchDelayedMessages).
//
// Our Clock measures real wall-clock time, same as the book's, and
// Elsa's CookStew reminder uses a real 1.5 second delay - so this
// loop sleeps a little each tick and runs for several seconds of
// real time, giving that delayed message an actual chance to fire
// before the program ends. A tight, sleep-free loop would finish in
// microseconds and the stew would never get made.
package main
import (
"fmt"
"time"
"git.jjstudio.me/jonas/Programming-Game-AI-by-Example-Go/chapter-2-state-driven-agent-design/westworldwithmessaging"
)
func main() {
bob := westworldwithmessaging.NewMiner(1)
elsa := westworldwithmessaging.NewElsa(2)
const (
numUpdateSteps = 40
tickDelay = 100 * time.Millisecond
)
for range numUpdateSteps {
westworldwithmessaging.Dispatch.DispatchDelayedMessages()
bob.Update()
elsa.Update()
time.Sleep(tickDelay)
}
fmt.Println()
}