From 6336292085b3f2a70288e7393250422906982488 Mon Sep 17 00:00:00 2001 From: kzkick2nd Date: Sun, 9 Sep 2018 15:14:24 +0900 Subject: [PATCH 1/5] init --- kadai3-1/kzkick2nd/README.md | 9 +++++++++ 1 file changed, 9 insertions(+) create mode 100644 kadai3-1/kzkick2nd/README.md diff --git a/kadai3-1/kzkick2nd/README.md b/kadai3-1/kzkick2nd/README.md new file mode 100644 index 0000000..d311647 --- /dev/null +++ b/kadai3-1/kzkick2nd/README.md @@ -0,0 +1,9 @@ +# 課題3-1 +- 標準出力に英単語を出す(出すものは自由) +- 標準入力から1行受け取る +- 制限時間内に何問解けたか表示する + +## TODO +- 標準入出力の理解 +- 制限時間処理の理解 +- テスタブルな設計 From db4d9bc30874d37f3592d606333fc42d7c83bc36 Mon Sep 17 00:00:00 2001 From: kzkick2nd Date: Sun, 9 Sep 2018 16:46:42 +0900 Subject: [PATCH 2/5] Atari code --- kadai3-1/kzkick2nd/main.go | 37 +++++++++++++++++++++++++++++++++++++ 1 file changed, 37 insertions(+) create mode 100644 kadai3-1/kzkick2nd/main.go diff --git a/kadai3-1/kzkick2nd/main.go b/kadai3-1/kzkick2nd/main.go new file mode 100644 index 0000000..4be9464 --- /dev/null +++ b/kadai3-1/kzkick2nd/main.go @@ -0,0 +1,37 @@ +package main + +import ( + "bufio" + "fmt" + "io" + "os" + "time" +) + +func main() { + fmt.Println("Enter a string") + + ch := input(os.Stdin) + for { + select { + case <-time.After(5 * time.Second): + fmt.Println("Time Over") + return + case answer := <-ch: + fmt.Println(answer) + } + } + +} + +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 +} From d44850f9c03420444ab52e8f8e4e46b94c2377b9 Mon Sep 17 00:00:00 2001 From: kzkick2nd Date: Mon, 10 Sep 2018 14:25:03 +0900 Subject: [PATCH 3/5] Reedit all func. --- kadai3-1/kzkick2nd/main.go | 47 ++++++++++++++++++++++++++++++++++---- 1 file changed, 43 insertions(+), 4 deletions(-) diff --git a/kadai3-1/kzkick2nd/main.go b/kadai3-1/kzkick2nd/main.go index 4be9464..31a635b 100644 --- a/kadai3-1/kzkick2nd/main.go +++ b/kadai3-1/kzkick2nd/main.go @@ -4,21 +4,55 @@ import ( "bufio" "fmt" "io" + "math/rand" "os" "time" ) func main() { - fmt.Println("Enter a string") + fmt.Println("Start Typing Game.") + fmt.Println("Type the word appearing.") + + var correct int + var words = []string{ + "archive", + "tar", + "zip", + "bufio", + "builtin", + "bytes", + "compress", + "bzip2", + "flate", + "gzip", + "lzw", + "zlib", + "container", + "heap", + "list", + "ring", + "context", + "crypto", + "aes", + "cipher", + } ch := input(os.Stdin) + timeout := time.After(10 * time.Second) + for { + w := word(words) + fmt.Println(w) + select { - case <-time.After(5 * time.Second): - fmt.Println("Time Over") + case <-timeout: + fmt.Println("Finish.") + fmt.Printf("Your score: %d\n", correct) return case answer := <-ch: - fmt.Println(answer) + if w == answer { + correct++ + } } } @@ -35,3 +69,8 @@ func input(r io.Reader) <-chan string { }() return ch } + +func word(s []string) string { + rand.Seed(time.Now().UnixNano()) + return s[rand.Intn(len(s))] +} From a0bc75b33785b46769db74bc8c1354b609ac24ac Mon Sep 17 00:00:00 2001 From: kzkick2nd Date: Mon, 10 Sep 2018 14:26:45 +0900 Subject: [PATCH 4/5] Update TODO --- kadai3-1/kzkick2nd/README.md | 4 ++-- kadai3-1/kzkick2nd/main.go | 1 - 2 files changed, 2 insertions(+), 3 deletions(-) diff --git a/kadai3-1/kzkick2nd/README.md b/kadai3-1/kzkick2nd/README.md index d311647..12ee397 100644 --- a/kadai3-1/kzkick2nd/README.md +++ b/kadai3-1/kzkick2nd/README.md @@ -4,6 +4,6 @@ - 制限時間内に何問解けたか表示する ## TODO -- 標準入出力の理解 -- 制限時間処理の理解 +- [x] 標準入出力の理解 +- [x] 制限時間処理の理解 - テスタブルな設計 diff --git a/kadai3-1/kzkick2nd/main.go b/kadai3-1/kzkick2nd/main.go index 31a635b..39e950e 100644 --- a/kadai3-1/kzkick2nd/main.go +++ b/kadai3-1/kzkick2nd/main.go @@ -55,7 +55,6 @@ func main() { } } } - } func input(r io.Reader) <-chan string { From 3929584227969faf985c5637eb2038bd4ff4cdf8 Mon Sep 17 00:00:00 2001 From: kzkick2nd Date: Sat, 29 Sep 2018 01:55:04 +0900 Subject: [PATCH 5/5] Update README --- kadai3-1/kzkick2nd/README.md | 36 ++++++++++++++++++++++++++++++++---- 1 file changed, 32 insertions(+), 4 deletions(-) diff --git a/kadai3-1/kzkick2nd/README.md b/kadai3-1/kzkick2nd/README.md index 12ee397..f8dc72f 100644 --- a/kadai3-1/kzkick2nd/README.md +++ b/kadai3-1/kzkick2nd/README.md @@ -3,7 +3,35 @@ - 標準入力から1行受け取る - 制限時間内に何問解けたか表示する -## TODO -- [x] 標準入出力の理解 -- [x] 制限時間処理の理解 -- テスタブルな設計 +## 基本設計 +- main + - 入出力パッケージ if + - 出題と採点パッケージ dealer + - out if + - in if + - from 単語パッケージ words + - with 制限時間パッケージ clock + - with 残機システム lives + - to 採点集計パッケージ scorer + - to ランキングパッケージ ranking + +## チャネルで繋げては?(チャネル練習) +game chan + word 単語を選ぶ + question 出題する + listener 回答を聞く + checker 答えあわせをする + scorer 採点する + timer 時間を計測する + +## NOTE +- オープニング画面が出る +- 単語パッケージはgithub APIで単語取得(コミットメッセージ?ライブラリー名?) +- 難易度 = 単語長・制限時間(easy|normal|hard) +- 残機式。正解で残秒数が増える. +- ハイスコアを保存してランク表示 + +- チャネルはゴールーチン同士で通信するが、関数同士で共有できるのか? + - できる。呼び出し元でチャネルに格納する +- チャネルでベルトコンベアは作れるか? +- チャネル内でチャネルを動かせるか?(時間切れ測定ができる) \ No newline at end of file