From dfe7ec47b87f5151abc9e28e3e943b006ffab464 Mon Sep 17 00:00:00 2001 From: Florian Fischer Date: Thu, 16 Feb 2017 17:20:06 +0100 Subject: remove restrictive interface --- uis/interactive.go | 74 +++++++++++++++++++++++++++++------------------------- 1 file changed, 40 insertions(+), 34 deletions(-) (limited to 'uis/interactive.go') diff --git a/uis/interactive.go b/uis/interactive.go index f742d9a..ab23971 100644 --- a/uis/interactive.go +++ b/uis/interactive.go @@ -23,7 +23,15 @@ type Interactive struct { var dices Dices var reader = bufio.NewReader(os.Stdin) -func (i *Interactive) Init() error { +func (i *Interactive) Run() { + i.init() + for r := 1; r < 14; r++ { + i.round(r) + } + i.broadcastWinner() +} + +func (i *Interactive) init() { name := "" count := 0 fmt.Println("Please enter your player names. An empty line ends the player registration.") @@ -37,44 +45,12 @@ func (i *Interactive) Init() error { count++ } - return nil } -func (ui *Interactive) Round(r int) error { +func (ui *Interactive) round(r int) { fmt.Printf("Round %d\n", r) for i := range ui.players { turn(&ui.players[i]) } - return nil -} - -func (ui *Interactive) BroadcastWinner() { - fmt.Println("Fin!") - winners := []intPlayer{} - max := 0 - - 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 = []intPlayer{player} - } else if t == max { - winners = append(winners, player) - } else { - fmt.Printf("\t%v scored %v points\n", player.name, t) - } - } - - if len(winners) == 1 { - fmt.Println("The Winner is:") - } else { - fmt.Println("The Winners are:") - } - for _, winner := range winners { - fmt.Printf("\t%v with %v points\n", winner.name, max) - } } func turn(p *intPlayer) { @@ -141,3 +117,33 @@ func turn(p *intPlayer) { } } } + +func (ui *Interactive) broadcastWinner() { + fmt.Println("Fin!") + winners := []intPlayer{} + max := 0 + + 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 = []intPlayer{player} + } else if t == max { + winners = append(winners, player) + } else { + fmt.Printf("\t%v scored %v points\n", player.name, t) + } + } + + if len(winners) == 1 { + fmt.Println("The Winner is:") + } else { + fmt.Println("The Winners are:") + } + for _, winner := range winners { + fmt.Printf("\t%v with %v points\n", winner.name, max) + } +} -- cgit v1.2.3