aboutsummaryrefslogtreecommitdiff
path: root/uis
diff options
context:
space:
mode:
authorFlorian Fischer <florian.fl.fischer@fau.de>2017-02-21 16:35:45 +0100
committerFlorian Fischer <florian.fl.fischer@fau.de>2017-02-21 16:35:45 +0100
commit51e5c2ebd78dff2043c993511921cfe1e11e4688 (patch)
treefc4ef835c010e122b57349b891c24a315ba79346 /uis
parent867e214433a605e0e26f085eaa8f37f500fcf607 (diff)
downloadgoffel-51e5c2ebd78dff2043c993511921cfe1e11e4688.tar.gz
goffel-51e5c2ebd78dff2043c993511921cfe1e11e4688.zip
use uis/intercative.go as example
Diffstat (limited to 'uis')
-rw-r--r--uis/interactive.go144
1 files changed, 0 insertions, 144 deletions
diff --git a/uis/interactive.go b/uis/interactive.go
deleted file mode 100644
index 5e7994e..0000000
--- a/uis/interactive.go
+++ /dev/null
@@ -1,144 +0,0 @@
-// 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
-
-import (
- "bufio"
- "fmt"
- "os"
-
- . "muhq.space/go/muhq/goffel/logic"
-)
-
-type Interactive struct {
- players []Player
-}
-
-var dices Dice
-var reader = bufio.NewReader(os.Stdin)
-
-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.")
- for {
- fmt.Printf("%d: ", count+1)
- _, err := fmt.Scanln(&name)
- if err != nil {
- break
- }
- i.players = append(i.players, NewPlayer(name))
- count++
-
- }
-}
-func (ui *Interactive) round(r int) {
- fmt.Printf("Round %d\n", r)
- for i := range ui.players {
- turn(&ui.players[i])
- }
-}
-
-func turn(p *Player) {
- dices.Roll(nil)
-
- fmt.Printf("%s's turn:\n", p.Name)
- fmt.Println(dices)
-
- var cmd Cmd
- rerolls := 0
-
- for {
- fmt.Print("Please enter a command(h for help): ")
- input, err := reader.ReadString('\n')
- if err != nil {
- panic(err)
- }
- cmd, err = ParseCmd(input[0 : len(input)-1])
- if err != nil {
- fmt.Printf("%v. Try \"h\".\n", err)
- continue
- }
- switch cmd.Cmd {
- case "h":
- fmt.Println()
- for _, helpLine := range CmdHelp(cmd.Argv[0]) {
- fmt.Println(helpLine)
- }
- case "p":
- fmt.Println(p.Score)
- case "d":
- fmt.Println(dices)
- case "q":
- os.Exit(0)
- case "i":
- points, err := p.Score.Insert(dices, 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]])
- return
- case "c":
- err = p.Score.Cancel(cmd.Argv[0])
- if err != nil {
- fmt.Println(err)
- continue
- }
- fmt.Println("You cancelled", ScoreNames[cmd.Argv[0]])
- return
- case "r":
- if rerolls < 2 {
- err := dices.Roll(cmd.Argv)
- if err != nil {
- fmt.Println("Reroll failed:", err)
- continue
- }
- rerolls++
- fmt.Println(dices)
- continue
- }
- fmt.Println("You are not allowed to reroll more than twice.")
- default:
- }
- }
-}
-
-func (ui *Interactive) broadcastWinner() {
- fmt.Println("Fin!")
- winners := []Player{}
- 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 = []Player{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)
- }
-}