From 0197e2b3adf3e8fab5a0298413d47da3b3feb2ba Mon Sep 17 00:00:00 2001 From: sminamot Date: Mon, 26 Nov 2018 01:03:26 +0900 Subject: [PATCH 1/2] :tada: created --- kadai3-1/sminamot/main.go | 72 +++++++++++++++++++++++++++++++++++++++ 1 file changed, 72 insertions(+) create mode 100644 kadai3-1/sminamot/main.go diff --git a/kadai3-1/sminamot/main.go b/kadai3-1/sminamot/main.go new file mode 100644 index 0000000..76a6f89 --- /dev/null +++ b/kadai3-1/sminamot/main.go @@ -0,0 +1,72 @@ +package main + +import ( + "bufio" + "fmt" + "io" + "math/rand" + "os" + "time" +) + +var qs = []string{ + "hoge", + "fuga", + "foo", + "bar", + "piyo", +} + +func main() { + tCh := limit(10 * time.Second) + iCh := input(os.Stdin) + rand.Seed(time.Now().UnixNano()) + aNum := 0 + qNum := 0 +loop: + for { + q := getQuestion() + fmt.Printf("[q: %s]\n", q) + fmt.Print("> ") + select { + case m := <-iCh: + qNum++ + if m == q { + aNum++ + fmt.Print("matched!") + } else { + fmt.Print("unmatched!") + } + fmt.Printf(" (%d/%d)\n", aNum, qNum) + case <-tCh: + break loop + } + } + fmt.Println() + fmt.Printf("your score: %d\n", aNum) +} + +func getQuestion() string { + return qs[rand.Intn(len(qs))] +} + +func input(r io.Reader) <-chan string { + ch := make(chan string) + go func() { + s := bufio.NewScanner(r) + for s.Scan() { + ch <- s.Text() + } + close(ch) + }() + return ch +} + +func limit(d time.Duration) <-chan struct{} { + ch := make(chan struct{}) + go func() { + defer close(ch) + <-time.After(d) + }() + return ch +} From 52ba91137fd5cba604ab2b916f283a3a9321490d Mon Sep 17 00:00:00 2001 From: sminamot Date: Mon, 26 Nov 2018 01:04:35 +0900 Subject: [PATCH 2/2] :clipboard: add README --- kadai3-1/sminamot/README.md | 7 +++++++ 1 file changed, 7 insertions(+) create mode 100644 kadai3-1/sminamot/README.md diff --git a/kadai3-1/sminamot/README.md b/kadai3-1/sminamot/README.md new file mode 100644 index 0000000..158c70b --- /dev/null +++ b/kadai3-1/sminamot/README.md @@ -0,0 +1,7 @@ +# タイピングゲームの作成 + +## Usage +``` +$ go build -o main +$ ./main +```