aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJoop Kiefte <joop@kiefte.net>2014-10-31 00:37:36 +0100
committerJoop Kiefte <joop@kiefte.net>2014-10-31 00:37:36 +0100
commit1903d30bb75325bfdb9352735de4eda6b7f65f7c (patch)
tree80290cd14b26a99bca48c6be2df6b63449e1affc
parentb439e735c4f062552e3b95678c951bf4f222359a (diff)
Add customization options
-rw-r--r--main.go44
1 files changed, 39 insertions, 5 deletions
diff --git a/main.go b/main.go
index 3f312cb..0b74330 100644
--- a/main.go
+++ b/main.go
@@ -3,6 +3,7 @@ package main
import (
"fmt"
"math/rand"
+ "os"
"time"
)
@@ -23,6 +24,28 @@ Multan sukceson!
`, min, max-1, skip, max-1, min, min, max-1)
}
+func askPlayers() (n int) {
+ fmt.Print("Kiom da ludantoj estas? [2] ")
+ fmt.Scan(&n)
+ if n < 1 {
+ return 2
+ }
+ return n
+}
+
+func askNames(n int) (names []string) {
+ for i := 1; i <= n; i++ {
+ name := ""
+ fmt.Printf("Ludanto %d, kiel mi nomu vin? [Ludanto %d] ", n, n)
+ fmt.Scan(&name)
+ if name == "" {
+ name = fmt.Sprintf("Ludanto %d", n)
+ }
+ names = append(names, name)
+ }
+ return names
+}
+
func getNumber(min, max, skip int, guessed chan bool) (nchan chan int) {
nchan = make(chan int, 0)
go func() {
@@ -66,14 +89,25 @@ func play(name string, number int) (won bool) {
func main() {
rand.Seed(int64(time.Now().Nanosecond()))
min, max, skip := 0, 100, 1
- players := 2
+ switch len(os.Args) {
+ case 0:
+ panic("This shouldn't happen: os.Args is an empty slice.")
+ case 1:
+ case 2:
+ fmt.Sscan(os.Args[1], &max)
+ case 3:
+ fmt.Sscan(os.Args[1]+" "+os.Args[2], &min, &max)
+ default:
+ fmt.Sscan(os.Args[1]+" "+os.Args[2]+" "+os.Args[3], &min, &max, &skip)
+ }
klariguLudon(min, max, skip)
+ players := askPlayers()
+ names := askNames(players)
guessed := make(chan bool)
numbers := getNumber(min, max, skip, guessed)
- for number := range numbers {
- for i := 1; i <= players; i++ {
- name := fmt.Sprintf("Ludanto %d", i)
- if play(name, number) {
+ for {
+ for _, name := range names {
+ if play(name, <-numbers) {
fmt.Printf("Gratulon %s, vi gajnis!\n", name)
return
}