feat: add Chapter 2 gold miner FSM example in Go
Port the finite state machine from "Programming Game AI by Example" chapter 2: BaseGameEntity, a generic State[T]/StateMachine[T] pair (Go generics standing in for the book's C++ templates), and a Miner that cycles through digging, banking, sleeping, and drinking states. VisitBankAndDepositGold, GoHomeAndSleepTilRested, and QuenchThirst are original implementations based on the book's written behavior description, since their C++ source wasn't available. Includes a runnable demo in main.go.
This commit is contained in:
1 parent
f09fa6d548
commit
2764849943
11 files changed
+787
No files matched your search
@@ -0,0 +1,20 @@
|
||||
package westworld
|
||||
|
||||
import "fmt"
|
||||
|
||||
// entityNames is a temporary stand-in for the book's real name
|
||||
// lookup table. We still haven't been shown that table, so this is
|
||||
// just a small map we're filling in by hand as we meet entities -
|
||||
// right now that's only the miner from main.go, whose ID is 1.
|
||||
var entityNames = map[int]string{
|
||||
1: "Miner Bob",
|
||||
}
|
||||
|
||||
// GetNameOfEntity looks up a friendly name for a given entity ID.
|
||||
// Anything not in entityNames falls back to printing the raw ID.
|
||||
func GetNameOfEntity(id int) string {
|
||||
if name, ok := entityNames[id]; ok {
|
||||
return name
|
||||
}
|
||||
return fmt.Sprintf("Entity %d", id)
|
||||
}
|
||||
Reference in new issue
Block a user