diff --git a/kadai3-1/README.md b/kadai3-1/README.md new file mode 100644 index 0000000..a1cac41 --- /dev/null +++ b/kadai3-1/README.md @@ -0,0 +1,6 @@ +# 課題3-1 + +* タイピングゲームを作ろう +* 標準出力に英単語を出す(出すものは自由) +* 標準入力から1行受け取る +* 制限時間内に何問解けたか表示する diff --git a/kadai3-1/typegame/main.go b/kadai3-1/typegame/main.go new file mode 100644 index 0000000..8e16355 --- /dev/null +++ b/kadai3-1/typegame/main.go @@ -0,0 +1,47 @@ +package main + +import ( + "bufio" + "fmt" + "io" + "os" + "time" +) + +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 main() { + ch := input(os.Stdin) + + chanIsFinish := make(chan bool) + go func() { + time.Sleep(time.Second * 3) + chanIsFinish <- true + }() + + for { + fmt.Print(">") + var isFinished = false + + select { + case isFinished = <-chanIsFinish: + fmt.Println("FINISHED!") + case res := <-ch: + fmt.Println(res) + } + + if isFinished { + break + } + } +}