From f0b7dda5fb7eaada1a165c558dd7615a1c1ef2ec Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=EC=86=90=EB=B3=91=EC=9E=AC?= Date: Thu, 25 May 2023 22:22:01 +0900 Subject: [PATCH 01/52] =?UTF-8?q?Docs:=20=EA=B8=B0=EB=8A=A5=20=EB=AA=A9?= =?UTF-8?q?=EB=A1=9D=20=EC=B6=94=EA=B0=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- README.md | 23 +++++++++++++++++++++++ 1 file changed, 23 insertions(+) diff --git a/README.md b/README.md index 1bee39036..24197e595 100644 --- a/README.md +++ b/README.md @@ -5,6 +5,29 @@ - 미션은 **기능 요구사항, 프로그래밍 요구사항, 과제 진행 요구사항** 세 가지로 구성되어 있다. - 세 개의 요구사항을 만족하기 위해 노력한다. 특히 기능을 구현하기 전에 기능 목록을 만들고, 기능 단위로 커밋 하는 방식으로 진행한다. +## 기능 목록 +- 게임 + - 게임을 시작하는 기능 + - 콘솔로부터 받은 입력으로 게임 재시작 혹은 종료하는 기능 +- 심판 + - 플레이어와 상대방으로부터 숫자를 받아 스트라이크와 볼 개수를 판단하는 기능 + - 게임 재시작 시 상대방에게 숫자 변경을 요청하는 기능 +- 화면 + - 스트라이크와 볼 개수 혹은 낫싱을 출력하는 기능 + - 3개의 숫자를 모두 맞혔을 때 게임 종료 메세지를 출력하는 기능 + - 게임 재시작 혹은 종료 여부를 입력하도록 출력하는 기능 +- 플레이어 + - 콘솔에게서 문자열타입으로 숫자를 입력받아 유효성 검사를 하는 기능 + - 심판의 요청에 따라 입력받은 유효한 숫자를 반환하는 기능 +- 유효성 검사기 + - 플레이어가 콘솔로 받은 입력이 정수인지 판단하는 기능 + - 플레이어가 콘솔로 받은 입력이 입력 범위 내에 존재하는지 판단하는 기능 +- 상대방(컴퓨터) + - 랜덤하게 범위 내의 3자리 숫자를 생성하는 기능 + - 심판의 요청에 따라 생성한 숫자를 반환하는 기능 + - 게임 재시작 시 랜덤한 숫자를 다시 생성하는 기능 + + ## ✉️ 미션 제출 방법 - 미션 구현을 완료한 후 GitHub을 통해 제출해야 한다. From cb163202240c0d7a1d8775de4520920dd49a4d2d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=EC=86=90=EB=B3=91=EC=9E=AC?= Date: Thu, 25 May 2023 22:38:54 +0900 Subject: [PATCH 02/52] =?UTF-8?q?Design:=20=EA=B3=B5=EC=9A=A9=20=EC=9D=B8?= =?UTF-8?q?=ED=84=B0=ED=8E=98=EC=9D=B4=EC=8A=A4=20=EC=84=A4=EA=B3=84?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/main/java/baseball/Game.java | 10 ++++++++++ src/main/java/baseball/Opponent.java | 16 ++++++++++++++++ src/main/java/baseball/Player.java | 13 +++++++++++++ src/main/java/baseball/Referee.java | 13 +++++++++++++ src/main/java/baseball/Validator.java | 12 ++++++++++++ src/main/java/baseball/View.java | 8 ++++++++ 6 files changed, 72 insertions(+) create mode 100644 src/main/java/baseball/Game.java create mode 100644 src/main/java/baseball/Opponent.java create mode 100644 src/main/java/baseball/Player.java create mode 100644 src/main/java/baseball/Referee.java create mode 100644 src/main/java/baseball/Validator.java create mode 100644 src/main/java/baseball/View.java diff --git a/src/main/java/baseball/Game.java b/src/main/java/baseball/Game.java new file mode 100644 index 000000000..eb2161fcf --- /dev/null +++ b/src/main/java/baseball/Game.java @@ -0,0 +1,10 @@ +package baseball; + +import camp.nextstep.edu.missionutils.Console; + +public class Game { + + public void run() { + } + +} diff --git a/src/main/java/baseball/Opponent.java b/src/main/java/baseball/Opponent.java new file mode 100644 index 000000000..39a6b446c --- /dev/null +++ b/src/main/java/baseball/Opponent.java @@ -0,0 +1,16 @@ +package baseball; + +import camp.nextstep.edu.missionutils.Randoms; +import java.util.LinkedList; +import java.util.List; + +public class Opponent { + + public List getTargetNumber() { + + } + + public void resetTargetNumber() { + + } +} diff --git a/src/main/java/baseball/Player.java b/src/main/java/baseball/Player.java new file mode 100644 index 000000000..e179d8ea4 --- /dev/null +++ b/src/main/java/baseball/Player.java @@ -0,0 +1,13 @@ +package baseball; + +import camp.nextstep.edu.missionutils.Console; +import java.util.List; + +public class Player { + + public List getNumber() { + + } + + +} diff --git a/src/main/java/baseball/Referee.java b/src/main/java/baseball/Referee.java new file mode 100644 index 000000000..d1990ffe6 --- /dev/null +++ b/src/main/java/baseball/Referee.java @@ -0,0 +1,13 @@ +package baseball; + +import java.util.List; + +public class Referee { + + public JudgementResult judge() { + } + + + public void requestToChangeOpponentNumber() { + } +} diff --git a/src/main/java/baseball/Validator.java b/src/main/java/baseball/Validator.java new file mode 100644 index 000000000..9c7b4e740 --- /dev/null +++ b/src/main/java/baseball/Validator.java @@ -0,0 +1,12 @@ +package baseball; + +import java.util.List; + +public class Validator { + + public static boolean canConvertStringToInteger(String str) { + } + + public static boolean isInRange(List inputDigits) { + } +} diff --git a/src/main/java/baseball/View.java b/src/main/java/baseball/View.java new file mode 100644 index 000000000..a3622f84b --- /dev/null +++ b/src/main/java/baseball/View.java @@ -0,0 +1,8 @@ +package baseball; + +public class View { + + public void print(JudgementResult result) { + } + +} From 27d350b62c6f2acfea15e8825ce6a2ff20d56561 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=EC=86=90=EB=B3=91=EC=9E=AC?= Date: Thu, 25 May 2023 22:46:05 +0900 Subject: [PATCH 03/52] =?UTF-8?q?Docs:=20=EC=9C=A0=EC=8A=A4=EC=BC=80?= =?UTF-8?q?=EC=9D=B4=EC=8A=A4=20=EC=B6=94=EA=B0=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- README.md | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/README.md b/README.md index 24197e595..d66fc5903 100644 --- a/README.md +++ b/README.md @@ -4,6 +4,11 @@ - 미션은 **기능 요구사항, 프로그래밍 요구사항, 과제 진행 요구사항** 세 가지로 구성되어 있다. - 세 개의 요구사항을 만족하기 위해 노력한다. 특히 기능을 구현하기 전에 기능 목록을 만들고, 기능 단위로 커밋 하는 방식으로 진행한다. +## 유스케이스 +- 게임을 시작하라 +- 게임을 재시작하라 +- 게임을 종료하라 + ## 기능 목록 - 게임 From d8a7cff610c06cf311d9da56c1ebe4b352101967 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=EC=86=90=EB=B3=91=EC=9E=AC?= Date: Thu, 25 May 2023 22:46:25 +0900 Subject: [PATCH 04/52] =?UTF-8?q?Docs:=20=EB=8F=84=EB=A9=94=EC=9D=B8=20?= =?UTF-8?q?=EB=AA=A8=EB=8D=B8=20=EC=B6=94=EA=B0=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- README.md | 2 ++ img.png | Bin 0 -> 60793 bytes 2 files changed, 2 insertions(+) create mode 100644 img.png diff --git a/README.md b/README.md index d66fc5903..d2bfd3e1d 100644 --- a/README.md +++ b/README.md @@ -9,6 +9,8 @@ - 게임을 재시작하라 - 게임을 종료하라 +## 도메인 모델 +![img.png](img.png) ## 기능 목록 - 게임 diff --git a/img.png b/img.png new file mode 100644 index 0000000000000000000000000000000000000000..5d4b7d136976ef5d9d7f603342af12902e38ae07 GIT binary patch literal 60793 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 rVb3FAwb7uG30TW*b{HDz*^{0 Date: Thu, 25 May 2023 22:51:22 +0900 Subject: [PATCH 05/52] =?UTF-8?q?Feat:=20=EA=B2=8C=EC=9E=84=20=EC=8B=9C?= =?UTF-8?q?=EC=9E=91=20=EA=B8=B0=EB=8A=A5=20=EC=B6=94=EA=B0=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/main/java/baseball/Application.java | 9 ++++++- src/main/java/baseball/Game.java | 22 ++++++++++++++++ src/main/java/baseball/JudgementResult.java | 28 +++++++++++++++++++++ 3 files changed, 58 insertions(+), 1 deletion(-) create mode 100644 src/main/java/baseball/JudgementResult.java diff --git a/src/main/java/baseball/Application.java b/src/main/java/baseball/Application.java index 7f1901b8b..4f43177c2 100644 --- a/src/main/java/baseball/Application.java +++ b/src/main/java/baseball/Application.java @@ -2,6 +2,13 @@ public class Application { public static void main(String[] args) { - //TODO: 숫자 야구 게임 구현 + + Player player = new Player(); + Opponent computer = new Opponent(); + Referee referee = new Referee(player, computer); + View view = new View(); + + Game game = new Game(referee, view); + game.run(); } } diff --git a/src/main/java/baseball/Game.java b/src/main/java/baseball/Game.java index eb2161fcf..308db42d1 100644 --- a/src/main/java/baseball/Game.java +++ b/src/main/java/baseball/Game.java @@ -4,7 +4,29 @@ public class Game { + private Referee referee; + + private View view; + + private boolean isRunning; + + public Game(Referee referee, View view) { + this.referee = referee; + this.view = view; + } + public void run() { + isRunning = true; + + while (isRunning) { + JudgementResult judgementResult = referee.judge(); + view.print(judgementResult); + checkKeepRunning(judgementResult); + } + } + + private void checkKeepRunning(JudgementResult judgementResult) { + } } diff --git a/src/main/java/baseball/JudgementResult.java b/src/main/java/baseball/JudgementResult.java new file mode 100644 index 000000000..d620daecb --- /dev/null +++ b/src/main/java/baseball/JudgementResult.java @@ -0,0 +1,28 @@ +package baseball; + +public class JudgementResult { + + private final int numberOfStrike; + + private final int numberOfBall; + + private final boolean isGameOver; + + public JudgementResult(int numberOfStrike, int numberOfBall, boolean isGameOver) { + this.numberOfStrike = numberOfStrike; + this.numberOfBall = numberOfBall; + this.isGameOver = isGameOver; + } + + public int getNumberOfStrike() { + return numberOfStrike; + } + + public int getNumberOfBall() { + return numberOfBall; + } + + public boolean isGameOver() { + return isGameOver; + } +} From 6ff265b41ab4e631a648f5e78df786ed9833ddc6 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=EC=86=90=EB=B3=91=EC=9E=AC?= Date: Thu, 25 May 2023 23:23:12 +0900 Subject: [PATCH 06/52] =?UTF-8?q?Docs:=20=ED=99=94=EB=A9=B4=20=EA=B8=B0?= =?UTF-8?q?=EB=8A=A5=20=EC=B6=94=EA=B0=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- README.md | 1 + 1 file changed, 1 insertion(+) diff --git a/README.md b/README.md index d2bfd3e1d..a65a4edd7 100644 --- a/README.md +++ b/README.md @@ -20,6 +20,7 @@ - 플레이어와 상대방으로부터 숫자를 받아 스트라이크와 볼 개수를 판단하는 기능 - 게임 재시작 시 상대방에게 숫자 변경을 요청하는 기능 - 화면 + - 숫자 입력 메세지 출력 기능 - 스트라이크와 볼 개수 혹은 낫싱을 출력하는 기능 - 3개의 숫자를 모두 맞혔을 때 게임 종료 메세지를 출력하는 기능 - 게임 재시작 혹은 종료 여부를 입력하도록 출력하는 기능 From 794780067b06f07cd9009bf6b4e6ad5f146862df Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=EC=86=90=EB=B3=91=EC=9E=AC?= Date: Thu, 25 May 2023 23:29:37 +0900 Subject: [PATCH 07/52] =?UTF-8?q?Docs:=20=ED=8C=90=EC=A0=95=20=EA=B2=B0?= =?UTF-8?q?=EA=B3=BC=20=EA=B8=B0=EB=8A=A5=20=EC=B6=94=EA=B0=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- README.md | 3 +++ 1 file changed, 3 insertions(+) diff --git a/README.md b/README.md index a65a4edd7..58528621c 100644 --- a/README.md +++ b/README.md @@ -34,6 +34,9 @@ - 랜덤하게 범위 내의 3자리 숫자를 생성하는 기능 - 심판의 요청에 따라 생성한 숫자를 반환하는 기능 - 게임 재시작 시 랜덤한 숫자를 다시 생성하는 기능 +- 판정 결과 + - 스트라이크 판정 개수로 게임 종료 여부 판단 기능 + - 스트라이크와 볼 판정 개수로 낫싱 여부 판단 기능 ## ✉️ 미션 제출 방법 From f63930c4cda586aef8058665ff77947430e2999a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=EC=86=90=EB=B3=91=EC=9E=AC?= Date: Thu, 25 May 2023 23:48:35 +0900 Subject: [PATCH 08/52] =?UTF-8?q?Refactor:=20=ED=8C=90=EC=A0=95=20?= =?UTF-8?q?=EA=B2=B0=EA=B3=BC=EA=B0=80=20=EC=8A=A4=EC=8A=A4=EB=A1=9C=20?= =?UTF-8?q?=EC=B5=9C=EB=8C=80=20=EC=8A=A4=ED=8A=B8=EB=9D=BC=EC=9D=B4?= =?UTF-8?q?=ED=81=AC=20=EA=B0=9C=EC=88=98=EC=9D=B8=EC=A7=80=20=ED=8C=90?= =?UTF-8?q?=EB=8B=A8=ED=95=98=EB=8F=84=EB=A1=9D=20=EB=B3=80=EA=B2=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/main/java/baseball/JudgementResult.java | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) diff --git a/src/main/java/baseball/JudgementResult.java b/src/main/java/baseball/JudgementResult.java index d620daecb..7a4c356a8 100644 --- a/src/main/java/baseball/JudgementResult.java +++ b/src/main/java/baseball/JudgementResult.java @@ -6,12 +6,12 @@ public class JudgementResult { private final int numberOfBall; - private final boolean isGameOver; + private final int MAX_STRIKE = 3; - public JudgementResult(int numberOfStrike, int numberOfBall, boolean isGameOver) { + + public JudgementResult(int numberOfStrike, int numberOfBall) { this.numberOfStrike = numberOfStrike; this.numberOfBall = numberOfBall; - this.isGameOver = isGameOver; } public int getNumberOfStrike() { @@ -22,7 +22,8 @@ public int getNumberOfBall() { return numberOfBall; } - public boolean isGameOver() { - return isGameOver; + public boolean isMaxStrike() { + return numberOfStrike == MAX_STRIKE; } + } From e4669f68a01756535d42b285d0b18e08d222ffa2 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=EC=86=90=EB=B3=91=EC=9E=AC?= Date: Thu, 25 May 2023 23:50:07 +0900 Subject: [PATCH 09/52] =?UTF-8?q?Docs:=20=ED=8C=90=EC=A0=95=20=EA=B2=B0?= =?UTF-8?q?=EA=B3=BC=EC=97=90=EC=84=9C=20=EA=B2=8C=EC=9E=84=20=EC=9D=98?= =?UTF-8?q?=EC=A1=B4=EC=84=B1=20=EC=A0=9C=EA=B1=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 58528621c..dd3e44f0a 100644 --- a/README.md +++ b/README.md @@ -35,7 +35,7 @@ - 심판의 요청에 따라 생성한 숫자를 반환하는 기능 - 게임 재시작 시 랜덤한 숫자를 다시 생성하는 기능 - 판정 결과 - - 스트라이크 판정 개수로 게임 종료 여부 판단 기능 + - 스트라이크 판정 개수가 최대 스트라이크 개수인지 판단 기능 - 스트라이크와 볼 판정 개수로 낫싱 여부 판단 기능 From f178cb75f4e25b2013799fbcf0958f9e7520d80e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=EC=86=90=EB=B3=91=EC=9E=AC?= Date: Thu, 25 May 2023 23:53:41 +0900 Subject: [PATCH 10/52] =?UTF-8?q?Docs:=20=ED=8C=90=EC=A0=95=20=EA=B2=B0?= =?UTF-8?q?=EA=B3=BC=EC=97=90=EC=84=9C=20=EB=82=AB=EC=8B=B1=20=EC=A0=9C?= =?UTF-8?q?=EA=B1=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- README.md | 1 - 1 file changed, 1 deletion(-) diff --git a/README.md b/README.md index dd3e44f0a..4e201f3a3 100644 --- a/README.md +++ b/README.md @@ -36,7 +36,6 @@ - 게임 재시작 시 랜덤한 숫자를 다시 생성하는 기능 - 판정 결과 - 스트라이크 판정 개수가 최대 스트라이크 개수인지 판단 기능 - - 스트라이크와 볼 판정 개수로 낫싱 여부 판단 기능 ## ✉️ 미션 제출 방법 From 80a6d1b70fa16b7abf2432328c5232a5dd04ca0a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=EC=86=90=EB=B3=91=EC=9E=AC?= Date: Thu, 25 May 2023 23:55:05 +0900 Subject: [PATCH 11/52] =?UTF-8?q?Feat:=20=EA=B2=8C=EC=9E=84=20=EC=9E=AC?= =?UTF-8?q?=EC=8B=9C=EC=9E=91=20=ED=98=B9=EC=9D=80=20=EC=A2=85=EB=A3=8C=20?= =?UTF-8?q?=EA=B8=B0=EB=8A=A5=20=EC=B6=94=EA=B0=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/main/java/baseball/Game.java | 29 +++++++++++++++++++++++++++++ 1 file changed, 29 insertions(+) diff --git a/src/main/java/baseball/Game.java b/src/main/java/baseball/Game.java index 308db42d1..8b361bc89 100644 --- a/src/main/java/baseball/Game.java +++ b/src/main/java/baseball/Game.java @@ -10,6 +10,10 @@ public class Game { private boolean isRunning; + private String RESTART_SIGNAL = "1"; + + private String CLOSE_SIGNAL = "2"; + public Game(Referee referee, View view) { this.referee = referee; this.view = view; @@ -26,7 +30,32 @@ public void run() { } private void checkKeepRunning(JudgementResult judgementResult) { + if (judgementResult.isMaxStrike()) { + checkRestartOrClose(); + } + } + + private void checkRestartOrClose() { + String inputString = Console.readLine(); + + if (inputString.equals(RESTART_SIGNAL)) { + restart(); + } + else if (inputString.equals(CLOSE_SIGNAL)) { + close(); + } + else { + throw new IllegalArgumentException("1 또는 2를 입력해주세요."); + } + + } + + private void restart() { + referee.requestToChangeOpponentNumber(); + } + private void close() { + isRunning = false; } } From 4a1d9e65a27e9fd895177e681edae73bd296d90f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=EC=86=90=EB=B3=91=EC=9E=AC?= Date: Thu, 25 May 2023 23:55:54 +0900 Subject: [PATCH 12/52] =?UTF-8?q?Fix:=20=EA=B2=8C=EC=9E=84=20=EC=A7=84?= =?UTF-8?q?=ED=96=89=20=EC=8B=9C=20=EC=88=AB=EC=9E=90=20=EC=9E=85=EB=A0=A5?= =?UTF-8?q?=20=EB=A9=94=EC=84=B8=EC=A7=80=20=EC=B6=9C=EB=A0=A5=ED=95=98?= =?UTF-8?q?=EB=8F=84=EB=A1=9D=20=EC=88=98=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/main/java/baseball/Game.java | 1 + 1 file changed, 1 insertion(+) diff --git a/src/main/java/baseball/Game.java b/src/main/java/baseball/Game.java index 8b361bc89..9fa538aeb 100644 --- a/src/main/java/baseball/Game.java +++ b/src/main/java/baseball/Game.java @@ -23,6 +23,7 @@ public void run() { isRunning = true; while (isRunning) { + view.printNumberInputMessage(); JudgementResult judgementResult = referee.judge(); view.print(judgementResult); checkKeepRunning(judgementResult); From 81113c9b55a919fee0559829710672c088519709 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=EC=86=90=EB=B3=91=EC=9E=AC?= Date: Fri, 26 May 2023 00:03:08 +0900 Subject: [PATCH 13/52] =?UTF-8?q?Style:=20=EC=9D=98=EB=AF=B8=EC=97=86?= =?UTF-8?q?=EB=8A=94=20=EC=A4=84=EA=B0=84=EA=B2=A9=20=EC=A0=9C=EA=B1=B0=20?= =?UTF-8?q?=EB=B0=8F=20=EC=9E=90=EB=B0=94=20=EC=BD=94=EB=93=9C=20=EC=BB=A8?= =?UTF-8?q?=EB=B2=A4=EC=85=98=20=EC=A0=81=EC=9A=A9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/main/java/baseball/Game.java | 8 ++------ 1 file changed, 2 insertions(+), 6 deletions(-) diff --git a/src/main/java/baseball/Game.java b/src/main/java/baseball/Game.java index 9fa538aeb..a2d06074f 100644 --- a/src/main/java/baseball/Game.java +++ b/src/main/java/baseball/Game.java @@ -41,14 +41,11 @@ private void checkRestartOrClose() { if (inputString.equals(RESTART_SIGNAL)) { restart(); - } - else if (inputString.equals(CLOSE_SIGNAL)) { + } else if (inputString.equals(CLOSE_SIGNAL)) { close(); - } - else { + } else { throw new IllegalArgumentException("1 또는 2를 입력해주세요."); } - } private void restart() { @@ -58,5 +55,4 @@ private void restart() { private void close() { isRunning = false; } - } From 91439329a951d110f1b27b127ade01899f981008 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=EC=86=90=EB=B3=91=EC=9E=AC?= Date: Fri, 26 May 2023 00:05:03 +0900 Subject: [PATCH 14/52] =?UTF-8?q?Fix:=20=EC=83=81=EC=88=98=EC=97=90=20fina?= =?UTF-8?q?l=20=ED=82=A4=EC=9B=8C=EB=93=9C=20=EC=B6=94=EA=B0=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/main/java/baseball/Game.java | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/main/java/baseball/Game.java b/src/main/java/baseball/Game.java index a2d06074f..282bd618a 100644 --- a/src/main/java/baseball/Game.java +++ b/src/main/java/baseball/Game.java @@ -10,9 +10,9 @@ public class Game { private boolean isRunning; - private String RESTART_SIGNAL = "1"; + private final String RESTART_SIGNAL = "1"; - private String CLOSE_SIGNAL = "2"; + private final String CLOSE_SIGNAL = "2"; public Game(Referee referee, View view) { this.referee = referee; From e42de438e06e424bd83fee9dd907f4bd2c4bcba8 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=EC=86=90=EB=B3=91=EC=9E=AC?= Date: Fri, 26 May 2023 00:07:27 +0900 Subject: [PATCH 15/52] =?UTF-8?q?Design:=20View=20=EA=B3=B5=EC=9A=A9=20?= =?UTF-8?q?=EC=9D=B8=ED=84=B0=ED=8E=98=EC=9D=B4=EC=8A=A4=20=EC=B6=94?= =?UTF-8?q?=EA=B0=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/main/java/baseball/View.java | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/src/main/java/baseball/View.java b/src/main/java/baseball/View.java index a3622f84b..aa505305d 100644 --- a/src/main/java/baseball/View.java +++ b/src/main/java/baseball/View.java @@ -2,7 +2,12 @@ public class View { + public void printNumberInputMessage() { + + } + public void print(JudgementResult result) { } + } From 148e28d0b2a1099378ba16c55c57574a9f930638 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=EC=86=90=EB=B3=91=EC=9E=AC?= Date: Fri, 26 May 2023 01:41:56 +0900 Subject: [PATCH 16/52] =?UTF-8?q?Feat:=20=EC=8B=AC=ED=8C=90=EC=9D=B4=20?= =?UTF-8?q?=EC=8A=A4=ED=8A=B8=EB=9D=BC=EC=9D=B4=ED=81=AC=EC=99=80=20?= =?UTF-8?q?=EB=B3=BC=20=EA=B0=9C=EC=88=98=20=ED=8C=90=EC=A0=95=ED=95=98?= =?UTF-8?q?=EB=8A=94=20=EA=B8=B0=EB=8A=A5=20=EC=B6=94=EA=B0=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/main/java/baseball/Referee.java | 36 +++++++++++++++++++++++++++++ 1 file changed, 36 insertions(+) diff --git a/src/main/java/baseball/Referee.java b/src/main/java/baseball/Referee.java index d1990ffe6..271983759 100644 --- a/src/main/java/baseball/Referee.java +++ b/src/main/java/baseball/Referee.java @@ -1,13 +1,49 @@ package baseball; import java.util.List; +import java.util.stream.IntStream; public class Referee { + private Player player; + + private Opponent computer; + + public Referee(Player player, Opponent computer) { + this.player = player; + this.computer = computer; + } public JudgementResult judge() { + List playerNumber = player.getNumber(); + List opponentNumber = computer.getTargetNumber(); + + return compare(playerNumber, opponentNumber); } + private JudgementResult compare(List playerNumber, List opponentNumber) { + int numberOfStrike = countStrike(playerNumber, opponentNumber); + int numberOfBall = countBall(playerNumber, opponentNumber); + + return new JudgementResult(numberOfStrike, numberOfBall); + } + + private int countStrike(List playerNumber, List opponentNumber) { + return (int) IntStream + .rangeClosed(0, 2) + .filter(i -> playerNumber.get(i) == opponentNumber.get(i)) + .count(); + } + + private int countBall(List playerNumber, List opponentNumber) { + return (int) IntStream + .rangeClosed(0, 2) + .filter(playerNumberIndex -> { + int opponentNumberIndex = opponentNumber.indexOf(playerNumber.get(playerNumberIndex)); + return opponentNumberIndex != playerNumberIndex && opponentNumberIndex != -1;}) + .count(); + } public void requestToChangeOpponentNumber() { + } } From 9face116c9940f28e1864a86e4d456e2f062cc41 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=EC=86=90=EB=B3=91=EC=9E=AC?= Date: Fri, 26 May 2023 01:45:24 +0900 Subject: [PATCH 17/52] =?UTF-8?q?Feat:=20=EA=B2=8C=EC=9E=84=20=EC=9E=AC?= =?UTF-8?q?=EC=8B=9C=EC=9E=91=20=EC=8B=9C=20=EC=83=81=EB=8C=80=EB=B0=A9?= =?UTF-8?q?=EC=97=90=EA=B2=8C=20=EC=88=AB=EC=9E=90=20=EB=B3=80=EA=B2=BD=20?= =?UTF-8?q?=EC=9A=94=EC=B2=AD=20=EA=B8=B0=EB=8A=A5=20=EC=B6=94=EA=B0=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/main/java/baseball/Referee.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/java/baseball/Referee.java b/src/main/java/baseball/Referee.java index 271983759..6cec89a39 100644 --- a/src/main/java/baseball/Referee.java +++ b/src/main/java/baseball/Referee.java @@ -44,6 +44,6 @@ private int countBall(List playerNumber, List opponentNumber) } public void requestToChangeOpponentNumber() { - + computer.resetNumber(); } } From 298039ee1ad33f6b9d7bd8eb1ce3a5c11256bcf8 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=EC=86=90=EB=B3=91=EC=9E=AC?= Date: Fri, 26 May 2023 01:46:29 +0900 Subject: [PATCH 18/52] =?UTF-8?q?Refactor:=20=EC=83=81=EB=8C=80=EB=B0=A9?= =?UTF-8?q?=20=EB=A9=94=EC=86=8C=EB=93=9C=20=EB=84=A4=EC=9E=84=20=EB=B3=80?= =?UTF-8?q?=EA=B2=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/main/java/baseball/Opponent.java | 6 ++---- src/main/java/baseball/Referee.java | 2 +- 2 files changed, 3 insertions(+), 5 deletions(-) diff --git a/src/main/java/baseball/Opponent.java b/src/main/java/baseball/Opponent.java index 39a6b446c..16273ee33 100644 --- a/src/main/java/baseball/Opponent.java +++ b/src/main/java/baseball/Opponent.java @@ -1,16 +1,14 @@ package baseball; -import camp.nextstep.edu.missionutils.Randoms; -import java.util.LinkedList; import java.util.List; public class Opponent { - public List getTargetNumber() { + public List getNumber() { } - public void resetTargetNumber() { + public void resetNumber() { } } diff --git a/src/main/java/baseball/Referee.java b/src/main/java/baseball/Referee.java index 6cec89a39..be925fad0 100644 --- a/src/main/java/baseball/Referee.java +++ b/src/main/java/baseball/Referee.java @@ -15,7 +15,7 @@ public Referee(Player player, Opponent computer) { } public JudgementResult judge() { List playerNumber = player.getNumber(); - List opponentNumber = computer.getTargetNumber(); + List opponentNumber = computer.getNumber(); return compare(playerNumber, opponentNumber); } From 83ba3be76e9d0c951f238d2db3581350d23821ed Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=EC=86=90=EB=B3=91=EC=9E=AC?= Date: Fri, 26 May 2023 02:09:47 +0900 Subject: [PATCH 19/52] =?UTF-8?q?Feat:=20=EC=83=81=EB=8C=80=EB=B0=A9=20?= =?UTF-8?q?=EC=88=AB=EC=9E=90=20=EB=B0=98=ED=99=98=20=EA=B8=B0=EB=8A=A5=20?= =?UTF-8?q?=EC=B6=94=EA=B0=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/main/java/baseball/Opponent.java | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/src/main/java/baseball/Opponent.java b/src/main/java/baseball/Opponent.java index 16273ee33..81989f051 100644 --- a/src/main/java/baseball/Opponent.java +++ b/src/main/java/baseball/Opponent.java @@ -1,10 +1,22 @@ package baseball; +import camp.nextstep.edu.missionutils.Randoms; +import java.util.LinkedList; import java.util.List; +import java.util.stream.IntStream; public class Opponent { + private List number; + public List getNumber() { + if (number == null) { + generateNumber(); + } + return number; + } + + private void generateNumber() { } From 41aca22ae02dc06398440fc7468e0e4c70f6f2b7 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=EC=86=90=EB=B3=91=EC=9E=AC?= Date: Fri, 26 May 2023 02:10:29 +0900 Subject: [PATCH 20/52] =?UTF-8?q?Feat:=20=EB=9E=9C=EB=8D=A4=ED=95=98?= =?UTF-8?q?=EA=B2=8C=20=EB=B2=94=EC=9C=84=20=EB=82=B4=203=EC=9E=90?= =?UTF-8?q?=EB=A6=AC=20=EC=88=AB=EC=9E=90=20=EC=83=9D=EC=84=B1=20=EA=B8=B0?= =?UTF-8?q?=EB=8A=A5=20=EC=B6=94=EA=B0=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/main/java/baseball/Opponent.java | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/src/main/java/baseball/Opponent.java b/src/main/java/baseball/Opponent.java index 81989f051..90cbe90c4 100644 --- a/src/main/java/baseball/Opponent.java +++ b/src/main/java/baseball/Opponent.java @@ -17,7 +17,10 @@ public List getNumber() { } private void generateNumber() { - + for (int i = 0; i < 3; i++) { + int randomNumber = Randoms.pickNumberInRange(1, 9); + number.add(randomNumber); + } } public void resetNumber() { From 1a3ad268d824671d9d7ade253d3418d6aeb8eea7 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=EC=86=90=EB=B3=91=EC=9E=AC?= Date: Fri, 26 May 2023 02:11:24 +0900 Subject: [PATCH 21/52] =?UTF-8?q?Feat:=20=EC=83=81=EB=8C=80=EB=B0=A9=20?= =?UTF-8?q?=EC=88=AB=EC=9E=90=20=EC=B4=88=EA=B8=B0=ED=99=94=20=EA=B8=B0?= =?UTF-8?q?=EB=8A=A5=20=EC=B6=94=EA=B0=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/main/java/baseball/Opponent.java | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/main/java/baseball/Opponent.java b/src/main/java/baseball/Opponent.java index 90cbe90c4..01cf0b05a 100644 --- a/src/main/java/baseball/Opponent.java +++ b/src/main/java/baseball/Opponent.java @@ -24,6 +24,7 @@ private void generateNumber() { } public void resetNumber() { - + number.clear(); + generateNumber(); } } From 83985e04a65bc2672ce289234d54055a48d41ae1 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=EC=86=90=EB=B3=91=EC=9E=AC?= Date: Fri, 26 May 2023 02:29:35 +0900 Subject: [PATCH 22/52] =?UTF-8?q?Feat:=20=ED=94=8C=EB=A0=88=EC=9D=B4?= =?UTF-8?q?=EC=96=B4=20=EC=88=AB=EC=9E=90=20=EB=B0=98=ED=99=98=20=EA=B8=B0?= =?UTF-8?q?=EB=8A=A5=20=EC=B6=94=EA=B0=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/main/java/baseball/Player.java | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/src/main/java/baseball/Player.java b/src/main/java/baseball/Player.java index e179d8ea4..3d3858aa4 100644 --- a/src/main/java/baseball/Player.java +++ b/src/main/java/baseball/Player.java @@ -5,9 +5,13 @@ public class Player { - public List getNumber() { + private List number; + public List getNumber() { + String input = Console.readLine(); + Validator.validate(input); + number = convertStringToIntegerList(input); + return number; } - } From 7f6bdbf5e821bccc794a405ae3e895a53ef946b6 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=EC=86=90=EB=B3=91=EC=9E=AC?= Date: Fri, 26 May 2023 02:30:13 +0900 Subject: [PATCH 23/52] =?UTF-8?q?Feat:=20=ED=94=8C=EB=A0=88=EC=9D=B4?= =?UTF-8?q?=EC=96=B4=20=EC=9E=85=EB=A0=A5=20=ED=83=80=EC=9E=85=20=EB=B3=80?= =?UTF-8?q?=ED=99=98=20=EA=B8=B0=EB=8A=A5=20=EC=B6=94=EA=B0=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/main/java/baseball/Player.java | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/src/main/java/baseball/Player.java b/src/main/java/baseball/Player.java index 3d3858aa4..c4f84efbd 100644 --- a/src/main/java/baseball/Player.java +++ b/src/main/java/baseball/Player.java @@ -1,7 +1,9 @@ package baseball; import camp.nextstep.edu.missionutils.Console; +import java.util.Arrays; import java.util.List; +import java.util.stream.Collectors; public class Player { @@ -14,4 +16,10 @@ public List getNumber() { return number; } -} + private List convertStringToIntegerList(String input) { + return Arrays + .stream(input.split("")) + .map(Integer::parseInt) + .collect(Collectors.toList()); + } +} \ No newline at end of file From 994b5b83c1d079ff21ab5bd40e66b573fb99f434 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=EC=86=90=EB=B3=91=EC=9E=AC?= Date: Fri, 26 May 2023 02:31:05 +0900 Subject: [PATCH 24/52] =?UTF-8?q?Design:=20Validator=20=EC=9D=B8=ED=84=B0?= =?UTF-8?q?=ED=8E=98=EC=9D=B4=EC=8A=A4=20=EB=B3=80=EA=B2=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/main/java/baseball/Validator.java | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/src/main/java/baseball/Validator.java b/src/main/java/baseball/Validator.java index 9c7b4e740..71bc4718a 100644 --- a/src/main/java/baseball/Validator.java +++ b/src/main/java/baseball/Validator.java @@ -4,9 +4,8 @@ public class Validator { - public static boolean canConvertStringToInteger(String str) { - } + public static void validate(String input) { - public static boolean isInRange(List inputDigits) { } + } From 7b4b3a0b0e8b238d4ebdb71dd579440ab560ac7d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=EC=86=90=EB=B3=91=EC=9E=AC?= Date: Fri, 26 May 2023 03:00:41 +0900 Subject: [PATCH 25/52] =?UTF-8?q?Docs:=20=EC=9C=A0=ED=9A=A8=EC=84=B1=20?= =?UTF-8?q?=EA=B2=80=EC=82=AC=EA=B8=B0=20=EA=B8=B0=EB=8A=A5=20=EB=AC=B8?= =?UTF-8?q?=EC=84=9C=20=EC=88=98=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- README.md | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/README.md b/README.md index 4e201f3a3..bcc7c51af 100644 --- a/README.md +++ b/README.md @@ -29,7 +29,9 @@ - 심판의 요청에 따라 입력받은 유효한 숫자를 반환하는 기능 - 유효성 검사기 - 플레이어가 콘솔로 받은 입력이 정수인지 판단하는 기능 - - 플레이어가 콘솔로 받은 입력이 입력 범위 내에 존재하는지 판단하는 기능 + - 플레이어가 콘솔로 받은 입력에 중복된 수가 있는지 판단하는 기능 + - 플레이어가 콘솔로 받은 입력이 입력 숫자 범위 내에 존재하는지 판단하는 기능 + - 플레이어가 콘솔로 받은 입력의 길이가 올바른지 판단하는 기능 - 상대방(컴퓨터) - 랜덤하게 범위 내의 3자리 숫자를 생성하는 기능 - 심판의 요청에 따라 생성한 숫자를 반환하는 기능 From 48dd348c35de00a0b6360e05d06fc0a3e0ce946d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=EC=86=90=EB=B3=91=EC=9E=AC?= Date: Fri, 26 May 2023 03:02:56 +0900 Subject: [PATCH 26/52] =?UTF-8?q?Feat:=20=ED=94=8C=EB=A0=88=EC=9D=B4?= =?UTF-8?q?=EC=96=B4=EA=B0=80=20=EC=BD=98=EC=86=94=EB=A1=9C=20=EB=B0=9B?= =?UTF-8?q?=EC=9D=80=20=EC=9E=85=EB=A0=A5=EC=9D=B4=20=EC=88=AB=EC=9E=90?= =?UTF-8?q?=EC=9D=B8=EC=A7=80=20=ED=8C=90=EB=8B=A8=ED=95=98=EB=8A=94=20?= =?UTF-8?q?=EA=B8=B0=EB=8A=A5=20=EC=B6=94=EA=B0=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/main/java/baseball/Validator.java | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/src/main/java/baseball/Validator.java b/src/main/java/baseball/Validator.java index 71bc4718a..a490777a6 100644 --- a/src/main/java/baseball/Validator.java +++ b/src/main/java/baseball/Validator.java @@ -1,11 +1,14 @@ package baseball; -import java.util.List; - public class Validator { public static void validate(String input) { + checkTypeConverting(input); + } + private static void checkTypeConverting(String input) { + if (input == null || !input.matches("[0-9]+")) { + throw new IllegalArgumentException("입력값에 숫자가 아닌 다른 값이 포함돼있습니다. 숫자만 입력해주세요."); + } } - } From 5a5ebf30ff82256665095f655281093006ead6ac Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=EC=86=90=EB=B3=91=EC=9E=AC?= Date: Fri, 26 May 2023 03:03:50 +0900 Subject: [PATCH 27/52] =?UTF-8?q?Feat:=20=ED=94=8C=EB=A0=88=EC=9D=B4?= =?UTF-8?q?=EC=96=B4=EA=B0=80=20=EC=BD=98=EC=86=94=EB=A1=9C=20=EB=B0=9B?= =?UTF-8?q?=EC=9D=80=20=EC=9E=85=EB=A0=A5=EC=97=90=20=EC=A4=91=EB=B3=B5?= =?UTF-8?q?=EB=90=9C=20=EC=88=98=EA=B0=80=20=EC=9E=88=EB=8A=94=EC=A7=80=20?= =?UTF-8?q?=ED=8C=90=EB=8B=A8=ED=95=98=EB=8A=94=20=EA=B8=B0=EB=8A=A5=20?= =?UTF-8?q?=EC=B6=94=EA=B0=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/main/java/baseball/Validator.java | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/src/main/java/baseball/Validator.java b/src/main/java/baseball/Validator.java index a490777a6..fc17e7df8 100644 --- a/src/main/java/baseball/Validator.java +++ b/src/main/java/baseball/Validator.java @@ -1,9 +1,12 @@ package baseball; +import java.util.Arrays; + public class Validator { public static void validate(String input) { checkTypeConverting(input); + checkDuplication(input); } private static void checkTypeConverting(String input) { @@ -11,4 +14,15 @@ private static void checkTypeConverting(String input) { throw new IllegalArgumentException("입력값에 숫자가 아닌 다른 값이 포함돼있습니다. 숫자만 입력해주세요."); } } + + private static void checkDuplication(String input) { + long nonDuplicateWordCount = Arrays + .stream(input.split("")) + .distinct() + .count(); + + if (nonDuplicateWordCount != input.length()) { + throw new IllegalArgumentException("입력값에 중복이 포함돼있습니다. 중복되지 않는 숫자를 입력해주세요."); + } + } } From fcb643edf61cea92dab1ccc7e51488bcc564c386 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=EC=86=90=EB=B3=91=EC=9E=AC?= Date: Fri, 26 May 2023 03:04:14 +0900 Subject: [PATCH 28/52] =?UTF-8?q?Docs:=20=EC=9C=A0=ED=9A=A8=EC=84=B1=20?= =?UTF-8?q?=EA=B2=80=EC=82=AC=20=EA=B8=B0=EB=8A=A5=20=EB=AC=B8=EC=84=9C=20?= =?UTF-8?q?=EC=88=98=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index bcc7c51af..f39e38585 100644 --- a/README.md +++ b/README.md @@ -28,7 +28,7 @@ - 콘솔에게서 문자열타입으로 숫자를 입력받아 유효성 검사를 하는 기능 - 심판의 요청에 따라 입력받은 유효한 숫자를 반환하는 기능 - 유효성 검사기 - - 플레이어가 콘솔로 받은 입력이 정수인지 판단하는 기능 + - 플레이어가 콘솔로 받은 입력이 숫자인지 판단하는 기능 - 플레이어가 콘솔로 받은 입력에 중복된 수가 있는지 판단하는 기능 - 플레이어가 콘솔로 받은 입력이 입력 숫자 범위 내에 존재하는지 판단하는 기능 - 플레이어가 콘솔로 받은 입력의 길이가 올바른지 판단하는 기능 From 846e8a686c549ceb6e43089e178418576f3aad61 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=EC=86=90=EB=B3=91=EC=9E=AC?= Date: Fri, 26 May 2023 03:05:10 +0900 Subject: [PATCH 29/52] =?UTF-8?q?Feat:=20=ED=94=8C=EB=A0=88=EC=9D=B4?= =?UTF-8?q?=EC=96=B4=EA=B0=80=20=EC=BD=98=EC=86=94=EB=A1=9C=20=EB=B0=9B?= =?UTF-8?q?=EC=9D=80=20=EC=9E=85=EB=A0=A5=EC=9D=B4=20=EC=9E=85=EB=A0=A5=20?= =?UTF-8?q?=EC=88=AB=EC=9E=90=20=EB=B2=94=EC=9C=84=20=EB=82=B4=EC=97=90=20?= =?UTF-8?q?=EC=A1=B4=EC=9E=AC=ED=95=98=EB=8A=94=EC=A7=80=20=ED=8C=90?= =?UTF-8?q?=EB=8B=A8=ED=95=98=EB=8A=94=20=EA=B8=B0=EB=8A=A5=20=EC=B6=94?= =?UTF-8?q?=EA=B0=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/main/java/baseball/Validator.java | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/src/main/java/baseball/Validator.java b/src/main/java/baseball/Validator.java index fc17e7df8..ba37ffd1b 100644 --- a/src/main/java/baseball/Validator.java +++ b/src/main/java/baseball/Validator.java @@ -7,6 +7,7 @@ public class Validator { public static void validate(String input) { checkTypeConverting(input); checkDuplication(input); + checkContainZero(input); } private static void checkTypeConverting(String input) { @@ -25,4 +26,10 @@ private static void checkDuplication(String input) { throw new IllegalArgumentException("입력값에 중복이 포함돼있습니다. 중복되지 않는 숫자를 입력해주세요."); } } + + private static void checkContainZero(String input) { + if (input.contains("0")) { + throw new IllegalArgumentException("입력 값에 0은 포함될 수 없습니다. 1부터 9까지 숫자만 입력해주세요."); + } + } } From ad02ffb2c52457a474b9aed42a2ac13b59685afd Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=EC=86=90=EB=B3=91=EC=9E=AC?= Date: Fri, 26 May 2023 03:06:17 +0900 Subject: [PATCH 30/52] =?UTF-8?q?Feat:=20=ED=94=8C=EB=A0=88=EC=9D=B4?= =?UTF-8?q?=EC=96=B4=EA=B0=80=20=EC=BD=98=EC=86=94=EB=A1=9C=20=EB=B0=9B?= =?UTF-8?q?=EC=9D=80=20=EC=9E=85=EB=A0=A5=EC=9D=98=20=EA=B8=B8=EC=9D=B4?= =?UTF-8?q?=EA=B0=80=20=EC=98=AC=EB=B0=94=EB=A5=B8=EC=A7=80=20=ED=8C=90?= =?UTF-8?q?=EB=8B=A8=ED=95=98=EB=8A=94=20=EA=B8=B0=EB=8A=A5=20=EC=B6=94?= =?UTF-8?q?=EA=B0=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/main/java/baseball/Validator.java | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/src/main/java/baseball/Validator.java b/src/main/java/baseball/Validator.java index ba37ffd1b..9f13af98b 100644 --- a/src/main/java/baseball/Validator.java +++ b/src/main/java/baseball/Validator.java @@ -8,6 +8,7 @@ public static void validate(String input) { checkTypeConverting(input); checkDuplication(input); checkContainZero(input); + checkLength(input); } private static void checkTypeConverting(String input) { @@ -32,4 +33,10 @@ private static void checkContainZero(String input) { throw new IllegalArgumentException("입력 값에 0은 포함될 수 없습니다. 1부터 9까지 숫자만 입력해주세요."); } } + + private static void checkLength(String input) { + if (input.length() != 3) { + throw new IllegalArgumentException("입력값의 개수가 유효하지 않습니다. 3개의 숫자를 입력해주세요."); + } + } } From 211d0661a90f9128dc705ae3bca6efbf6465891b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=EC=86=90=EB=B3=91=EC=9E=AC?= Date: Fri, 26 May 2023 03:10:14 +0900 Subject: [PATCH 31/52] =?UTF-8?q?Feat:=20=EC=88=AB=EC=9E=90=20=EC=9E=85?= =?UTF-8?q?=EB=A0=A5=20=EB=A9=94=EC=84=B8=EC=A7=80=20=EC=B6=9C=EB=A0=A5=20?= =?UTF-8?q?=EA=B8=B0=EB=8A=A5=20=EC=B6=94=EA=B0=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/main/java/baseball/View.java | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/src/main/java/baseball/View.java b/src/main/java/baseball/View.java index aa505305d..f8670c5da 100644 --- a/src/main/java/baseball/View.java +++ b/src/main/java/baseball/View.java @@ -3,11 +3,9 @@ public class View { public void printNumberInputMessage() { - + System.out.print("숫자를 입력해주세요 : "); } public void print(JudgementResult result) { } - - } From dd50429fadbd120e6d41d11a91f03a7abd1f43f5 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=EC=86=90=EB=B3=91=EC=9E=AC?= Date: Fri, 26 May 2023 03:14:26 +0900 Subject: [PATCH 32/52] =?UTF-8?q?Docs:=20=ED=99=94=EB=A9=B4=20=EC=B6=9C?= =?UTF-8?q?=EB=A0=A5=20=EA=B8=B0=EB=8A=A5=20=EB=AC=B8=EC=84=9C=20=EC=88=98?= =?UTF-8?q?=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- README.md | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/README.md b/README.md index f39e38585..4809d7b7c 100644 --- a/README.md +++ b/README.md @@ -22,8 +22,7 @@ - 화면 - 숫자 입력 메세지 출력 기능 - 스트라이크와 볼 개수 혹은 낫싱을 출력하는 기능 - - 3개의 숫자를 모두 맞혔을 때 게임 종료 메세지를 출력하는 기능 - - 게임 재시작 혹은 종료 여부를 입력하도록 출력하는 기능 + - 3개의 숫자를 모두 맞혔을 때 게임 종료 메세지와 게임 재시작 혹은 종료 여부를 입력하도록 출력하는 기능 - 플레이어 - 콘솔에게서 문자열타입으로 숫자를 입력받아 유효성 검사를 하는 기능 - 심판의 요청에 따라 입력받은 유효한 숫자를 반환하는 기능 From 740f8f9bb8dc0de53c9231580ec6e49c6da93f36 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=EC=86=90=EB=B3=91=EC=9E=AC?= Date: Fri, 26 May 2023 03:15:07 +0900 Subject: [PATCH 33/52] =?UTF-8?q?Feat:=20=EA=B2=8C=EC=9E=84=20=EC=A2=85?= =?UTF-8?q?=EB=A3=8C=20=EB=A9=94=EC=84=B8=EC=A7=80=EC=99=80=20=EA=B2=8C?= =?UTF-8?q?=EC=9E=84=20=EC=9E=AC=EC=8B=9C=EC=9E=91=20=ED=98=B9=EC=9D=80=20?= =?UTF-8?q?=EC=A2=85=EB=A3=8C=20=EC=97=AC=EB=B6=80=EB=A5=BC=20=EC=9E=85?= =?UTF-8?q?=EB=A0=A5=ED=95=98=EB=8F=84=EB=A1=9D=20=EC=B6=9C=EB=A0=A5?= =?UTF-8?q?=ED=95=98=EB=8A=94=20=EA=B8=B0=EB=8A=A5=20=EC=B6=94=EA=B0=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/main/java/baseball/View.java | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/src/main/java/baseball/View.java b/src/main/java/baseball/View.java index f8670c5da..dde011096 100644 --- a/src/main/java/baseball/View.java +++ b/src/main/java/baseball/View.java @@ -7,5 +7,11 @@ public void printNumberInputMessage() { } public void print(JudgementResult result) { + + } + + private void printGameOverMessage() { + System.out.println("3개의 숫자를 모두 맞히셨습니다! 게임 종료"); + System.out.println("게임을 새로 시작하려면 1, 종료하려면 2를 입력하세요."); } } From 6423ab855b235942bd0e63345282f9373a090ff4 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=EC=86=90=EB=B3=91=EC=9E=AC?= Date: Fri, 26 May 2023 03:26:04 +0900 Subject: [PATCH 34/52] =?UTF-8?q?Feat:=20=EC=8A=A4=ED=8A=B8=EB=9D=BC?= =?UTF-8?q?=EC=9D=B4=ED=81=AC=EC=99=80=20=EB=B3=BC=20=EA=B0=9C=EC=88=98=20?= =?UTF-8?q?=ED=98=B9=EC=9D=80=20=EB=82=AB=EC=8B=B1=EC=9D=84=20=EC=B6=9C?= =?UTF-8?q?=EB=A0=A5=ED=95=98=EB=8A=94=20=EA=B8=B0=EB=8A=A5=20=EC=B6=94?= =?UTF-8?q?=EA=B0=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/main/java/baseball/View.java | 21 +++++++++++++++++++++ 1 file changed, 21 insertions(+) diff --git a/src/main/java/baseball/View.java b/src/main/java/baseball/View.java index dde011096..4917c9c97 100644 --- a/src/main/java/baseball/View.java +++ b/src/main/java/baseball/View.java @@ -7,7 +7,28 @@ public void printNumberInputMessage() { } public void print(JudgementResult result) { + if (result.isMaxStrike()) { + printGameOverMessage(); + return; + } + int numberOfBall = result.getNumberOfBall(); + int numberOfStrike = result.getNumberOfStrike(); + StringBuilder stringBuilder = new StringBuilder(); + + if (numberOfBall > 0) { + stringBuilder.append(numberOfBall+"볼 "); + } + if (result.getNumberOfStrike() > 0) { + stringBuilder.append(numberOfStrike+"스트라이크 "); + } + String JudgementResultMessage = stringBuilder.toString(); + + if (JudgementResultMessage.isEmpty()) { + System.out.println("낫싱"); + } else { + System.out.println(JudgementResultMessage); + } } private void printGameOverMessage() { From 260fce8fa78a229b039eb24e17acf8db7a590a58 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=EC=86=90=EB=B3=91=EC=9E=AC?= Date: Fri, 26 May 2023 03:36:46 +0900 Subject: [PATCH 35/52] =?UTF-8?q?Fix:=20=EC=83=81=EB=8C=80=EB=B0=A9=20?= =?UTF-8?q?=EC=88=AB=EC=9E=90=20=EC=9D=B8=EC=8A=A4=ED=84=B4=EC=8A=A4?= =?UTF-8?q?=ED=99=94?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/main/java/baseball/Opponent.java | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/main/java/baseball/Opponent.java b/src/main/java/baseball/Opponent.java index 01cf0b05a..2b1ef3810 100644 --- a/src/main/java/baseball/Opponent.java +++ b/src/main/java/baseball/Opponent.java @@ -1,9 +1,8 @@ package baseball; import camp.nextstep.edu.missionutils.Randoms; -import java.util.LinkedList; +import java.util.ArrayList; import java.util.List; -import java.util.stream.IntStream; public class Opponent { @@ -11,6 +10,7 @@ public class Opponent { public List getNumber() { if (number == null) { + number = new ArrayList<>(); generateNumber(); } return number; From 3973b6eb1d20cb72c1e2058cefa5279782ee24c1 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=EC=86=90=EB=B3=91=EC=9E=AC?= Date: Fri, 26 May 2023 03:46:45 +0900 Subject: [PATCH 36/52] =?UTF-8?q?Docs:=20=EC=83=81=EB=8C=80=EB=B0=A9=20?= =?UTF-8?q?=EC=88=AB=EC=9E=90=20=EC=83=9D=EC=84=B1=20=EA=B8=B0=EB=8A=A5=20?= =?UTF-8?q?=EC=88=98=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 4809d7b7c..82b1138df 100644 --- a/README.md +++ b/README.md @@ -32,7 +32,7 @@ - 플레이어가 콘솔로 받은 입력이 입력 숫자 범위 내에 존재하는지 판단하는 기능 - 플레이어가 콘솔로 받은 입력의 길이가 올바른지 판단하는 기능 - 상대방(컴퓨터) - - 랜덤하게 범위 내의 3자리 숫자를 생성하는 기능 + - 랜덤하게 범위 내의 중복되지 않는 3자리 숫자를 생성하는 기능 - 심판의 요청에 따라 생성한 숫자를 반환하는 기능 - 게임 재시작 시 랜덤한 숫자를 다시 생성하는 기능 - 판정 결과 From 666e9d5b3361bdfed85312a055022412a38dff6b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=EC=86=90=EB=B3=91=EC=9E=AC?= Date: Fri, 26 May 2023 03:50:42 +0900 Subject: [PATCH 37/52] =?UTF-8?q?Fix:=20=EC=83=81=EB=8C=80=EB=B0=A9=20?= =?UTF-8?q?=EC=88=AB=EC=9E=90=20=EC=83=9D=EC=84=B1=EC=8B=9C=20=EC=88=AB?= =?UTF-8?q?=EC=9E=90=EA=B0=80=20=EC=A4=91=EB=B3=B5=EB=90=98=EC=A7=80=20?= =?UTF-8?q?=EC=95=8A=EB=8F=84=EB=A1=9D=20=EB=B3=80=EA=B2=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/main/java/baseball/Opponent.java | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/src/main/java/baseball/Opponent.java b/src/main/java/baseball/Opponent.java index 2b1ef3810..513ed4c47 100644 --- a/src/main/java/baseball/Opponent.java +++ b/src/main/java/baseball/Opponent.java @@ -2,6 +2,7 @@ import camp.nextstep.edu.missionutils.Randoms; import java.util.ArrayList; +import java.util.HashSet; import java.util.List; public class Opponent { @@ -17,10 +18,12 @@ public List getNumber() { } private void generateNumber() { - for (int i = 0; i < 3; i++) { - int randomNumber = Randoms.pickNumberInRange(1, 9); - number.add(randomNumber); + HashSet digits = new HashSet<>(); + while (digits.size() < 3) { + int randomDigit = Randoms.pickNumberInRange(1, 9); + digits.add(randomDigit); } + number.addAll(digits); } public void resetNumber() { From bb196ebb7697539edf3cc956cafdc8c64596b58e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=EC=86=90=EB=B3=91=EC=9E=AC?= Date: Fri, 26 May 2023 12:04:31 +0900 Subject: [PATCH 38/52] =?UTF-8?q?Refactor:=20=EB=A9=94=EC=84=B8=EC=A7=80?= =?UTF-8?q?=20enum=ED=99=94?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/main/java/baseball/Game.java | 2 +- src/main/java/baseball/Message.java | 25 +++++++++++++++++++++++++ src/main/java/baseball/Validator.java | 10 ++++++---- src/main/java/baseball/View.java | 8 +++++--- 4 files changed, 37 insertions(+), 8 deletions(-) create mode 100644 src/main/java/baseball/Message.java diff --git a/src/main/java/baseball/Game.java b/src/main/java/baseball/Game.java index 282bd618a..bc091e568 100644 --- a/src/main/java/baseball/Game.java +++ b/src/main/java/baseball/Game.java @@ -44,7 +44,7 @@ private void checkRestartOrClose() { } else if (inputString.equals(CLOSE_SIGNAL)) { close(); } else { - throw new IllegalArgumentException("1 또는 2를 입력해주세요."); + throw new IllegalArgumentException(Message.RESTART_OR_CLOSE_SIGNAL_INVALID_ERROR.getBody()); } } diff --git a/src/main/java/baseball/Message.java b/src/main/java/baseball/Message.java new file mode 100644 index 000000000..7aa47ce01 --- /dev/null +++ b/src/main/java/baseball/Message.java @@ -0,0 +1,25 @@ +package baseball; + +public enum Message { + + INPUT_NUMBER_GUIDE("숫자를 입력해주세요 : "), + CLOSE_GUIDE("3개의 숫자를 모두 맞히셨습니다! 게임 종료"), + RESTART_OR_CLOSE_GUIDE("게임을 새로 시작하려면 1, 종료하려면 2를 입력하세요."), + + + USER_NUMBER_NOT_NUMBER_ERROR("입력값에 숫자가 아닌 다른 값이 포함돼있습니다. 숫자만 입력해주세요."), + USER_NUMBER_DUPLICATE_ERROR("입력값에 중복이 포함돼있습니다. 중복되지 않는 숫자를 입력해주세요."), + USER_NUMBER_CONTAIN_ZERO_ERROR("입력값에 0은 포함될 수 없습니다. 1부터 9까지 숫자만 입력해주세요."), + USER_NUMBER_LENGTH_ERROR("입력값의 개수가 유효하지 않습니다. 3개의 숫자를 입력해주세요."), + RESTART_OR_CLOSE_SIGNAL_INVALID_ERROR("입력값에 1, 2가 아닌 다른 값이 포함돼있습니다. 1과 2중 하나를 선택해 입력해주세요."); + + private String body; + + Message(String body) { + this.body = body; + } + + public String getBody() { + return body; + } +} diff --git a/src/main/java/baseball/Validator.java b/src/main/java/baseball/Validator.java index 9f13af98b..19968f8ac 100644 --- a/src/main/java/baseball/Validator.java +++ b/src/main/java/baseball/Validator.java @@ -2,6 +2,8 @@ import java.util.Arrays; +import static baseball.Message.*; + public class Validator { public static void validate(String input) { @@ -13,7 +15,7 @@ public static void validate(String input) { private static void checkTypeConverting(String input) { if (input == null || !input.matches("[0-9]+")) { - throw new IllegalArgumentException("입력값에 숫자가 아닌 다른 값이 포함돼있습니다. 숫자만 입력해주세요."); + throw new IllegalArgumentException(USER_NUMBER_NOT_NUMBER_ERROR.getBody()); } } @@ -24,19 +26,19 @@ private static void checkDuplication(String input) { .count(); if (nonDuplicateWordCount != input.length()) { - throw new IllegalArgumentException("입력값에 중복이 포함돼있습니다. 중복되지 않는 숫자를 입력해주세요."); + throw new IllegalArgumentException(USER_NUMBER_DUPLICATE_ERROR.getBody()); } } private static void checkContainZero(String input) { if (input.contains("0")) { - throw new IllegalArgumentException("입력 값에 0은 포함될 수 없습니다. 1부터 9까지 숫자만 입력해주세요."); + throw new IllegalArgumentException(USER_NUMBER_CONTAIN_ZERO_ERROR.getBody()); } } private static void checkLength(String input) { if (input.length() != 3) { - throw new IllegalArgumentException("입력값의 개수가 유효하지 않습니다. 3개의 숫자를 입력해주세요."); + throw new IllegalArgumentException(USER_NUMBER_LENGTH_ERROR.getBody()); } } } diff --git a/src/main/java/baseball/View.java b/src/main/java/baseball/View.java index 4917c9c97..1169d866c 100644 --- a/src/main/java/baseball/View.java +++ b/src/main/java/baseball/View.java @@ -1,9 +1,11 @@ package baseball; +import static baseball.Message.*; + public class View { public void printNumberInputMessage() { - System.out.print("숫자를 입력해주세요 : "); + System.out.print(INPUT_NUMBER_GUIDE.getBody()); } public void print(JudgementResult result) { @@ -32,7 +34,7 @@ public void print(JudgementResult result) { } private void printGameOverMessage() { - System.out.println("3개의 숫자를 모두 맞히셨습니다! 게임 종료"); - System.out.println("게임을 새로 시작하려면 1, 종료하려면 2를 입력하세요."); + System.out.println(CLOSE_GUIDE.getBody()); + System.out.println(RESTART_OR_CLOSE_GUIDE.getBody()); } } From 1bfb42de43023fa1c0d8b9ce151450d454046d64 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=EC=86=90=EB=B3=91=EC=9E=AC?= Date: Fri, 26 May 2023 18:49:24 +0900 Subject: [PATCH 39/52] =?UTF-8?q?Refactor:=20=EA=B0=9D=EC=B2=B4=EB=93=A4?= =?UTF-8?q?=EA=B0=84=20=EC=97=B0=EA=B4=80=EA=B4=80=EA=B3=84=20=EB=B3=80?= =?UTF-8?q?=EA=B2=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/main/java/baseball/Application.java | 8 +++----- src/main/java/baseball/Game.java | 16 ++++++++++++---- src/main/java/baseball/Referee.java | 12 ++---------- 3 files changed, 17 insertions(+), 19 deletions(-) diff --git a/src/main/java/baseball/Application.java b/src/main/java/baseball/Application.java index 4f43177c2..aa84de3bd 100644 --- a/src/main/java/baseball/Application.java +++ b/src/main/java/baseball/Application.java @@ -2,13 +2,11 @@ public class Application { public static void main(String[] args) { - + Referee referee = new Referee(); + View view = new View(); Player player = new Player(); Opponent computer = new Opponent(); - Referee referee = new Referee(player, computer); - View view = new View(); - - Game game = new Game(referee, view); + Game game = new Game(referee, view, player, computer); game.run(); } } diff --git a/src/main/java/baseball/Game.java b/src/main/java/baseball/Game.java index bc091e568..fdf172388 100644 --- a/src/main/java/baseball/Game.java +++ b/src/main/java/baseball/Game.java @@ -2,21 +2,29 @@ import camp.nextstep.edu.missionutils.Console; +import static baseball.Message.*; + public class Game { private Referee referee; private View view; + private Player player; + + private Opponent computer; + private boolean isRunning; private final String RESTART_SIGNAL = "1"; private final String CLOSE_SIGNAL = "2"; - public Game(Referee referee, View view) { + public Game(Referee referee, View view, Player player, Opponent computer) { this.referee = referee; this.view = view; + this.player = player; + this.computer = computer; } public void run() { @@ -24,7 +32,7 @@ public void run() { while (isRunning) { view.printNumberInputMessage(); - JudgementResult judgementResult = referee.judge(); + JudgementResult judgementResult = referee.judge(player, computer); view.print(judgementResult); checkKeepRunning(judgementResult); } @@ -44,12 +52,12 @@ private void checkRestartOrClose() { } else if (inputString.equals(CLOSE_SIGNAL)) { close(); } else { - throw new IllegalArgumentException(Message.RESTART_OR_CLOSE_SIGNAL_INVALID_ERROR.getBody()); + throw new IllegalArgumentException(RESTART_OR_CLOSE_SIGNAL_INVALID_ERROR.getBody()); } } private void restart() { - referee.requestToChangeOpponentNumber(); + referee.requestToChangeNumber(computer); } private void close() { diff --git a/src/main/java/baseball/Referee.java b/src/main/java/baseball/Referee.java index be925fad0..ee86df7a2 100644 --- a/src/main/java/baseball/Referee.java +++ b/src/main/java/baseball/Referee.java @@ -5,15 +5,7 @@ public class Referee { - private Player player; - - private Opponent computer; - - public Referee(Player player, Opponent computer) { - this.player = player; - this.computer = computer; - } - public JudgementResult judge() { + public JudgementResult judge(Player player, Opponent computer) { List playerNumber = player.getNumber(); List opponentNumber = computer.getNumber(); @@ -43,7 +35,7 @@ private int countBall(List playerNumber, List opponentNumber) .count(); } - public void requestToChangeOpponentNumber() { + public void requestToChangeNumber(Opponent computer) { computer.resetNumber(); } } From 0c9db2212fd0ae46e81fa2d8c667a63a5e365c31 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=EC=86=90=EB=B3=91=EC=9E=AC?= Date: Fri, 26 May 2023 20:36:49 +0900 Subject: [PATCH 40/52] =?UTF-8?q?Refactor:=20View=20=ED=95=A8=EC=88=98=20?= =?UTF-8?q?=EB=B6=84=EB=A6=AC?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/main/java/baseball/View.java | 26 ++++++++++++++------------ 1 file changed, 14 insertions(+), 12 deletions(-) diff --git a/src/main/java/baseball/View.java b/src/main/java/baseball/View.java index 1169d866c..832413fbb 100644 --- a/src/main/java/baseball/View.java +++ b/src/main/java/baseball/View.java @@ -14,18 +14,7 @@ public void print(JudgementResult result) { return; } - int numberOfBall = result.getNumberOfBall(); - int numberOfStrike = result.getNumberOfStrike(); - StringBuilder stringBuilder = new StringBuilder(); - - if (numberOfBall > 0) { - stringBuilder.append(numberOfBall+"볼 "); - } - if (result.getNumberOfStrike() > 0) { - stringBuilder.append(numberOfStrike+"스트라이크 "); - } - String JudgementResultMessage = stringBuilder.toString(); - + String JudgementResultMessage = makeJudgementResultMessage(result); if (JudgementResultMessage.isEmpty()) { System.out.println("낫싱"); } else { @@ -37,4 +26,17 @@ private void printGameOverMessage() { System.out.println(CLOSE_GUIDE.getBody()); System.out.println(RESTART_OR_CLOSE_GUIDE.getBody()); } + + private String makeJudgementResultMessage(JudgementResult judgementResult) { + StringBuilder stringBuilder = new StringBuilder(); + + if (judgementResult.getNumberOfBall() > 0) { + stringBuilder.append(judgementResult.getNumberOfBall() + "볼 "); + } + if (judgementResult.getNumberOfStrike() > 0) { + stringBuilder.append(judgementResult.getNumberOfStrike() + "스트라이크 "); + } + String JudgementResultMessage = stringBuilder.toString(); + return JudgementResultMessage; + } } From bf7ac000b5d170bb5d0d973626ed089bd86044e5 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=EC=86=90=EB=B3=91=EC=9E=AC?= Date: Sat, 27 May 2023 02:15:38 +0900 Subject: [PATCH 41/52] =?UTF-8?q?Refactor:=20=EA=B0=9D=EC=B2=B4=20?= =?UTF-8?q?=EA=B0=84=20=EA=B4=80=EA=B3=84=20=EB=B3=80=EA=B2=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/main/java/baseball/Application.java | 5 +---- src/main/java/baseball/Game.java | 18 ++++++------------ src/main/java/baseball/View.java | 8 ++++---- 3 files changed, 11 insertions(+), 20 deletions(-) diff --git a/src/main/java/baseball/Application.java b/src/main/java/baseball/Application.java index aa84de3bd..864081770 100644 --- a/src/main/java/baseball/Application.java +++ b/src/main/java/baseball/Application.java @@ -3,10 +3,7 @@ public class Application { public static void main(String[] args) { Referee referee = new Referee(); - View view = new View(); - Player player = new Player(); - Opponent computer = new Opponent(); - Game game = new Game(referee, view, player, computer); + Game game = new Game(referee); game.run(); } } diff --git a/src/main/java/baseball/Game.java b/src/main/java/baseball/Game.java index fdf172388..85f7d63be 100644 --- a/src/main/java/baseball/Game.java +++ b/src/main/java/baseball/Game.java @@ -8,32 +8,26 @@ public class Game { private Referee referee; - private View view; - - private Player player; - - private Opponent computer; - private boolean isRunning; private final String RESTART_SIGNAL = "1"; private final String CLOSE_SIGNAL = "2"; - public Game(Referee referee, View view, Player player, Opponent computer) { + public Game(Referee referee) { this.referee = referee; - this.view = view; - this.player = player; - this.computer = computer; } public void run() { isRunning = true; + Player player = new Player(); + Opponent computer = new Opponent(); + while (isRunning) { - view.printNumberInputMessage(); + View.printNumberInputMessage(); JudgementResult judgementResult = referee.judge(player, computer); - view.print(judgementResult); + View.print(judgementResult); checkKeepRunning(judgementResult); } } diff --git a/src/main/java/baseball/View.java b/src/main/java/baseball/View.java index 832413fbb..3437c8722 100644 --- a/src/main/java/baseball/View.java +++ b/src/main/java/baseball/View.java @@ -4,11 +4,11 @@ public class View { - public void printNumberInputMessage() { + public static void printNumberInputMessage() { System.out.print(INPUT_NUMBER_GUIDE.getBody()); } - public void print(JudgementResult result) { + public static void print(JudgementResult result) { if (result.isMaxStrike()) { printGameOverMessage(); return; @@ -22,12 +22,12 @@ public void print(JudgementResult result) { } } - private void printGameOverMessage() { + private static void printGameOverMessage() { System.out.println(CLOSE_GUIDE.getBody()); System.out.println(RESTART_OR_CLOSE_GUIDE.getBody()); } - private String makeJudgementResultMessage(JudgementResult judgementResult) { + private static String makeJudgementResultMessage(JudgementResult judgementResult) { StringBuilder stringBuilder = new StringBuilder(); if (judgementResult.getNumberOfBall() > 0) { From 42d85b427dc6649d9c04c487e2173f3572a8e778 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=EC=86=90=EB=B3=91=EC=9E=AC?= Date: Sat, 27 May 2023 03:27:10 +0900 Subject: [PATCH 42/52] =?UTF-8?q?Refactor:=20=EA=B2=8C=EC=9E=84=20?= =?UTF-8?q?=EC=9E=AC=EC=8B=9C=EC=9E=91,=20=EC=A2=85=EB=A3=8C=20=EC=9C=A0?= =?UTF-8?q?=EC=A6=88=EC=BC=80=EC=9D=B4=EC=8A=A4=EB=A5=BC=20main=EC=97=90?= =?UTF-8?q?=EC=84=9C=20=EC=8B=9C=EC=9E=91=ED=95=98=EB=8F=84=EB=A1=9D=20?= =?UTF-8?q?=EB=B3=80=EA=B2=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/main/java/baseball/Application.java | 19 +++++++++++- src/main/java/baseball/Game.java | 39 ++++--------------------- 2 files changed, 23 insertions(+), 35 deletions(-) diff --git a/src/main/java/baseball/Application.java b/src/main/java/baseball/Application.java index 864081770..5fe8b3656 100644 --- a/src/main/java/baseball/Application.java +++ b/src/main/java/baseball/Application.java @@ -1,9 +1,26 @@ package baseball; +import camp.nextstep.edu.missionutils.Console; + +import static baseball.Message.SIGNAL_INVALID_ERROR; + public class Application { public static void main(String[] args) { + final String START_SIGNAL = "1"; + final String CLOSE_SIGNAL = "2"; + Referee referee = new Referee(); Game game = new Game(referee); - game.run(); + + String signal = START_SIGNAL; + + while (signal.equals(START_SIGNAL)) { + game.start(); + signal = Console.readLine(); + } + + if (!signal.equals(CLOSE_SIGNAL)) { + throw new IllegalArgumentException(SIGNAL_INVALID_ERROR.getBody()); + } } } diff --git a/src/main/java/baseball/Game.java b/src/main/java/baseball/Game.java index 85f7d63be..0555c6682 100644 --- a/src/main/java/baseball/Game.java +++ b/src/main/java/baseball/Game.java @@ -1,31 +1,22 @@ package baseball; -import camp.nextstep.edu.missionutils.Console; - -import static baseball.Message.*; - public class Game { - private Referee referee; private boolean isRunning; - private final String RESTART_SIGNAL = "1"; - - private final String CLOSE_SIGNAL = "2"; - public Game(Referee referee) { this.referee = referee; } - public void run() { - isRunning = true; - + public void start() { Player player = new Player(); Opponent computer = new Opponent(); + isRunning = true; + while (isRunning) { - View.printNumberInputMessage(); + View.print(Message.INPUT_NUMBER_GUIDE); JudgementResult judgementResult = referee.judge(player, computer); View.print(judgementResult); checkKeepRunning(judgementResult); @@ -34,27 +25,7 @@ public void run() { private void checkKeepRunning(JudgementResult judgementResult) { if (judgementResult.isMaxStrike()) { - checkRestartOrClose(); + isRunning = false; } } - - private void checkRestartOrClose() { - String inputString = Console.readLine(); - - if (inputString.equals(RESTART_SIGNAL)) { - restart(); - } else if (inputString.equals(CLOSE_SIGNAL)) { - close(); - } else { - throw new IllegalArgumentException(RESTART_OR_CLOSE_SIGNAL_INVALID_ERROR.getBody()); - } - } - - private void restart() { - referee.requestToChangeNumber(computer); - } - - private void close() { - isRunning = false; - } } From 9e9cf8cf49527920fcb74ef4643c233783618f66 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=EC=86=90=EB=B3=91=EC=9E=AC?= Date: Sat, 27 May 2023 03:28:19 +0900 Subject: [PATCH 43/52] =?UTF-8?q?Refactor:=20View=EC=97=90=EC=84=9C=20?= =?UTF-8?q?=EB=A9=94=EC=84=B8=EC=A7=80=20=EC=83=81=EC=88=98=EC=9D=B4?= =?UTF-8?q?=EC=9A=A9=ED=95=98=EB=8F=84=EB=A1=9D=20=EB=B3=80=EA=B2=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/main/java/baseball/Message.java | 3 +-- src/main/java/baseball/View.java | 7 +++---- 2 files changed, 4 insertions(+), 6 deletions(-) diff --git a/src/main/java/baseball/Message.java b/src/main/java/baseball/Message.java index 7aa47ce01..4ad2d72b8 100644 --- a/src/main/java/baseball/Message.java +++ b/src/main/java/baseball/Message.java @@ -1,7 +1,6 @@ package baseball; public enum Message { - INPUT_NUMBER_GUIDE("숫자를 입력해주세요 : "), CLOSE_GUIDE("3개의 숫자를 모두 맞히셨습니다! 게임 종료"), RESTART_OR_CLOSE_GUIDE("게임을 새로 시작하려면 1, 종료하려면 2를 입력하세요."), @@ -11,7 +10,7 @@ public enum Message { USER_NUMBER_DUPLICATE_ERROR("입력값에 중복이 포함돼있습니다. 중복되지 않는 숫자를 입력해주세요."), USER_NUMBER_CONTAIN_ZERO_ERROR("입력값에 0은 포함될 수 없습니다. 1부터 9까지 숫자만 입력해주세요."), USER_NUMBER_LENGTH_ERROR("입력값의 개수가 유효하지 않습니다. 3개의 숫자를 입력해주세요."), - RESTART_OR_CLOSE_SIGNAL_INVALID_ERROR("입력값에 1, 2가 아닌 다른 값이 포함돼있습니다. 1과 2중 하나를 선택해 입력해주세요."); + SIGNAL_INVALID_ERROR("입력값에 1, 2가 아닌 다른 값이 포함돼있습니다. 1과 2중 하나를 선택해 입력해주세요."); private String body; diff --git a/src/main/java/baseball/View.java b/src/main/java/baseball/View.java index 3437c8722..ccc323271 100644 --- a/src/main/java/baseball/View.java +++ b/src/main/java/baseball/View.java @@ -4,8 +4,8 @@ public class View { - public static void printNumberInputMessage() { - System.out.print(INPUT_NUMBER_GUIDE.getBody()); + public static void print(Message message) { + System.out.print(message.getBody()); } public static void print(JudgementResult result) { @@ -36,7 +36,6 @@ private static String makeJudgementResultMessage(JudgementResult judgementResult if (judgementResult.getNumberOfStrike() > 0) { stringBuilder.append(judgementResult.getNumberOfStrike() + "스트라이크 "); } - String JudgementResultMessage = stringBuilder.toString(); - return JudgementResultMessage; + return stringBuilder.toString(); } } From 5f9a29978d9b7fdc0f5aad375c8bc9dfd2836fff Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=EC=86=90=EB=B3=91=EC=9E=AC?= Date: Sat, 27 May 2023 03:29:08 +0900 Subject: [PATCH 44/52] =?UTF-8?q?Refactor:=20=EB=B6=88=ED=95=84=EC=9A=94?= =?UTF-8?q?=ED=95=9C=20=ED=95=A8=EC=88=98=20=EC=A0=9C=EA=B1=B0=20=EB=B0=8F?= =?UTF-8?q?=20=ED=95=A8=EC=88=98=20=EC=B6=94=EC=B6=9C?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/main/java/baseball/Opponent.java | 22 +++++++++++----------- src/main/java/baseball/Referee.java | 4 ---- 2 files changed, 11 insertions(+), 15 deletions(-) diff --git a/src/main/java/baseball/Opponent.java b/src/main/java/baseball/Opponent.java index 513ed4c47..2ea763ef1 100644 --- a/src/main/java/baseball/Opponent.java +++ b/src/main/java/baseball/Opponent.java @@ -7,27 +7,27 @@ public class Opponent { - private List number; + private List number = new ArrayList<>(); public List getNumber() { - if (number == null) { - number = new ArrayList<>(); + if (number.isEmpty()) { generateNumber(); } return number; } private void generateNumber() { - HashSet digits = new HashSet<>(); - while (digits.size() < 3) { - int randomDigit = Randoms.pickNumberInRange(1, 9); - digits.add(randomDigit); + HashSet digitsWithoutZero = new HashSet<>(); + while (digitsWithoutZero.size() < 3) { + digitsWithoutZero.add(getRandomDigitWithoutZero()); } - number.addAll(digits); + number.addAll(digitsWithoutZero); } - public void resetNumber() { - number.clear(); - generateNumber(); + private int getRandomDigitWithoutZero() { + final int startInclusive = 1; + final int endInclusive = 9; + + return Randoms.pickNumberInRange(startInclusive, endInclusive); } } diff --git a/src/main/java/baseball/Referee.java b/src/main/java/baseball/Referee.java index ee86df7a2..31c040356 100644 --- a/src/main/java/baseball/Referee.java +++ b/src/main/java/baseball/Referee.java @@ -34,8 +34,4 @@ private int countBall(List playerNumber, List opponentNumber) return opponentNumberIndex != playerNumberIndex && opponentNumberIndex != -1;}) .count(); } - - public void requestToChangeNumber(Opponent computer) { - computer.resetNumber(); - } } From 001ec540f735dfdb3def1b423120d285fcc23f71 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=EC=86=90=EB=B3=91=EC=9E=AC?= Date: Sat, 27 May 2023 03:29:21 +0900 Subject: [PATCH 45/52] =?UTF-8?q?Style:=20=EB=B6=88=ED=95=84=EC=9A=94?= =?UTF-8?q?=ED=95=9C=20=EA=B3=B5=EB=B0=B1=20=EC=A0=9C=EA=B1=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/main/java/baseball/JudgementResult.java | 2 -- 1 file changed, 2 deletions(-) diff --git a/src/main/java/baseball/JudgementResult.java b/src/main/java/baseball/JudgementResult.java index 7a4c356a8..011f1f131 100644 --- a/src/main/java/baseball/JudgementResult.java +++ b/src/main/java/baseball/JudgementResult.java @@ -1,7 +1,6 @@ package baseball; public class JudgementResult { - private final int numberOfStrike; private final int numberOfBall; @@ -25,5 +24,4 @@ public int getNumberOfBall() { public boolean isMaxStrike() { return numberOfStrike == MAX_STRIKE; } - } From 0c04639e02344653b4326d24dc4dbedec8dfa4da Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=EC=86=90=EB=B3=91=EC=9E=AC?= Date: Sat, 27 May 2023 03:37:45 +0900 Subject: [PATCH 46/52] =?UTF-8?q?Docs:=20=EB=8F=84=EB=A9=94=EC=9D=B8=20?= =?UTF-8?q?=EB=AA=A8=EB=8D=B8,=20=EA=B8=B0=EB=8A=A5=20=EB=AA=A9=EB=A1=9D?= =?UTF-8?q?=20=EC=97=85=EB=8D=B0=EC=9D=B4=ED=8A=B8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- README.md | 13 ++++++------- img.png | Bin 60793 -> 0 bytes img_1.png | Bin 0 -> 47144 bytes 3 files changed, 6 insertions(+), 7 deletions(-) delete mode 100644 img.png create mode 100644 img_1.png diff --git a/README.md b/README.md index 82b1138df..e4ce11951 100644 --- a/README.md +++ b/README.md @@ -6,25 +6,25 @@ - 세 개의 요구사항을 만족하기 위해 노력한다. 특히 기능을 구현하기 전에 기능 목록을 만들고, 기능 단위로 커밋 하는 방식으로 진행한다. ## 유스케이스 - 게임을 시작하라 -- 게임을 재시작하라 + - 게임을 재시작하라 - 게임을 종료하라 ## 도메인 모델 -![img.png](img.png) +![img_1.png](img_1.png) + ## 기능 목록 - 게임 - 게임을 시작하는 기능 - - 콘솔로부터 받은 입력으로 게임 재시작 혹은 종료하는 기능 + - 게임을 종료하는 기능 - 심판 - 플레이어와 상대방으로부터 숫자를 받아 스트라이크와 볼 개수를 판단하는 기능 - - 게임 재시작 시 상대방에게 숫자 변경을 요청하는 기능 - 화면 - 숫자 입력 메세지 출력 기능 - 스트라이크와 볼 개수 혹은 낫싱을 출력하는 기능 - 3개의 숫자를 모두 맞혔을 때 게임 종료 메세지와 게임 재시작 혹은 종료 여부를 입력하도록 출력하는 기능 - 플레이어 - - 콘솔에게서 문자열타입으로 숫자를 입력받아 유효성 검사를 하는 기능 + - 문자열 타입 숫자를 숫자형 리스트로 변환하는 기능 - 심판의 요청에 따라 입력받은 유효한 숫자를 반환하는 기능 - 유효성 검사기 - 플레이어가 콘솔로 받은 입력이 숫자인지 판단하는 기능 @@ -33,8 +33,7 @@ - 플레이어가 콘솔로 받은 입력의 길이가 올바른지 판단하는 기능 - 상대방(컴퓨터) - 랜덤하게 범위 내의 중복되지 않는 3자리 숫자를 생성하는 기능 - - 심판의 요청에 따라 생성한 숫자를 반환하는 기능 - - 게임 재시작 시 랜덤한 숫자를 다시 생성하는 기능 + - 심판의 요청에 따라 자신의 숫자를 반환하는 기능 - 판정 결과 - 스트라이크 판정 개수가 최대 스트라이크 개수인지 판단 기능 diff --git a/img.png b/img.png deleted file mode 100644 index 5d4b7d136976ef5d9d7f603342af12902e38ae07..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 60793 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 rVb3FAwb7uG30TW*b{HDz*^{0&a8F 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�y0DhW&Qmu;4fK=C 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 AD*ylh literal 0 HcmV?d00001 From afa4af18b09bf7ca9d009bf9537f73ce89259b29 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=EC=86=90=EB=B3=91=EC=9E=AC?= Date: Sat, 27 May 2023 17:35:21 +0900 Subject: [PATCH 47/52] =?UTF-8?q?Style:=20=EB=B6=88=ED=95=84=EC=9A=94?= =?UTF-8?q?=ED=95=9C=20=EA=B3=B5=EB=B0=B1=20=EC=A0=9C=EA=B1=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/main/java/baseball/Opponent.java | 1 - src/main/java/baseball/Player.java | 1 - src/main/java/baseball/Validator.java | 1 - src/main/java/baseball/View.java | 1 - 4 files changed, 4 deletions(-) diff --git a/src/main/java/baseball/Opponent.java b/src/main/java/baseball/Opponent.java index 2ea763ef1..192c39e09 100644 --- a/src/main/java/baseball/Opponent.java +++ b/src/main/java/baseball/Opponent.java @@ -6,7 +6,6 @@ import java.util.List; public class Opponent { - private List number = new ArrayList<>(); public List getNumber() { diff --git a/src/main/java/baseball/Player.java b/src/main/java/baseball/Player.java index c4f84efbd..e3c32a199 100644 --- a/src/main/java/baseball/Player.java +++ b/src/main/java/baseball/Player.java @@ -6,7 +6,6 @@ import java.util.stream.Collectors; public class Player { - private List number; public List getNumber() { diff --git a/src/main/java/baseball/Validator.java b/src/main/java/baseball/Validator.java index 19968f8ac..cfc3f48d6 100644 --- a/src/main/java/baseball/Validator.java +++ b/src/main/java/baseball/Validator.java @@ -5,7 +5,6 @@ import static baseball.Message.*; public class Validator { - public static void validate(String input) { checkTypeConverting(input); checkDuplication(input); diff --git a/src/main/java/baseball/View.java b/src/main/java/baseball/View.java index ccc323271..028fbe933 100644 --- a/src/main/java/baseball/View.java +++ b/src/main/java/baseball/View.java @@ -3,7 +3,6 @@ import static baseball.Message.*; public class View { - public static void print(Message message) { System.out.print(message.getBody()); } From acdfda57d49dc7915179d0712ad4f2cc91251e59 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=EC=86=90=EB=B3=91=EC=9E=AC?= Date: Sat, 27 May 2023 17:35:36 +0900 Subject: [PATCH 48/52] =?UTF-8?q?Refactor:=20=EA=B0=9D=EC=B2=B4=EA=B0=84?= =?UTF-8?q?=20=EA=B4=80=EA=B3=84=20=EB=B3=80=EA=B2=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/main/java/baseball/Application.java | 3 +-- src/main/java/baseball/Game.java | 22 +++++++++++++--------- src/main/java/baseball/Referee.java | 10 +--------- 3 files changed, 15 insertions(+), 20 deletions(-) diff --git a/src/main/java/baseball/Application.java b/src/main/java/baseball/Application.java index 5fe8b3656..61f504e5a 100644 --- a/src/main/java/baseball/Application.java +++ b/src/main/java/baseball/Application.java @@ -9,8 +9,7 @@ public static void main(String[] args) { final String START_SIGNAL = "1"; final String CLOSE_SIGNAL = "2"; - Referee referee = new Referee(); - Game game = new Game(referee); + Game game = new Game(); String signal = START_SIGNAL; diff --git a/src/main/java/baseball/Game.java b/src/main/java/baseball/Game.java index 0555c6682..20f18168c 100644 --- a/src/main/java/baseball/Game.java +++ b/src/main/java/baseball/Game.java @@ -3,26 +3,30 @@ public class Game { private Referee referee; - private boolean isRunning; + private Player player; - public Game(Referee referee) { - this.referee = referee; - } + private Opponent computer; - public void start() { - Player player = new Player(); - Opponent computer = new Opponent(); + private boolean isRunning; - isRunning = true; + public void start() { + initializeProperty(); while (isRunning) { View.print(Message.INPUT_NUMBER_GUIDE); - JudgementResult judgementResult = referee.judge(player, computer); + JudgementResult judgementResult = referee.judge(player.getNumber(), computer.getNumber()); View.print(judgementResult); checkKeepRunning(judgementResult); } } + private void initializeProperty() { + referee = new Referee(); + player = new Player(); + computer = new Opponent(); + isRunning = true; + } + private void checkKeepRunning(JudgementResult judgementResult) { if (judgementResult.isMaxStrike()) { isRunning = false; diff --git a/src/main/java/baseball/Referee.java b/src/main/java/baseball/Referee.java index 31c040356..36bc0a4a2 100644 --- a/src/main/java/baseball/Referee.java +++ b/src/main/java/baseball/Referee.java @@ -4,15 +4,7 @@ import java.util.stream.IntStream; public class Referee { - - public JudgementResult judge(Player player, Opponent computer) { - List playerNumber = player.getNumber(); - List opponentNumber = computer.getNumber(); - - return compare(playerNumber, opponentNumber); - } - - private JudgementResult compare(List playerNumber, List opponentNumber) { + public JudgementResult judge(List playerNumber, List opponentNumber) { int numberOfStrike = countStrike(playerNumber, opponentNumber); int numberOfBall = countBall(playerNumber, opponentNumber); From c8f7aca5eed75eba2967fccdfb3dcfaf04e4d6a1 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=EC=86=90=EB=B3=91=EC=9E=AC?= Date: Sat, 27 May 2023 17:41:42 +0900 Subject: [PATCH 49/52] =?UTF-8?q?Refactor:=20=ED=95=A8=EC=88=98=20?= =?UTF-8?q?=EC=B6=94=EC=B6=9C=20=EB=B0=8F=20=EB=A9=94=EC=86=8C=EB=93=9C=20?= =?UTF-8?q?=EB=84=A4=EC=9E=84=20=EB=B3=80=EA=B2=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/main/java/baseball/Game.java | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/src/main/java/baseball/Game.java b/src/main/java/baseball/Game.java index 20f18168c..aac85093b 100644 --- a/src/main/java/baseball/Game.java +++ b/src/main/java/baseball/Game.java @@ -16,7 +16,7 @@ public void start() { View.print(Message.INPUT_NUMBER_GUIDE); JudgementResult judgementResult = referee.judge(player.getNumber(), computer.getNumber()); View.print(judgementResult); - checkKeepRunning(judgementResult); + keepRunningOrClose(judgementResult); } } @@ -27,9 +27,13 @@ private void initializeProperty() { isRunning = true; } - private void checkKeepRunning(JudgementResult judgementResult) { + private void keepRunningOrClose(JudgementResult judgementResult) { if (judgementResult.isMaxStrike()) { - isRunning = false; + close(); } } + + private void close() { + isRunning = false; + } } From be024c9b9ad6fc26fd359a5f48d608b54c261344 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=EC=86=90=EB=B3=91=EC=9E=AC?= Date: Sat, 27 May 2023 17:51:11 +0900 Subject: [PATCH 50/52] =?UTF-8?q?Docs:=20=EB=8F=84=EB=A9=94=EC=9D=B8=20?= =?UTF-8?q?=EB=AA=A8=EB=8D=B8=20=EC=88=98=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- README.md | 2 +- img.png | Bin 0 -> 54963 bytes img_1.png | Bin 47144 -> 0 bytes 3 files changed, 1 insertion(+), 1 deletion(-) create mode 100644 img.png delete mode 100644 img_1.png diff --git a/README.md b/README.md index e4ce11951..d308e6c42 100644 --- a/README.md +++ b/README.md @@ -10,7 +10,7 @@ - 게임을 종료하라 ## 도메인 모델 -![img_1.png](img_1.png) +![img.png](img.png) ## 기능 목록 diff --git a/img.png b/img.png new file mode 100644 index 0000000000000000000000000000000000000000..6d3f4e22dda62bf99ff4000ef223253c8fb36f6b GIT binary patch literal 54963 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 az6q_|W4RxXBjQ=$kJ-A7Mg?n$!T$nk+GFGZ literal 0 HcmV?d00001 diff --git a/img_1.png b/img_1.png deleted file mode 100644 index eb0d854d5c76a4e6c741638be0d98867c20e1ef2..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 47144 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�y0DhW&Qmu;4fK=C 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 AD*ylh From 1d67e2ca7a23eb01a9660694637f680d06c2cb95 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=EC=86=90=EB=B3=91=EC=9E=AC?= Date: Sat, 27 May 2023 19:18:12 +0900 Subject: [PATCH 51/52] =?UTF-8?q?Refactor:=20=ED=95=A8=EC=88=98=20?= =?UTF-8?q?=EC=AA=BC=EA=B0=9C=EA=B8=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/main/java/baseball/Application.java | 12 +++++----- src/main/java/baseball/Game.java | 23 ++++++++++++------- src/main/java/baseball/Message.java | 2 +- src/main/java/baseball/View.java | 30 ++++++++++++------------- 4 files changed, 37 insertions(+), 30 deletions(-) diff --git a/src/main/java/baseball/Application.java b/src/main/java/baseball/Application.java index 61f504e5a..0148097c7 100644 --- a/src/main/java/baseball/Application.java +++ b/src/main/java/baseball/Application.java @@ -6,16 +6,16 @@ public class Application { public static void main(String[] args) { - final String START_SIGNAL = "1"; + final String RESTART_SIGNAL = "1"; final String CLOSE_SIGNAL = "2"; Game game = new Game(); + game.proceed(); - String signal = START_SIGNAL; - - while (signal.equals(START_SIGNAL)) { - game.start(); - signal = Console.readLine(); + String signal = Console.readLine(); + while (signal.equals(RESTART_SIGNAL)) { + game.proceed(); + signal = Console.readLine(); } if (!signal.equals(CLOSE_SIGNAL)) { diff --git a/src/main/java/baseball/Game.java b/src/main/java/baseball/Game.java index aac85093b..47f65a5b4 100644 --- a/src/main/java/baseball/Game.java +++ b/src/main/java/baseball/Game.java @@ -9,15 +9,15 @@ public class Game { private boolean isRunning; - public void start() { + + public void proceed() { initializeProperty(); while (isRunning) { - View.print(Message.INPUT_NUMBER_GUIDE); - JudgementResult judgementResult = referee.judge(player.getNumber(), computer.getNumber()); - View.print(judgementResult); - keepRunningOrClose(judgementResult); + run(); } + + close(); } private void initializeProperty() { @@ -27,13 +27,20 @@ private void initializeProperty() { isRunning = true; } - private void keepRunningOrClose(JudgementResult judgementResult) { + private void run() { + View.print(Message.INPUT_NUMBER_GUIDE); + JudgementResult judgementResult = referee.judge(player.getNumber(), computer.getNumber()); + View.print(judgementResult); + determineKeepRunning(judgementResult); + } + + private void determineKeepRunning(JudgementResult judgementResult) { if (judgementResult.isMaxStrike()) { - close(); + isRunning = false; } } private void close() { - isRunning = false; + View.println(Message.RESTART_OR_CLOSE_GUIDE); } } diff --git a/src/main/java/baseball/Message.java b/src/main/java/baseball/Message.java index 4ad2d72b8..24efab492 100644 --- a/src/main/java/baseball/Message.java +++ b/src/main/java/baseball/Message.java @@ -2,7 +2,7 @@ public enum Message { INPUT_NUMBER_GUIDE("숫자를 입력해주세요 : "), - CLOSE_GUIDE("3개의 숫자를 모두 맞히셨습니다! 게임 종료"), + MAX_STRIKE_AND_CLOSE_GUIDE("3개의 숫자를 모두 맞히셨습니다! 게임 종료"), RESTART_OR_CLOSE_GUIDE("게임을 새로 시작하려면 1, 종료하려면 2를 입력하세요."), diff --git a/src/main/java/baseball/View.java b/src/main/java/baseball/View.java index 028fbe933..4146373be 100644 --- a/src/main/java/baseball/View.java +++ b/src/main/java/baseball/View.java @@ -7,34 +7,34 @@ public static void print(Message message) { System.out.print(message.getBody()); } - public static void print(JudgementResult result) { - if (result.isMaxStrike()) { - printGameOverMessage(); - return; - } - - String JudgementResultMessage = makeJudgementResultMessage(result); - if (JudgementResultMessage.isEmpty()) { - System.out.println("낫싱"); - } else { - System.out.println(JudgementResultMessage); - } + public static void println(Message message) { + System.out.println(message.getBody()); } - private static void printGameOverMessage() { - System.out.println(CLOSE_GUIDE.getBody()); - System.out.println(RESTART_OR_CLOSE_GUIDE.getBody()); + public static void print(JudgementResult result) { + String JudgementResultMessage = makeJudgementResultMessage(result); + System.out.println(JudgementResultMessage); } private static String makeJudgementResultMessage(JudgementResult judgementResult) { StringBuilder stringBuilder = new StringBuilder(); + if (judgementResult.isMaxStrike()) { + stringBuilder.append(MAX_STRIKE_AND_CLOSE_GUIDE.getBody()); + return stringBuilder.toString(); + } + if (judgementResult.getNumberOfBall() > 0) { stringBuilder.append(judgementResult.getNumberOfBall() + "볼 "); } if (judgementResult.getNumberOfStrike() > 0) { stringBuilder.append(judgementResult.getNumberOfStrike() + "스트라이크 "); } + + if (judgementResult.getNumberOfBall() == 0 && judgementResult.getNumberOfStrike() == 0) { + stringBuilder.append("낫싱"); + } + return stringBuilder.toString(); } } From 3e9355d8a698f57f4374226a13db66a9b169123e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=EC=86=90=EB=B3=91=EC=9E=AC?= Date: Sat, 27 May 2023 20:31:39 +0900 Subject: [PATCH 52/52] =?UTF-8?q?Fix:=203=EC=8A=A4=ED=8A=B8=EB=9D=BC?= =?UTF-8?q?=EC=9D=B4=ED=81=AC=20=EC=8B=9C=20=EC=8A=A4=ED=8A=B8=EB=9D=BC?= =?UTF-8?q?=EC=9D=B4=ED=81=AC=20=EA=B0=9C=EC=88=98=20=EC=B6=9C=EB=A0=A5?= =?UTF-8?q?=ED=95=98=EB=8F=84=EB=A1=9D=20=EC=88=98=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/main/java/baseball/View.java | 9 ++++----- 1 file changed, 4 insertions(+), 5 deletions(-) diff --git a/src/main/java/baseball/View.java b/src/main/java/baseball/View.java index 4146373be..6abb2c7ba 100644 --- a/src/main/java/baseball/View.java +++ b/src/main/java/baseball/View.java @@ -19,11 +19,6 @@ public static void print(JudgementResult result) { private static String makeJudgementResultMessage(JudgementResult judgementResult) { StringBuilder stringBuilder = new StringBuilder(); - if (judgementResult.isMaxStrike()) { - stringBuilder.append(MAX_STRIKE_AND_CLOSE_GUIDE.getBody()); - return stringBuilder.toString(); - } - if (judgementResult.getNumberOfBall() > 0) { stringBuilder.append(judgementResult.getNumberOfBall() + "볼 "); } @@ -35,6 +30,10 @@ private static String makeJudgementResultMessage(JudgementResult judgementResult stringBuilder.append("낫싱"); } + if (judgementResult.isMaxStrike()) { + stringBuilder.append(MAX_STRIKE_AND_CLOSE_GUIDE.getBody()); + } + return stringBuilder.toString(); } }