Loading pkg/wator/cell.go→cell.go +0 −0 File moved. View file cmd/wator/main.godeleted 100644 → 0 +0 −106 Original line number Diff line number Diff line package main import ( "fmt" "strconv" "time" "repositories.muehmer.net/bsmrgo/wator/pkg/wator" ) func main() { // setup environment w := &wator.Wator{ Debug: false, //true, Width: 72, //32, Height: 36, //14, InitialFishes: 400, //200, InitialSharks: 40, //20, BreedFish: 3, BreedShark: 30, StarveShark: 2, SleepMilliseconds: 50 * time.Millisecond, } initialize(w) print(w) repl(w) } func repl(w *wator.Wator) { cycles := read() if cycles == 0 { return } for i := 0; i < cycles; i++ { if i > 0 { time.Sleep(w.SleepMilliseconds) } evaluate(w) print(w) } repl(w) } func initialize(w *wator.Wator) { if err := w.Populate(); err != nil { panic(err) } } func print(w *wator.Wator) { fmt.Printf("\033[H\033[2J") // TBD: remove this hack if err := w.Display(); err != nil { panic(err) } fmt.Printf("%s\n", w) } func evaluate(w *wator.Wator) { if err := w.Next(); err != nil { panic(err) } } func read() int { cycles := 1 done := false for !done { fmt.Printf("Command: ") var s string n, err := fmt.Scanf("%s", &s) if n == 0 { s = "n" err = nil } if err != nil { panic(err) } if num, err := strconv.Atoi(s); (err == nil) && (num > 0) && (num <= 100000) { done = true cycles = num } if !done { switch s { case "?", "h", "help": usage() case "n", "next": done = true case "q", "quit": cycles = 0 done = true default: fmt.Printf("Unknown command \"%s\"\n", s) } } } return cycles } func usage() { fmt.Println("--- Commands ---") fmt.Println("?, h, help: show this usage information") fmt.Println("n, next : calculate next iteration") fmt.Println("<number> : do <number> iterations") fmt.Println("q, quit : terminate wator") } pkg/wator/fish.go→fish.go +0 −0 File moved. View file pkg/wator/fish_test.go→fish_test.go +0 −0 File moved. View file pkg/wator/ocean.go→ocean.go +0 −0 File moved. View file Loading
cmd/wator/main.godeleted 100644 → 0 +0 −106 Original line number Diff line number Diff line package main import ( "fmt" "strconv" "time" "repositories.muehmer.net/bsmrgo/wator/pkg/wator" ) func main() { // setup environment w := &wator.Wator{ Debug: false, //true, Width: 72, //32, Height: 36, //14, InitialFishes: 400, //200, InitialSharks: 40, //20, BreedFish: 3, BreedShark: 30, StarveShark: 2, SleepMilliseconds: 50 * time.Millisecond, } initialize(w) print(w) repl(w) } func repl(w *wator.Wator) { cycles := read() if cycles == 0 { return } for i := 0; i < cycles; i++ { if i > 0 { time.Sleep(w.SleepMilliseconds) } evaluate(w) print(w) } repl(w) } func initialize(w *wator.Wator) { if err := w.Populate(); err != nil { panic(err) } } func print(w *wator.Wator) { fmt.Printf("\033[H\033[2J") // TBD: remove this hack if err := w.Display(); err != nil { panic(err) } fmt.Printf("%s\n", w) } func evaluate(w *wator.Wator) { if err := w.Next(); err != nil { panic(err) } } func read() int { cycles := 1 done := false for !done { fmt.Printf("Command: ") var s string n, err := fmt.Scanf("%s", &s) if n == 0 { s = "n" err = nil } if err != nil { panic(err) } if num, err := strconv.Atoi(s); (err == nil) && (num > 0) && (num <= 100000) { done = true cycles = num } if !done { switch s { case "?", "h", "help": usage() case "n", "next": done = true case "q", "quit": cycles = 0 done = true default: fmt.Printf("Unknown command \"%s\"\n", s) } } } return cycles } func usage() { fmt.Println("--- Commands ---") fmt.Println("?, h, help: show this usage information") fmt.Println("n, next : calculate next iteration") fmt.Println("<number> : do <number> iterations") fmt.Println("q, quit : terminate wator") }