diff options
| author | Florian Fischer <florian.fl.fischer@fau.de> | 2017-02-21 16:35:45 +0100 |
|---|---|---|
| committer | Florian Fischer <florian.fl.fischer@fau.de> | 2017-02-21 16:35:45 +0100 |
| commit | 51e5c2ebd78dff2043c993511921cfe1e11e4688 (patch) | |
| tree | fc4ef835c010e122b57349b891c24a315ba79346 | |
| parent | 867e214433a605e0e26f085eaa8f37f500fcf607 (diff) | |
| download | goffel-51e5c2ebd78dff2043c993511921cfe1e11e4688.tar.gz goffel-51e5c2ebd78dff2043c993511921cfe1e11e4688.zip | |
use uis/intercative.go as example
| -rw-r--r-- | example/interactive.go (renamed from uis/interactive.go) | 77 |
1 files changed, 31 insertions, 46 deletions
diff --git a/uis/interactive.go b/example/interactive.go index 5e7994e..91b2390 100644 --- a/uis/interactive.go +++ b/example/interactive.go @@ -1,32 +1,29 @@ // Copyright (c) 2016 Florian Fischer. All rights reserved. // Use of this source code is governed by a MIT license found in the LICENSE file. -package uis +package main import ( "bufio" "fmt" "os" - . "muhq.space/go/muhq/goffel/logic" + "muhq.space/go/muhq/goffel/logic" ) -type Interactive struct { - players []Player -} - -var dices Dice +var players []logic.Player +var dice logic.Dice var reader = bufio.NewReader(os.Stdin) -func (i *Interactive) Run() { - i.init() +func main() { + getPlayers() for r := 1; r < 14; r++ { - i.round(r) + round(r) } - i.broadcastWinner() + broadcastWinner() } -func (i *Interactive) init() { +func getPlayers() { name := "" count := 0 fmt.Println("Please enter your player names. An empty line ends the player registration.") @@ -36,25 +33,25 @@ func (i *Interactive) init() { if err != nil { break } - i.players = append(i.players, NewPlayer(name)) + players = append(players, logic.NewPlayer(name)) count++ - } } -func (ui *Interactive) round(r int) { + +func round(r int) { fmt.Printf("Round %d\n", r) - for i := range ui.players { - turn(&ui.players[i]) + for i := range players { + turn(&players[i]) } } -func turn(p *Player) { - dices.Roll(nil) +func turn(p *logic.Player) { + dice.Roll(nil) fmt.Printf("%s's turn:\n", p.Name) - fmt.Println(dices) + fmt.Println(dice) - var cmd Cmd + var cmd logic.Cmd rerolls := 0 for { @@ -63,7 +60,7 @@ func turn(p *Player) { if err != nil { panic(err) } - cmd, err = ParseCmd(input[0 : len(input)-1]) + cmd, err = logic.ParseCmd(input[0 : len(input)-1]) if err != nil { fmt.Printf("%v. Try \"h\".\n", err) continue @@ -71,22 +68,22 @@ func turn(p *Player) { switch cmd.Cmd { case "h": fmt.Println() - for _, helpLine := range CmdHelp(cmd.Argv[0]) { + for _, helpLine := range logic.CmdHelp(cmd.Argv[0]) { fmt.Println(helpLine) } case "p": fmt.Println(p.Score) case "d": - fmt.Println(dices) + fmt.Println(dice) case "q": os.Exit(0) case "i": - points, err := p.Score.Insert(dices, cmd.Argv[0]) + points, err := p.Score.Insert(dice, cmd.Argv[0]) if err != nil { fmt.Println("Insert failed:", err) continue } - fmt.Printf("You inserted %d into %v.\n", points, ScoreNames[cmd.Argv[0]]) + fmt.Printf("You inserted %d into %v.\n", points, logic.ScoreNames[cmd.Argv[0]]) return case "c": err = p.Score.Cancel(cmd.Argv[0]) @@ -94,17 +91,17 @@ func turn(p *Player) { fmt.Println(err) continue } - fmt.Println("You cancelled", ScoreNames[cmd.Argv[0]]) + fmt.Println("You cancelled", logic.ScoreNames[cmd.Argv[0]]) return case "r": if rerolls < 2 { - err := dices.Roll(cmd.Argv) + err := dice.Roll(cmd.Argv) if err != nil { fmt.Println("Reroll failed:", err) continue } rerolls++ - fmt.Println(dices) + fmt.Println(dice) continue } fmt.Println("You are not allowed to reroll more than twice.") @@ -113,24 +110,12 @@ func turn(p *Player) { } } -func (ui *Interactive) broadcastWinner() { +func broadcastWinner() { fmt.Println("Fin!") - winners := []Player{} - max := 0 + winners, max := logic.FindBest(players) - for _, player := range ui.players { - t := player.Score.Score() - if t > max || len(winners) == 0 { - for _, winner := range winners { - fmt.Printf("\t%v scored %v points\n", winner.Name, max) - } - max = t - winners = []Player{player} - } else if t == max { - winners = append(winners, player) - } else { - fmt.Printf("\t%v scored %v points\n", player.Name, t) - } + for _,p := range players { + fmt.Printf("%v scored %d\n", p, p.Score.Score()) } if len(winners) == 1 { @@ -139,6 +124,6 @@ func (ui *Interactive) broadcastWinner() { fmt.Println("The Winners are:") } for _, winner := range winners { - fmt.Printf("\t%v with %v points\n", winner.Name, max) + fmt.Printf("%v with %v points\n", winner.Name, max) } } |
