From a6de1a634e1178699a51b2f77bd1cf9421aef67f Mon Sep 17 00:00:00 2001 From: chahyunsoo Date: Tue, 24 Oct 2023 22:31:41 +0900 Subject: [PATCH 1/6] =?UTF-8?q?feat=20:=20=EB=9E=9C=EB=8D=A4=20=EC=88=AB?= =?UTF-8?q?=EC=9E=90=203=EA=B0=9C=EB=A5=BC=20=EC=83=9D=EC=84=B1=ED=95=98?= =?UTF-8?q?=EB=8A=94=20=EA=B8=B0=EB=8A=A5=20=EA=B5=AC=ED=98=84?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/main/java/baseball/Application.java | 22 +++++++++++++++++++++- 1 file changed, 21 insertions(+), 1 deletion(-) diff --git a/src/main/java/baseball/Application.java b/src/main/java/baseball/Application.java index dd95a34214..6d64af3157 100644 --- a/src/main/java/baseball/Application.java +++ b/src/main/java/baseball/Application.java @@ -1,7 +1,27 @@ package baseball; +import camp.nextstep.edu.missionutils.Randoms; +import camp.nextstep.edu.missionutils.Console; +import java.util.ArrayList; +import java.util.List; + public class Application { + private static final int MAX_NUM = 9; + private static final int NUM_SIZE = 3; + public static void main(String[] args) { - // TODO: 프로그램 구현 + } + private static List makeRandomNumbers() { + List numbers = new ArrayList<>(); + while (numbers.size() < NUM_SIZE) { + int randomNumber = Randoms.pickNumberInRange(1, MAX_NUM); + if (!numbers.contains(randomNumber)) { + numbers.add(randomNumber); + } + } + return numbers; + } + + } From 4c43941e528af11aeb0f90cb4ecd4bc3eafce86a Mon Sep 17 00:00:00 2001 From: chahyunsoo Date: Tue, 24 Oct 2023 22:32:29 +0900 Subject: [PATCH 2/6] =?UTF-8?q?feat=20:=20=EC=82=AC=EC=9A=A9=EC=9E=90?= =?UTF-8?q?=EC=97=90=EA=B2=8C=20=EC=88=AB=EC=9E=90=20=EC=9E=85=EB=A0=A5=20?= =?UTF-8?q?=EB=B0=9B=EB=8A=94=20=EA=B8=B0=EB=8A=A5=20=EA=B5=AC=ED=98=84?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/main/java/baseball/Application.java | 15 +++++++++++++++ 1 file changed, 15 insertions(+) diff --git a/src/main/java/baseball/Application.java b/src/main/java/baseball/Application.java index 6d64af3157..727249cedc 100644 --- a/src/main/java/baseball/Application.java +++ b/src/main/java/baseball/Application.java @@ -23,5 +23,20 @@ private static List makeRandomNumbers() { return numbers; } + private static List inputNumbers() { + System.out.print("숫자를 입력해 주세요 : "); + String input = Console.readLine(); + if (input.length() != NUM_SIZE) { + throw new IllegalArgumentException("서로 다른 3자리의 수를 입력해 주세요."); + } + + List numbers = new ArrayList<>(); + for (char ch : input.toCharArray()) { + numbers.add(Character.getNumericValue(ch)); + } + return numbers; + } + + } From b41008fd09de12534a465d793603fda948e0584a Mon Sep 17 00:00:00 2001 From: chahyunsoo Date: Tue, 24 Oct 2023 22:33:46 +0900 Subject: [PATCH 3/6] =?UTF-8?q?feat=20:=20=EC=8A=A4=ED=8A=B8=EB=9D=BC?= =?UTF-8?q?=EC=9D=B4=ED=81=AC=20=ED=8C=90=EB=8B=A8=20=EA=B8=B0=EB=8A=A5=20?= =?UTF-8?q?=EA=B5=AC=ED=98=84?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/main/java/baseball/Application.java | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/src/main/java/baseball/Application.java b/src/main/java/baseball/Application.java index 727249cedc..6f9fc0831b 100644 --- a/src/main/java/baseball/Application.java +++ b/src/main/java/baseball/Application.java @@ -37,6 +37,15 @@ private static List inputNumbers() { return numbers; } + private static int countStrikes(List computer, List user) { + int count = 0; + for (int i = 0; i < NUM_SIZE; i++) { + if (computer.get(i).equals(user.get(i))) { + count++; + } + } + return count; + } } From 3c0497b40c36845747cd1f8a56cca2711ac444db Mon Sep 17 00:00:00 2001 From: chahyunsoo Date: Tue, 24 Oct 2023 22:34:20 +0900 Subject: [PATCH 4/6] =?UTF-8?q?feat=20:=20=EB=B3=BC=20=ED=8C=90=EB=8B=A8?= =?UTF-8?q?=20=EA=B8=B0=EB=8A=A5=20=EA=B5=AC=ED=98=84?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/main/java/baseball/Application.java | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/src/main/java/baseball/Application.java b/src/main/java/baseball/Application.java index 6f9fc0831b..18caa8c285 100644 --- a/src/main/java/baseball/Application.java +++ b/src/main/java/baseball/Application.java @@ -47,5 +47,14 @@ private static int countStrikes(List computer, List user) { return count; } + private static int countBalls(List computer, List user) { + int count = 0; + for (int i = 0; i < NUM_SIZE; i++) { + if (computer.contains(user.get(i)) && !computer.get(i).equals(user.get(i))) { + count++; + } + } + return count; + } } From 6e7c7aa677086c0c7897922299c501ac9a47ddae Mon Sep 17 00:00:00 2001 From: chahyunsoo Date: Tue, 24 Oct 2023 22:35:37 +0900 Subject: [PATCH 5/6] =?UTF-8?q?feat=20:=20=EA=B2=B0=EA=B3=BC=20=EC=B6=9C?= =?UTF-8?q?=EB=A0=A5=ED=95=98=EB=8A=94=20=EA=B8=B0=EB=8A=A5=20=EA=B5=AC?= =?UTF-8?q?=ED=98=84?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/main/java/baseball/Application.java | 31 +++++++++++++++++++++++++ 1 file changed, 31 insertions(+) diff --git a/src/main/java/baseball/Application.java b/src/main/java/baseball/Application.java index 18caa8c285..4145b27aea 100644 --- a/src/main/java/baseball/Application.java +++ b/src/main/java/baseball/Application.java @@ -57,4 +57,35 @@ private static int countBalls(List computer, List user) { return count; } + private static void playGame() { + List computerNumbers = makeRandomNumbers(); + + while (true) { + List userNumbers = inputNumbers(); + + int strikes = countStrikes(computerNumbers, userNumbers); + int balls = countBalls(computerNumbers, userNumbers); + + if (strikes == NUM_SIZE) { + System.out.println("3스트라이크\n3개의 숫자를 모두 맞히셨습니다! 게임 종료"); + return; + } + + if (strikes == 0 && balls == 0) { + System.out.println("낫싱"); + continue; + } + + if (balls > 0) { + System.out.print(balls + "볼 "); + } + + if (strikes > 0) { + System.out.print(strikes + "스트라이크"); + } + + System.out.println(); + } + } + } From 3e95bf1265464d31ba04ba7af99ef4d690b9cb03 Mon Sep 17 00:00:00 2001 From: chahyunsoo Date: Tue, 24 Oct 2023 22:37:25 +0900 Subject: [PATCH 6/6] =?UTF-8?q?feat=20:=20=EC=88=AB=EC=9E=90=20=EC=95=BC?= =?UTF-8?q?=EA=B5=AC=20=EA=B2=8C=EC=9E=84=20=EA=B3=84=EC=86=8D=ED=95=B4?= =?UTF-8?q?=EC=84=9C=20=EC=A7=84=ED=96=89=ED=95=A0=20=EA=B2=83=EC=9D=B8?= =?UTF-8?q?=EC=A7=80=20=EA=B2=B0=EC=A0=95=ED=95=98=EB=8A=94=20=EA=B8=B0?= =?UTF-8?q?=EB=8A=A5=20=EA=B5=AC=ED=98=84?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/main/java/baseball/Application.java | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/src/main/java/baseball/Application.java b/src/main/java/baseball/Application.java index 4145b27aea..615aaecb20 100644 --- a/src/main/java/baseball/Application.java +++ b/src/main/java/baseball/Application.java @@ -10,7 +10,9 @@ public class Application { private static final int NUM_SIZE = 3; public static void main(String[] args) { - + do { + playGame(); + } while (keepGoing()); } private static List makeRandomNumbers() { List numbers = new ArrayList<>(); @@ -88,4 +90,10 @@ private static void playGame() { } } + private static boolean keepGoing() { + System.out.println("게임을 새로 시작하려면 1, 종료하려면 2를 입력하세요."); + String input = Console.readLine(); + return "1".equals(input); + } + }