From 649e4184310fbaaaee0d9f27e973e6db3b7af467 Mon Sep 17 00:00:00 2001 From: GoSagawa Date: Wed, 5 Sep 2018 09:16:13 +0900 Subject: [PATCH 1/4] initial commit --- kadai3-1/gosagawa/.gitignore | 2 ++ kadai3-1/gosagawa/README.md | 8 ++++++++ kadai3-1/gosagawa/main.go | 7 +++++++ 3 files changed, 17 insertions(+) create mode 100644 kadai3-1/gosagawa/.gitignore create mode 100644 kadai3-1/gosagawa/README.md create mode 100644 kadai3-1/gosagawa/main.go diff --git a/kadai3-1/gosagawa/.gitignore b/kadai3-1/gosagawa/.gitignore new file mode 100644 index 0000000..9e04648 --- /dev/null +++ b/kadai3-1/gosagawa/.gitignore @@ -0,0 +1,2 @@ +!.gitkeep +bin/ diff --git a/kadai3-1/gosagawa/README.md b/kadai3-1/gosagawa/README.md new file mode 100644 index 0000000..5f041a4 --- /dev/null +++ b/kadai3-1/gosagawa/README.md @@ -0,0 +1,8 @@ +# kadai3-1 + +##タイピングゲームを作ろう +- 標準出力に英単語を出す(出すものは自由) +- 標準入力から1行受け取る +- 制限時間内に何問解けたか表示する + + diff --git a/kadai3-1/gosagawa/main.go b/kadai3-1/gosagawa/main.go new file mode 100644 index 0000000..50e8d8d --- /dev/null +++ b/kadai3-1/gosagawa/main.go @@ -0,0 +1,7 @@ +package main + +import "fmt" + +func main() { + fmt.Println("vim-go") +} From fc7eb1b4a655f85a0a59b28a371948ba37a8074f Mon Sep 17 00:00:00 2001 From: GoSagawa Date: Sun, 9 Sep 2018 20:19:14 +0900 Subject: [PATCH 2/4] game base --- kadai3-1/gosagawa/main.go | 5 +-- kadai3-1/gosagawa/typingGame/typingGame.go | 42 ++++++++++++++++++++++ 2 files changed, 45 insertions(+), 2 deletions(-) create mode 100644 kadai3-1/gosagawa/typingGame/typingGame.go diff --git a/kadai3-1/gosagawa/main.go b/kadai3-1/gosagawa/main.go index 50e8d8d..f4bd564 100644 --- a/kadai3-1/gosagawa/main.go +++ b/kadai3-1/gosagawa/main.go @@ -1,7 +1,8 @@ package main -import "fmt" +import "github.com/gopherdojo/dojo3/kadai3-1/gosagawa/typingGame" func main() { - fmt.Println("vim-go") + + typingGame.Start() } diff --git a/kadai3-1/gosagawa/typingGame/typingGame.go b/kadai3-1/gosagawa/typingGame/typingGame.go new file mode 100644 index 0000000..9961c8b --- /dev/null +++ b/kadai3-1/gosagawa/typingGame/typingGame.go @@ -0,0 +1,42 @@ +package typingGame + +import "fmt" + +func Start() { + fmt.Println("start") + + word := chooseWord() + displayWord(word) + input := inputWord() + isCorrect := check(word, input) + displayResult(isCorrect) +} + +func chooseWord() string { + return "test" +} + +func displayWord(word string) { + fmt.Println(word) +} + +func inputWord() string { + var stdin string + fmt.Scan(&stdin) + return stdin +} + +func check(word string, input string) bool { + if word == input { + return true + } + return false +} + +func displayResult(isCorrect bool) { + if isCorrect { + fmt.Println("Correct!") + } else { + fmt.Println("Miss...") + } +} From f9382aa0b9a6b27fa106f61c2dd7b168f97f02fb Mon Sep 17 00:00:00 2001 From: GoSagawa Date: Sun, 9 Sep 2018 23:23:39 +0900 Subject: [PATCH 3/4] complete as typing game --- kadai3-1/gosagawa/typingGame/typingGame.go | 93 +++++++++++++++++++--- 1 file changed, 80 insertions(+), 13 deletions(-) diff --git a/kadai3-1/gosagawa/typingGame/typingGame.go b/kadai3-1/gosagawa/typingGame/typingGame.go index 9961c8b..7692a9b 100644 --- a/kadai3-1/gosagawa/typingGame/typingGame.go +++ b/kadai3-1/gosagawa/typingGame/typingGame.go @@ -1,29 +1,89 @@ package typingGame -import "fmt" +import ( + "bufio" + "fmt" + "io" + "math/rand" + "os" + "time" +) + +var questions []string + +const playTime int = 10 + +func init() { + questions = getQuestions() +} func Start() { - fmt.Println("start") + var num int + var endGame bool + inputCh := input(os.Stdin) + + startDisplay() + <-inputCh + + timeCh := time.After(time.Duration(playTime) * time.Second) - word := chooseWord() - displayWord(word) - input := inputWord() - isCorrect := check(word, input) - displayResult(isCorrect) + for { + word := chooseWord() + displayWord(word) + + select { + case input := <-inputCh: + isCorrect := check(word, input) + displayResult(isCorrect) + if isCorrect { + num++ + } + + case <-timeCh: + endDisplay(num) + endGame = true + } + + if endGame { + break + } + } } +func getQuestions() []string { + var List = []string{"white", "yellow", "orange", "red", "pink", "purple", "blue", "green", "brown", "grey", "black"} + return List +} + +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 startDisplay() { + fmt.Println("Please type same words as much as possible ...") + fmt.Println("Hit any key to start..") + fmt.Println("") + +} func chooseWord() string { + rand.Seed(time.Now().UnixNano()) + q := questions[rand.Intn(len(questions))] + return q + return "test" } func displayWord(word string) { fmt.Println(word) -} - -func inputWord() string { - var stdin string - fmt.Scan(&stdin) - return stdin + fmt.Printf(">") } func check(word string, input string) bool { @@ -39,4 +99,11 @@ func displayResult(isCorrect bool) { } else { fmt.Println("Miss...") } + fmt.Println("") +} + +func endDisplay(correctNumber int) { + fmt.Println("") + fmt.Println("Time's up !!!") + fmt.Printf("Your score is %v\n", correctNumber) } From 9778c122e5134ff5c28bd855c334d6af2888ed98 Mon Sep 17 00:00:00 2001 From: GoSagawa Date: Sun, 9 Sep 2018 23:39:49 +0900 Subject: [PATCH 4/4] mod readme --- kadai3-1/gosagawa/README.md | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/kadai3-1/gosagawa/README.md b/kadai3-1/gosagawa/README.md index 5f041a4..55ba9b0 100644 --- a/kadai3-1/gosagawa/README.md +++ b/kadai3-1/gosagawa/README.md @@ -5,4 +5,9 @@ - 標準入力から1行受け取る - 制限時間内に何問解けたか表示する +##usage + +``` +go run main.go +```