From e1d0bd774a6700177a78e24925ae00b839ca3595 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=EB=AF=BC=EA=B0=90=EC=9E=90?= Date: Wed, 25 Oct 2023 19:28:55 +0900 Subject: [PATCH 1/8] =?UTF-8?q?feat:=20=EA=B8=B0=EB=8A=A5=20=EC=A0=95?= =?UTF-8?q?=EB=A6=AC=20README=20=EC=B4=88=EC=95=88?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- docs/README.md | 39 +++++++++++++++++++++++++++++++++++++++ 1 file changed, 39 insertions(+) create mode 100644 docs/README.md diff --git a/docs/README.md b/docs/README.md new file mode 100644 index 000000000..e6bfe0842 --- /dev/null +++ b/docs/README.md @@ -0,0 +1,39 @@ +# :baseball: 숫자 야구 :baseball: +우아한 테크코스 프리코스 1주차 + + +## :potato: 기능 정리 :potato: +### :one: 게임 진행 문장 출력 +* [ ] 시작 안내 문구를 출력하는 기능 +* [ ] 숫자 입력 요청 문구를 출력하는 기능 +* [ ] 재시작 안내 문구를 출력하는 기능 +* [ ] 게임 종료 문구를 출력하는 기능 + +### :two: 정답 생성 +* [ ] 9개 중 중복되지 않은 3개의 숫자를 나열하여 정답을 만드는 기능 + +### :three: 숫자 입력 +* [ ] 유저로부터 입력 받는 기능 +* [ ] 유저의 입력에 대한 예외처리 기능 + +### :four: 결과 판단 +* [ ] 3번에서의 입력으로부터 볼과 스트라이크 수를 측정 하는 기능 +* [ ] 볼과 스트라이크 수에 따라 결과를 출력하는 기능 +* [ ] 3 스트라이크 시 게임을 종료시키는 기능 + +### :five: 재시작 여부 입력 +* [ ] 유저로부터 입력 받는 기능 +* [ ] 유저의 입력에 대한 예외처리 기능 +* [ ] 게임을 다시 시작하거나 게임을 종료하는 기능 + +
+ +## :triangular_ruler: 예외처리 :triangular_ruler: +### :one: 숫자 입력에 대한 예외처리 +* 문자, 특수기호 등 잘못된 입력 (ex.가나다) +* 범위를 벗어나는 입력 (ex.012) +* 잘못된 자릿수에 대한 입력 (ex.1234) +* 중복된 숫자에 대한 입력 (ex.112) + +### :two: 재시작 여부 입력에 대한 예외처리 +* 1과 2를 제외한 다른 문자에 대한 입력(ex.0, 245, 가나다) \ No newline at end of file From b028d50cace267c3f7c14f753dee02a9eb4a300d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=EB=AF=BC=EA=B0=90=EC=9E=90?= Date: Wed, 25 Oct 2023 19:31:09 +0900 Subject: [PATCH 2/8] =?UTF-8?q?feat:=20=EA=B2=8C=EC=9E=84=20=EC=A7=84?= =?UTF-8?q?=ED=96=89=20=EB=AC=B8=EC=9E=A5=20=EC=B6=9C=EB=A0=A5=20=EA=B8=B0?= =?UTF-8?q?=EB=8A=A5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- docs/README.md | 8 ++++---- src/main/kotlin/baseball/Application.kt | 4 ++-- src/main/kotlin/baseball/ShowGameInfo.kt | 17 +++++++++++++++++ 3 files changed, 23 insertions(+), 6 deletions(-) create mode 100644 src/main/kotlin/baseball/ShowGameInfo.kt diff --git a/docs/README.md b/docs/README.md index e6bfe0842..0a37f8e9a 100644 --- a/docs/README.md +++ b/docs/README.md @@ -4,10 +4,10 @@ ## :potato: 기능 정리 :potato: ### :one: 게임 진행 문장 출력 -* [ ] 시작 안내 문구를 출력하는 기능 -* [ ] 숫자 입력 요청 문구를 출력하는 기능 -* [ ] 재시작 안내 문구를 출력하는 기능 -* [ ] 게임 종료 문구를 출력하는 기능 +* [X] 시작 안내 문구를 출력하는 기능 +* [X] 숫자 입력 요청 문구를 출력하는 기능 +* [X] 재시작 안내 문구를 출력하는 기능 +* [X] 게임 종료 문구를 출력하는 기능 ### :two: 정답 생성 * [ ] 9개 중 중복되지 않은 3개의 숫자를 나열하여 정답을 만드는 기능 diff --git a/src/main/kotlin/baseball/Application.kt b/src/main/kotlin/baseball/Application.kt index 148d75cc3..ce80d3741 100644 --- a/src/main/kotlin/baseball/Application.kt +++ b/src/main/kotlin/baseball/Application.kt @@ -1,5 +1,5 @@ package baseball fun main() { - TODO("프로그램 구현") -} + showGameInfo(InfoMsgType.StartGame) +} \ No newline at end of file diff --git a/src/main/kotlin/baseball/ShowGameInfo.kt b/src/main/kotlin/baseball/ShowGameInfo.kt new file mode 100644 index 000000000..b2fa9da07 --- /dev/null +++ b/src/main/kotlin/baseball/ShowGameInfo.kt @@ -0,0 +1,17 @@ +package baseball + +enum class InfoMsgType(val msg: String) { + StartGame("숫자 야구 게임을 시작합니다."), + RequestNumberInput("숫자를 입력해주세요 : "), + EndGame("3개의 숫자를 모두 맞히셨습니다! 게임 종료"), + RequestRestartInput("게임을 새로 시작하려면 1, 종료하려면 2를 입력하세요."), +} + +fun showGameInfo(msgType : InfoMsgType) { + when (msgType) { + InfoMsgType.StartGame -> println(msgType.msg) + InfoMsgType.RequestNumberInput -> print(msgType.msg) + InfoMsgType.RequestRestartInput -> println(msgType.msg) + InfoMsgType.EndGame -> println(msgType.msg) + } +} \ No newline at end of file From f790f2ca6fedb6247904d0a671530abc5a4901c7 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=EB=AF=BC=EA=B0=90=EC=9E=90?= Date: Wed, 25 Oct 2023 19:42:02 +0900 Subject: [PATCH 3/8] =?UTF-8?q?feat:=20=EC=A0=95=EB=8B=B5=20=EC=83=9D?= =?UTF-8?q?=EC=84=B1=20=EA=B8=B0=EB=8A=A5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- docs/README.md | 2 +- src/main/kotlin/baseball/CreateGameAnswer.kt | 14 ++++++++++++++ 2 files changed, 15 insertions(+), 1 deletion(-) create mode 100644 src/main/kotlin/baseball/CreateGameAnswer.kt diff --git a/docs/README.md b/docs/README.md index 0a37f8e9a..76cade43a 100644 --- a/docs/README.md +++ b/docs/README.md @@ -10,7 +10,7 @@ * [X] 게임 종료 문구를 출력하는 기능 ### :two: 정답 생성 -* [ ] 9개 중 중복되지 않은 3개의 숫자를 나열하여 정답을 만드는 기능 +* [X] 9개 중 중복되지 않은 3개의 숫자를 나열하여 정답을 만드는 기능 ### :three: 숫자 입력 * [ ] 유저로부터 입력 받는 기능 diff --git a/src/main/kotlin/baseball/CreateGameAnswer.kt b/src/main/kotlin/baseball/CreateGameAnswer.kt new file mode 100644 index 000000000..1cec1150d --- /dev/null +++ b/src/main/kotlin/baseball/CreateGameAnswer.kt @@ -0,0 +1,14 @@ +package baseball + +import camp.nextstep.edu.missionutils.Randoms + +fun createGameAnswer() : Array { + val gameAnswerArr = mutableListOf() + while (gameAnswerArr.size < 3) { + val randomNum = Character.forDigit(Randoms.pickNumberInRange(1,9), 10) + if (!gameAnswerArr.contains(randomNum)) { + gameAnswerArr.add(randomNum) + } + } + return gameAnswerArr.toCharArray().toTypedArray() +} \ No newline at end of file From 274bd20820a2bd0cc4231ddcc10cea4853be6654 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=EB=AF=BC=EA=B0=90=EC=9E=90?= Date: Wed, 25 Oct 2023 20:53:49 +0900 Subject: [PATCH 4/8] =?UTF-8?q?feat:=20=EC=88=AB=EC=9E=90=20=EC=9E=85?= =?UTF-8?q?=EB=A0=A5=20=EA=B8=B0=EB=8A=A5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- docs/README.md | 4 +- src/main/kotlin/baseball/Application.kt | 8 ++++ .../kotlin/baseball/RequestNumberInput.kt | 40 +++++++++++++++++++ 3 files changed, 50 insertions(+), 2 deletions(-) create mode 100644 src/main/kotlin/baseball/RequestNumberInput.kt diff --git a/docs/README.md b/docs/README.md index 76cade43a..4407fe6c1 100644 --- a/docs/README.md +++ b/docs/README.md @@ -13,8 +13,8 @@ * [X] 9개 중 중복되지 않은 3개의 숫자를 나열하여 정답을 만드는 기능 ### :three: 숫자 입력 -* [ ] 유저로부터 입력 받는 기능 -* [ ] 유저의 입력에 대한 예외처리 기능 +* [X] 유저로부터 입력 받는 기능 +* [X] 유저의 입력에 대한 예외처리 기능 ### :four: 결과 판단 * [ ] 3번에서의 입력으로부터 볼과 스트라이크 수를 측정 하는 기능 diff --git a/src/main/kotlin/baseball/Application.kt b/src/main/kotlin/baseball/Application.kt index ce80d3741..1008b10a1 100644 --- a/src/main/kotlin/baseball/Application.kt +++ b/src/main/kotlin/baseball/Application.kt @@ -2,4 +2,12 @@ package baseball fun main() { showGameInfo(InfoMsgType.StartGame) + + var isProgramEnded = false + while(!isProgramEnded) { + val answer : Array = createGameAnswer() + val numberInput : Array = requestNumberInput() + + isProgramEnded = true + } } \ No newline at end of file diff --git a/src/main/kotlin/baseball/RequestNumberInput.kt b/src/main/kotlin/baseball/RequestNumberInput.kt new file mode 100644 index 000000000..dcdf0d8c6 --- /dev/null +++ b/src/main/kotlin/baseball/RequestNumberInput.kt @@ -0,0 +1,40 @@ +package baseball + +import camp.nextstep.edu.missionutils.Console + +fun requestNumberInput() : Array { + showGameInfo(InfoMsgType.RequestNumberInput) + val numberInput : String = Console.readLine() + if (!isValidNumberInput(numberInput)) { + throw IllegalArgumentException() + } + return numberInput.toCharArray().toTypedArray() +} + +fun isValidNumberInput(numberInput: String) : Boolean { + if (numberInput.length != 3) { // 예외1. 자릿수 벗어남 + return false + } else if (hasNonNumericChar(numberInput)) {// 예외2. 범위를 벗어난 숫자 입력 & 예외3. 문자 특수기호 등 잘못된 입력 + return false + } else if (hasDuplicatedNumbers(numberInput)) { // 예외4. 중복된 숫자 입력 + return false + } + return true +} + +fun hasNonNumericChar(input : String) : Boolean { + val convertedInput : List = input.map { s -> s.code }.toList() + for (ascii in convertedInput) { + if (ascii < 49 || ascii > 57) { + return true + } + } + return false +} + +fun hasDuplicatedNumbers(input: String) : Boolean { + if (input.toList().distinct().size != 3) { + return true + } + return false +} \ No newline at end of file From bf20fbfb95c02166332560c319c7300d0ef95067 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=EB=AF=BC=EA=B0=90=EC=9E=90?= Date: Wed, 25 Oct 2023 22:16:23 +0900 Subject: [PATCH 5/8] =?UTF-8?q?feat:=20=EA=B2=B0=EA=B3=BC=20=ED=8C=90?= =?UTF-8?q?=EB=8B=A8=20=EA=B8=B0=EB=8A=A5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- docs/README.md | 6 +++--- src/main/kotlin/baseball/Application.kt | 9 ++++++++- .../kotlin/baseball/CheckBallsAndStrikes.kt | 16 ++++++++++++++++ src/main/kotlin/baseball/CheckIfUserWin.kt | 18 ++++++++++++++++++ 4 files changed, 45 insertions(+), 4 deletions(-) create mode 100644 src/main/kotlin/baseball/CheckBallsAndStrikes.kt create mode 100644 src/main/kotlin/baseball/CheckIfUserWin.kt diff --git a/docs/README.md b/docs/README.md index 4407fe6c1..8c075b3c6 100644 --- a/docs/README.md +++ b/docs/README.md @@ -17,9 +17,9 @@ * [X] 유저의 입력에 대한 예외처리 기능 ### :four: 결과 판단 -* [ ] 3번에서의 입력으로부터 볼과 스트라이크 수를 측정 하는 기능 -* [ ] 볼과 스트라이크 수에 따라 결과를 출력하는 기능 -* [ ] 3 스트라이크 시 게임을 종료시키는 기능 +* [X] 3번에서의 입력으로부터 볼과 스트라이크 수를 측정 하는 기능 +* [X] 볼과 스트라이크 수에 따라 결과를 출력하는 기능 +* [X] 3 스트라이크 시 게임을 종료시키는 기능 ### :five: 재시작 여부 입력 * [ ] 유저로부터 입력 받는 기능 diff --git a/src/main/kotlin/baseball/Application.kt b/src/main/kotlin/baseball/Application.kt index 1008b10a1..30027efc2 100644 --- a/src/main/kotlin/baseball/Application.kt +++ b/src/main/kotlin/baseball/Application.kt @@ -6,8 +6,15 @@ fun main() { var isProgramEnded = false while(!isProgramEnded) { val answer : Array = createGameAnswer() - val numberInput : Array = requestNumberInput() + var isGameEnded = false + while(!isGameEnded) { + val numberInput: Array = requestNumberInput() + val (strikeNum, ballNum) = checkBallsAndStrikes(answer, numberInput) + if (checkIfUserWin(strikeNum, ballNum)) { + isGameEnded = true + } + } isProgramEnded = true } } \ No newline at end of file diff --git a/src/main/kotlin/baseball/CheckBallsAndStrikes.kt b/src/main/kotlin/baseball/CheckBallsAndStrikes.kt new file mode 100644 index 000000000..4a9a1cf46 --- /dev/null +++ b/src/main/kotlin/baseball/CheckBallsAndStrikes.kt @@ -0,0 +1,16 @@ +package baseball + +fun checkBallsAndStrikes(answer: Array, input: Array) : Pair { + var strikeNum = 0 + var ballNum = 0 + for(i in 0..2) { + for (j in 0..2) { + if (answer[i] == input[j] && i == j) { + strikeNum += 1 + } else if(answer[i] == input[j] && i != j) { + ballNum +=1 + } + } + } + return Pair(strikeNum, ballNum) +} \ No newline at end of file diff --git a/src/main/kotlin/baseball/CheckIfUserWin.kt b/src/main/kotlin/baseball/CheckIfUserWin.kt new file mode 100644 index 000000000..db828f633 --- /dev/null +++ b/src/main/kotlin/baseball/CheckIfUserWin.kt @@ -0,0 +1,18 @@ +package baseball + +fun checkIfUserWin(strikeNum: Int, ballNum : Int) : Boolean { + if (ballNum == 0 && strikeNum == 0) { + println("낫싱") + } else if (ballNum == 0) { + println("${strikeNum}스트라이크") + if (strikeNum == 3) { + showGameInfo(InfoMsgType.EndGame) + return true + } + } else if (strikeNum == 0) { + println("${ballNum}볼") + } else if (strikeNum != 0 && ballNum != 0) { + println("${ballNum}볼 ${strikeNum}스트라이크") + } + return false +} \ No newline at end of file From 2610880cb99aa59bd6dc438f617b05eb59a426a7 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=EB=AF=BC=EA=B0=90=EC=9E=90?= Date: Wed, 25 Oct 2023 22:45:32 +0900 Subject: [PATCH 6/8] =?UTF-8?q?feat:=20=EC=9E=AC=EC=8B=9C=EC=9E=91=20?= =?UTF-8?q?=EC=97=AC=EB=B6=80=20=EC=9E=85=EB=A0=A5=20=EA=B8=B0=EB=8A=A5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- docs/README.md | 6 +++--- src/main/kotlin/baseball/Application.kt | 3 ++- src/main/kotlin/baseball/RequestRestartInput.kt | 16 ++++++++++++++++ 3 files changed, 21 insertions(+), 4 deletions(-) create mode 100644 src/main/kotlin/baseball/RequestRestartInput.kt diff --git a/docs/README.md b/docs/README.md index 8c075b3c6..78759410a 100644 --- a/docs/README.md +++ b/docs/README.md @@ -22,9 +22,9 @@ * [X] 3 스트라이크 시 게임을 종료시키는 기능 ### :five: 재시작 여부 입력 -* [ ] 유저로부터 입력 받는 기능 -* [ ] 유저의 입력에 대한 예외처리 기능 -* [ ] 게임을 다시 시작하거나 게임을 종료하는 기능 +* [X] 유저로부터 입력 받는 기능 +* [X] 유저의 입력에 대한 예외처리 기능 +* [X] 게임을 다시 시작하거나 게임을 종료하는 기능
diff --git a/src/main/kotlin/baseball/Application.kt b/src/main/kotlin/baseball/Application.kt index 30027efc2..d43c29398 100644 --- a/src/main/kotlin/baseball/Application.kt +++ b/src/main/kotlin/baseball/Application.kt @@ -15,6 +15,7 @@ fun main() { isGameEnded = true } } - isProgramEnded = true + + isProgramEnded = !requestRestartInput() } } \ No newline at end of file diff --git a/src/main/kotlin/baseball/RequestRestartInput.kt b/src/main/kotlin/baseball/RequestRestartInput.kt new file mode 100644 index 000000000..b0e6844e7 --- /dev/null +++ b/src/main/kotlin/baseball/RequestRestartInput.kt @@ -0,0 +1,16 @@ +package baseball + +import camp.nextstep.edu.missionutils.Console + +fun requestRestartInput() : Boolean { + showGameInfo(InfoMsgType.RequestRestartInput) + when (Console.readLine()) { + "1" -> { + return true + } + "2" -> { + return false + } + } + throw IllegalArgumentException() +} \ No newline at end of file From 814ea79fa05b8411e56f1bad8acc4ca2a28196c3 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=EB=AF=BC=EA=B0=90=EC=9E=90?= Date: Wed, 25 Oct 2023 22:47:18 +0900 Subject: [PATCH 7/8] =?UTF-8?q?refactor:=20CreateGameAnswer=20=EB=84=A4?= =?UTF-8?q?=EC=9D=B4=EB=B0=8D=20=EB=B3=80=EA=B2=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/main/kotlin/baseball/CreateGameAnswer.kt | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/src/main/kotlin/baseball/CreateGameAnswer.kt b/src/main/kotlin/baseball/CreateGameAnswer.kt index 1cec1150d..22068c4f9 100644 --- a/src/main/kotlin/baseball/CreateGameAnswer.kt +++ b/src/main/kotlin/baseball/CreateGameAnswer.kt @@ -3,12 +3,12 @@ package baseball import camp.nextstep.edu.missionutils.Randoms fun createGameAnswer() : Array { - val gameAnswerArr = mutableListOf() - while (gameAnswerArr.size < 3) { + val gameAnswer = mutableListOf() + while (gameAnswer.size < 3) { val randomNum = Character.forDigit(Randoms.pickNumberInRange(1,9), 10) - if (!gameAnswerArr.contains(randomNum)) { - gameAnswerArr.add(randomNum) + if (!gameAnswer.contains(randomNum)) { + gameAnswer.add(randomNum) } } - return gameAnswerArr.toCharArray().toTypedArray() + return gameAnswer.toCharArray().toTypedArray() } \ No newline at end of file From a0d5b3d6c68072339e5d86909aa95252574f4b22 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=EB=AF=BC=EA=B0=90=EC=9E=90?= Date: Wed, 25 Oct 2023 23:14:04 +0900 Subject: [PATCH 8/8] =?UTF-8?q?refactor:=20=EC=BD=94=EB=93=9C=20=ED=8F=AC?= =?UTF-8?q?=EB=A7=B7=ED=84=B0=20=EC=A0=81=EC=9A=A9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/main/kotlin/baseball/Application.kt | 6 +++--- src/main/kotlin/baseball/CheckBallsAndStrikes.kt | 8 ++++---- src/main/kotlin/baseball/CheckIfUserWin.kt | 2 +- src/main/kotlin/baseball/CreateGameAnswer.kt | 4 ++-- src/main/kotlin/baseball/RequestNumberInput.kt | 12 ++++++------ src/main/kotlin/baseball/RequestRestartInput.kt | 3 ++- src/main/kotlin/baseball/ShowGameInfo.kt | 2 +- 7 files changed, 19 insertions(+), 18 deletions(-) diff --git a/src/main/kotlin/baseball/Application.kt b/src/main/kotlin/baseball/Application.kt index d43c29398..015f93c46 100644 --- a/src/main/kotlin/baseball/Application.kt +++ b/src/main/kotlin/baseball/Application.kt @@ -4,11 +4,11 @@ fun main() { showGameInfo(InfoMsgType.StartGame) var isProgramEnded = false - while(!isProgramEnded) { - val answer : Array = createGameAnswer() + while (!isProgramEnded) { + val answer: Array = createGameAnswer() var isGameEnded = false - while(!isGameEnded) { + while (!isGameEnded) { val numberInput: Array = requestNumberInput() val (strikeNum, ballNum) = checkBallsAndStrikes(answer, numberInput) if (checkIfUserWin(strikeNum, ballNum)) { diff --git a/src/main/kotlin/baseball/CheckBallsAndStrikes.kt b/src/main/kotlin/baseball/CheckBallsAndStrikes.kt index 4a9a1cf46..f20736282 100644 --- a/src/main/kotlin/baseball/CheckBallsAndStrikes.kt +++ b/src/main/kotlin/baseball/CheckBallsAndStrikes.kt @@ -1,14 +1,14 @@ package baseball -fun checkBallsAndStrikes(answer: Array, input: Array) : Pair { +fun checkBallsAndStrikes(answer: Array, input: Array): Pair { var strikeNum = 0 var ballNum = 0 - for(i in 0..2) { + for (i in 0..2) { for (j in 0..2) { if (answer[i] == input[j] && i == j) { strikeNum += 1 - } else if(answer[i] == input[j] && i != j) { - ballNum +=1 + } else if (answer[i] == input[j] && i != j) { + ballNum += 1 } } } diff --git a/src/main/kotlin/baseball/CheckIfUserWin.kt b/src/main/kotlin/baseball/CheckIfUserWin.kt index db828f633..8a9d4be35 100644 --- a/src/main/kotlin/baseball/CheckIfUserWin.kt +++ b/src/main/kotlin/baseball/CheckIfUserWin.kt @@ -1,6 +1,6 @@ package baseball -fun checkIfUserWin(strikeNum: Int, ballNum : Int) : Boolean { +fun checkIfUserWin(strikeNum: Int, ballNum: Int): Boolean { if (ballNum == 0 && strikeNum == 0) { println("낫싱") } else if (ballNum == 0) { diff --git a/src/main/kotlin/baseball/CreateGameAnswer.kt b/src/main/kotlin/baseball/CreateGameAnswer.kt index 22068c4f9..a1c2a2b7e 100644 --- a/src/main/kotlin/baseball/CreateGameAnswer.kt +++ b/src/main/kotlin/baseball/CreateGameAnswer.kt @@ -2,10 +2,10 @@ package baseball import camp.nextstep.edu.missionutils.Randoms -fun createGameAnswer() : Array { +fun createGameAnswer(): Array { val gameAnswer = mutableListOf() while (gameAnswer.size < 3) { - val randomNum = Character.forDigit(Randoms.pickNumberInRange(1,9), 10) + val randomNum = Character.forDigit(Randoms.pickNumberInRange(1, 9), 10) if (!gameAnswer.contains(randomNum)) { gameAnswer.add(randomNum) } diff --git a/src/main/kotlin/baseball/RequestNumberInput.kt b/src/main/kotlin/baseball/RequestNumberInput.kt index dcdf0d8c6..bc623fca3 100644 --- a/src/main/kotlin/baseball/RequestNumberInput.kt +++ b/src/main/kotlin/baseball/RequestNumberInput.kt @@ -2,16 +2,16 @@ package baseball import camp.nextstep.edu.missionutils.Console -fun requestNumberInput() : Array { +fun requestNumberInput(): Array { showGameInfo(InfoMsgType.RequestNumberInput) - val numberInput : String = Console.readLine() + val numberInput: String = Console.readLine() if (!isValidNumberInput(numberInput)) { throw IllegalArgumentException() } return numberInput.toCharArray().toTypedArray() } -fun isValidNumberInput(numberInput: String) : Boolean { +fun isValidNumberInput(numberInput: String): Boolean { if (numberInput.length != 3) { // 예외1. 자릿수 벗어남 return false } else if (hasNonNumericChar(numberInput)) {// 예외2. 범위를 벗어난 숫자 입력 & 예외3. 문자 특수기호 등 잘못된 입력 @@ -22,8 +22,8 @@ fun isValidNumberInput(numberInput: String) : Boolean { return true } -fun hasNonNumericChar(input : String) : Boolean { - val convertedInput : List = input.map { s -> s.code }.toList() +fun hasNonNumericChar(input: String): Boolean { + val convertedInput: List = input.map { s -> s.code }.toList() for (ascii in convertedInput) { if (ascii < 49 || ascii > 57) { return true @@ -32,7 +32,7 @@ fun hasNonNumericChar(input : String) : Boolean { return false } -fun hasDuplicatedNumbers(input: String) : Boolean { +fun hasDuplicatedNumbers(input: String): Boolean { if (input.toList().distinct().size != 3) { return true } diff --git a/src/main/kotlin/baseball/RequestRestartInput.kt b/src/main/kotlin/baseball/RequestRestartInput.kt index b0e6844e7..093bfc999 100644 --- a/src/main/kotlin/baseball/RequestRestartInput.kt +++ b/src/main/kotlin/baseball/RequestRestartInput.kt @@ -2,12 +2,13 @@ package baseball import camp.nextstep.edu.missionutils.Console -fun requestRestartInput() : Boolean { +fun requestRestartInput(): Boolean { showGameInfo(InfoMsgType.RequestRestartInput) when (Console.readLine()) { "1" -> { return true } + "2" -> { return false } diff --git a/src/main/kotlin/baseball/ShowGameInfo.kt b/src/main/kotlin/baseball/ShowGameInfo.kt index b2fa9da07..0557f883e 100644 --- a/src/main/kotlin/baseball/ShowGameInfo.kt +++ b/src/main/kotlin/baseball/ShowGameInfo.kt @@ -7,7 +7,7 @@ enum class InfoMsgType(val msg: String) { RequestRestartInput("게임을 새로 시작하려면 1, 종료하려면 2를 입력하세요."), } -fun showGameInfo(msgType : InfoMsgType) { +fun showGameInfo(msgType: InfoMsgType) { when (msgType) { InfoMsgType.StartGame -> println(msgType.msg) InfoMsgType.RequestNumberInput -> print(msgType.msg)