From 4c43cc6acea33a96cd6974cd02b07bfe59741492 Mon Sep 17 00:00:00 2001 From: chlwlgus4 Date: Sun, 21 Jun 2020 14:01:38 +0900 Subject: [PATCH 01/12] commit --- README.md | 3 ++ build.gradle | 1 + src/main/java/com/baseball/Baseball.java | 57 ++++++++++++++++++++++++ 3 files changed, 61 insertions(+) create mode 100644 src/main/java/com/baseball/Baseball.java diff --git a/README.md b/README.md index e69de29..2a95f86 100644 --- a/README.md +++ b/README.md @@ -0,0 +1,3 @@ +# 기능 목록 + +
    \ No newline at end of file diff --git a/build.gradle b/build.gradle index c7156de..fd7068c 100644 --- a/build.gradle +++ b/build.gradle @@ -4,6 +4,7 @@ plugins { group 'org.example' version '1.0-SNAPSHOT' +sourceCompatibility = '8' repositories { mavenCentral() diff --git a/src/main/java/com/baseball/Baseball.java b/src/main/java/com/baseball/Baseball.java new file mode 100644 index 0000000..89f68e2 --- /dev/null +++ b/src/main/java/com/baseball/Baseball.java @@ -0,0 +1,57 @@ +package com.baseball; + +import java.util.Scanner; + +class Strike { + public String zone(int zones, int computer) { + + String rst = ""; + System.out.println(computer); + System.out.println(zones); + int ball = 0, str = 0; + for (int i = 0; i < String.valueOf(zones).length(); i++) { + if (String.valueOf(zones).charAt(i) == String.valueOf(computer).charAt(i)) { + str++; + continue; + } + for (int j = 0; j < 3; j++) { + if (String.valueOf(zones).charAt(i) == String.valueOf(computer).charAt(j)) { + ball++; + } + } + } + if(str == 3){ + return "3개의 숫자를 모두 맞히셨습니다! 게임 종료"; + } else if (str == 0 && ball == 0) { + return "nothing"; + } + rst = str > 0? str + "스트라이크 " : ""; + rst += ball > 0? ball + "볼 " : ""; + return rst; + } + + ; +}; + +public class Baseball { + public static void main(String[] args) { + int computer = (int) (Math.random() * (100 - 1) + 111); + Scanner scanner = new Scanner(System.in); + System.out.printf("숫자를 입력해 주세요 : "); + int zone = 0; + if(!scanner.hasNextInt()) { + scanner.next(); + System.err.print("1 ~ 9까지의 숫자를 3개 입력해 주세요. \n재 입력 :"); + } + zone = scanner.nextInt(); + Strike strike = new Strike(); + String result = strike.zone(zone, computer); + while (!result.equals("3개의 숫자를 모두 맞히셨습니다! 게임 종료")) { + System.out.println(result); + zone = scanner.nextInt(); + result = strike.zone(zone, computer); + } + scanner.close(); + System.out.println(result); + } +} From 34d48fa409a4df69e253e45ca6b0b790502dd5a6 Mon Sep 17 00:00:00 2001 From: chlwlgus4 Date: Sun, 21 Jun 2020 14:51:28 +0900 Subject: [PATCH 02/12] commit --- src/main/java/com/baseball/Baseball.java | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/src/main/java/com/baseball/Baseball.java b/src/main/java/com/baseball/Baseball.java index 89f68e2..c792e66 100644 --- a/src/main/java/com/baseball/Baseball.java +++ b/src/main/java/com/baseball/Baseball.java @@ -6,6 +6,10 @@ class Strike { public String zone(int zones, int computer) { String rst = ""; + if((int) Math.log10(zones)+1 > 3 || (int) Math.log10(zones)+1 < 3) { + System.out.println("3자리의 숫자만 입력 가능 합니다."); + return ""; + } System.out.println(computer); System.out.println(zones); int ball = 0, str = 0; @@ -48,6 +52,7 @@ public static void main(String[] args) { String result = strike.zone(zone, computer); while (!result.equals("3개의 숫자를 모두 맞히셨습니다! 게임 종료")) { System.out.println(result); + System.out.printf("숫자를 입력해 주세요 : "); zone = scanner.nextInt(); result = strike.zone(zone, computer); } From 6f51f29a6c90f384b85fb22f52705c61a43fe840 Mon Sep 17 00:00:00 2001 From: chlwl Date: Tue, 23 Jun 2020 00:39:05 +0900 Subject: [PATCH 03/12] commit --- src/main/java/com/baseball/Baseball.java | 40 ++++++++++++++---------- 1 file changed, 24 insertions(+), 16 deletions(-) diff --git a/src/main/java/com/baseball/Baseball.java b/src/main/java/com/baseball/Baseball.java index c792e66..7d40c30 100644 --- a/src/main/java/com/baseball/Baseball.java +++ b/src/main/java/com/baseball/Baseball.java @@ -24,13 +24,13 @@ public String zone(int zones, int computer) { } } } - if(str == 3){ - return "3개의 숫자를 모두 맞히셨습니다! 게임 종료"; + if (str == 3) { + return "clear"; } else if (str == 0 && ball == 0) { return "nothing"; } - rst = str > 0? str + "스트라이크 " : ""; - rst += ball > 0? ball + "볼 " : ""; + rst = str > 0 ? str + "스트라이크 " : ""; + rst += ball > 0 ? ball + "볼 " : ""; return rst; } @@ -40,23 +40,31 @@ public String zone(int zones, int computer) { public class Baseball { public static void main(String[] args) { int computer = (int) (Math.random() * (100 - 1) + 111); - Scanner scanner = new Scanner(System.in); - System.out.printf("숫자를 입력해 주세요 : "); int zone = 0; - if(!scanner.hasNextInt()) { - scanner.next(); - System.err.print("1 ~ 9까지의 숫자를 3개 입력해 주세요. \n재 입력 :"); - } - zone = scanner.nextInt(); + Scanner scanner = new Scanner(System.in); + Strike strike = new Strike(); - String result = strike.zone(zone, computer); - while (!result.equals("3개의 숫자를 모두 맞히셨습니다! 게임 종료")) { - System.out.println(result); + String result = ""; + int restart = 0; + + while (true) { System.out.printf("숫자를 입력해 주세요 : "); zone = scanner.nextInt(); result = strike.zone(zone, computer); + + if (result.equals("clear")) { + System.out.println("3개의 숫자를 모두 맞히셨습니다! 게임 종료"); + System.out.println("게임을 새로 시작하려면 1, 종료하려면 2를 입력하세요."); + restart = scanner.nextInt(); + if (restart == 2) { + scanner.close(); + break; + } else { + computer = (int) (Math.random() * (100 - 1) + 111); + } + } else { + System.out.println(result); + } } - scanner.close(); - System.out.println(result); } } From 5156650d890282095de3222308b84b9789f65450 Mon Sep 17 00:00:00 2001 From: chlwlgus4 Date: Fri, 26 Jun 2020 21:03:24 +0900 Subject: [PATCH 04/12] commit --- src/main/java/com/baseball/Baseball.java | 69 ++++++++++++++---------- 1 file changed, 40 insertions(+), 29 deletions(-) diff --git a/src/main/java/com/baseball/Baseball.java b/src/main/java/com/baseball/Baseball.java index c792e66..70fc186 100644 --- a/src/main/java/com/baseball/Baseball.java +++ b/src/main/java/com/baseball/Baseball.java @@ -4,14 +4,10 @@ class Strike { public String zone(int zones, int computer) { - - String rst = ""; - if((int) Math.log10(zones)+1 > 3 || (int) Math.log10(zones)+1 < 3) { + if (!verification(zones)) { System.out.println("3자리의 숫자만 입력 가능 합니다."); return ""; } - System.out.println(computer); - System.out.println(zones); int ball = 0, str = 0; for (int i = 0; i < String.valueOf(zones).length(); i++) { if (String.valueOf(zones).charAt(i) == String.valueOf(computer).charAt(i)) { @@ -19,44 +15,59 @@ public String zone(int zones, int computer) { continue; } for (int j = 0; j < 3; j++) { - if (String.valueOf(zones).charAt(i) == String.valueOf(computer).charAt(j)) { - ball++; - } + if (String.valueOf(zones).charAt(i) == String.valueOf(computer).charAt(j)) ball++; } } - if(str == 3){ - return "3개의 숫자를 모두 맞히셨습니다! 게임 종료"; + return result(str, ball); + } + + public String result(int str, int ball) { + String rst = ""; + if (str == 3) { + System.out.println("3개의 숫자를 모두 맞히셨습니다! 게임 종료"); + System.out.println("게임을 새로 시작하려면 1, 종료하려면 2를 입력하세요"); + return "clear"; } else if (str == 0 && ball == 0) { return "nothing"; } - rst = str > 0? str + "스트라이크 " : ""; - rst += ball > 0? ball + "볼 " : ""; + if (str > 0) rst = str + "스트라이크 "; + if (ball > 0) rst += ball + "볼 "; + + System.out.println(rst); return rst; } - ; + public Boolean verification(int zones) { + + if ((int) Math.log10(zones) + 1 > 3 || (int) Math.log10(zones) + 1 < 3) { + return false; + } + return true; + } }; public class Baseball { + public static int computer = (int) (Math.random() * (100 - 1) + 111); + public static String msg = ""; + public static Scanner scanner = new Scanner(System.in); + public static Strike strike = new Strike(); + public static int zone = 0; + public static int coin = 0; + public static void main(String[] args) { - int computer = (int) (Math.random() * (100 - 1) + 111); - Scanner scanner = new Scanner(System.in); - System.out.printf("숫자를 입력해 주세요 : "); - int zone = 0; - if(!scanner.hasNextInt()) { - scanner.next(); - System.err.print("1 ~ 9까지의 숫자를 3개 입력해 주세요. \n재 입력 :"); - } - zone = scanner.nextInt(); - Strike strike = new Strike(); - String result = strike.zone(zone, computer); - while (!result.equals("3개의 숫자를 모두 맞히셨습니다! 게임 종료")) { - System.out.println(result); + while (true) { System.out.printf("숫자를 입력해 주세요 : "); zone = scanner.nextInt(); - result = strike.zone(zone, computer); + msg = strike.zone(zone, computer); + if (msg.equals("clear")) { + coin = scanner.nextInt(); + if (coin == 2) { + scanner.close(); + break; + } else { + computer = (int) (Math.random() * (100 - 1) + 111); + } + } } - scanner.close(); - System.out.println(result); } } From 05c2852c6af6a6df401a2ab4eaa6df130e742df1 Mon Sep 17 00:00:00 2001 From: chlwlgus4 Date: Fri, 26 Jun 2020 21:05:43 +0900 Subject: [PATCH 05/12] commit --- src/main/java/com/baseball/Baseball.java | 69 ++++++++++++++---------- 1 file changed, 40 insertions(+), 29 deletions(-) diff --git a/src/main/java/com/baseball/Baseball.java b/src/main/java/com/baseball/Baseball.java index c792e66..70fc186 100644 --- a/src/main/java/com/baseball/Baseball.java +++ b/src/main/java/com/baseball/Baseball.java @@ -4,14 +4,10 @@ class Strike { public String zone(int zones, int computer) { - - String rst = ""; - if((int) Math.log10(zones)+1 > 3 || (int) Math.log10(zones)+1 < 3) { + if (!verification(zones)) { System.out.println("3자리의 숫자만 입력 가능 합니다."); return ""; } - System.out.println(computer); - System.out.println(zones); int ball = 0, str = 0; for (int i = 0; i < String.valueOf(zones).length(); i++) { if (String.valueOf(zones).charAt(i) == String.valueOf(computer).charAt(i)) { @@ -19,44 +15,59 @@ public String zone(int zones, int computer) { continue; } for (int j = 0; j < 3; j++) { - if (String.valueOf(zones).charAt(i) == String.valueOf(computer).charAt(j)) { - ball++; - } + if (String.valueOf(zones).charAt(i) == String.valueOf(computer).charAt(j)) ball++; } } - if(str == 3){ - return "3개의 숫자를 모두 맞히셨습니다! 게임 종료"; + return result(str, ball); + } + + public String result(int str, int ball) { + String rst = ""; + if (str == 3) { + System.out.println("3개의 숫자를 모두 맞히셨습니다! 게임 종료"); + System.out.println("게임을 새로 시작하려면 1, 종료하려면 2를 입력하세요"); + return "clear"; } else if (str == 0 && ball == 0) { return "nothing"; } - rst = str > 0? str + "스트라이크 " : ""; - rst += ball > 0? ball + "볼 " : ""; + if (str > 0) rst = str + "스트라이크 "; + if (ball > 0) rst += ball + "볼 "; + + System.out.println(rst); return rst; } - ; + public Boolean verification(int zones) { + + if ((int) Math.log10(zones) + 1 > 3 || (int) Math.log10(zones) + 1 < 3) { + return false; + } + return true; + } }; public class Baseball { + public static int computer = (int) (Math.random() * (100 - 1) + 111); + public static String msg = ""; + public static Scanner scanner = new Scanner(System.in); + public static Strike strike = new Strike(); + public static int zone = 0; + public static int coin = 0; + public static void main(String[] args) { - int computer = (int) (Math.random() * (100 - 1) + 111); - Scanner scanner = new Scanner(System.in); - System.out.printf("숫자를 입력해 주세요 : "); - int zone = 0; - if(!scanner.hasNextInt()) { - scanner.next(); - System.err.print("1 ~ 9까지의 숫자를 3개 입력해 주세요. \n재 입력 :"); - } - zone = scanner.nextInt(); - Strike strike = new Strike(); - String result = strike.zone(zone, computer); - while (!result.equals("3개의 숫자를 모두 맞히셨습니다! 게임 종료")) { - System.out.println(result); + while (true) { System.out.printf("숫자를 입력해 주세요 : "); zone = scanner.nextInt(); - result = strike.zone(zone, computer); + msg = strike.zone(zone, computer); + if (msg.equals("clear")) { + coin = scanner.nextInt(); + if (coin == 2) { + scanner.close(); + break; + } else { + computer = (int) (Math.random() * (100 - 1) + 111); + } + } } - scanner.close(); - System.out.println(result); } } From f799fa8b78fdf8617ddf2ab5b7fa4106d9c7ad7b Mon Sep 17 00:00:00 2001 From: chlwlgus4 Date: Fri, 26 Jun 2020 21:10:46 +0900 Subject: [PATCH 06/12] commit --- src/main/java/com/baseball/Baseball.java | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/src/main/java/com/baseball/Baseball.java b/src/main/java/com/baseball/Baseball.java index 70fc186..cb9a0e6 100644 --- a/src/main/java/com/baseball/Baseball.java +++ b/src/main/java/com/baseball/Baseball.java @@ -4,6 +4,8 @@ class Strike { public String zone(int zones, int computer) { + System.out.println(computer); + System.out.println(zones); if (!verification(zones)) { System.out.println("3자리의 숫자만 입력 가능 합니다."); return ""; @@ -28,7 +30,7 @@ public String result(int str, int ball) { System.out.println("게임을 새로 시작하려면 1, 종료하려면 2를 입력하세요"); return "clear"; } else if (str == 0 && ball == 0) { - return "nothing"; + rst = "nothing"; } if (str > 0) rst = str + "스트라이크 "; if (ball > 0) rst += ball + "볼 "; From bdecc529ee394bc782880a8978766b11f7d7a4b3 Mon Sep 17 00:00:00 2001 From: chlwlgus4 Date: Mon, 3 Aug 2020 22:43:24 +0900 Subject: [PATCH 07/12] =?UTF-8?q?=EC=95=BC=EA=B5=AC=EA=B2=8C=EC=9E=84=20?= =?UTF-8?q?=EB=8B=A4=EC=8B=9C?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- README.md | 4 +- src/main/java/com/baseball/Baseball.java | 70 +----------------------- src/main/java/empty.txt | 0 3 files changed, 4 insertions(+), 70 deletions(-) delete mode 100644 src/main/java/empty.txt diff --git a/README.md b/README.md index 2a95f86..830dd5a 100644 --- a/README.md +++ b/README.md @@ -1,3 +1,5 @@ # 기능 목록 +
      컴퓨터 볼 생성
    +
      볼 맞추기
    + -
      \ No newline at end of file diff --git a/src/main/java/com/baseball/Baseball.java b/src/main/java/com/baseball/Baseball.java index cb9a0e6..460915e 100644 --- a/src/main/java/com/baseball/Baseball.java +++ b/src/main/java/com/baseball/Baseball.java @@ -1,75 +1,7 @@ package com.baseball; -import java.util.Scanner; - -class Strike { - public String zone(int zones, int computer) { - System.out.println(computer); - System.out.println(zones); - if (!verification(zones)) { - System.out.println("3자리의 숫자만 입력 가능 합니다."); - return ""; - } - int ball = 0, str = 0; - for (int i = 0; i < String.valueOf(zones).length(); i++) { - if (String.valueOf(zones).charAt(i) == String.valueOf(computer).charAt(i)) { - str++; - continue; - } - for (int j = 0; j < 3; j++) { - if (String.valueOf(zones).charAt(i) == String.valueOf(computer).charAt(j)) ball++; - } - } - return result(str, ball); - } - - public String result(int str, int ball) { - String rst = ""; - if (str == 3) { - System.out.println("3개의 숫자를 모두 맞히셨습니다! 게임 종료"); - System.out.println("게임을 새로 시작하려면 1, 종료하려면 2를 입력하세요"); - return "clear"; - } else if (str == 0 && ball == 0) { - rst = "nothing"; - } - if (str > 0) rst = str + "스트라이크 "; - if (ball > 0) rst += ball + "볼 "; - - System.out.println(rst); - return rst; - } - - public Boolean verification(int zones) { - - if ((int) Math.log10(zones) + 1 > 3 || (int) Math.log10(zones) + 1 < 3) { - return false; - } - return true; - } -}; - public class Baseball { - public static int computer = (int) (Math.random() * (100 - 1) + 111); - public static String msg = ""; - public static Scanner scanner = new Scanner(System.in); - public static Strike strike = new Strike(); - public static int zone = 0; - public static int coin = 0; - public static void main(String[] args) { - while (true) { - System.out.printf("숫자를 입력해 주세요 : "); - zone = scanner.nextInt(); - msg = strike.zone(zone, computer); - if (msg.equals("clear")) { - coin = scanner.nextInt(); - if (coin == 2) { - scanner.close(); - break; - } else { - computer = (int) (Math.random() * (100 - 1) + 111); - } - } - } + System.out.println("hello word"); } } diff --git a/src/main/java/empty.txt b/src/main/java/empty.txt deleted file mode 100644 index e69de29..0000000 From 7e869a0c15b5899395002929b566a1e4072e23c7 Mon Sep 17 00:00:00 2001 From: chlwlgus4 Date: Tue, 4 Aug 2020 00:17:02 +0900 Subject: [PATCH 08/12] =?UTF-8?q?=ED=8C=A8=ED=82=A4=EC=A7=80,=20=ED=81=B4?= =?UTF-8?q?=EB=9E=98=EC=8A=A4=20=EC=83=9D=EC=84=B1?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../com/baseball/BaseBallMainApplication.java | 9 +++++++++ src/main/java/com/baseball/Baseball.java | 7 ------- src/main/java/com/baseball/domain/Ball.java | 6 ++++++ src/main/java/com/baseball/view/InputView.java | 15 +++++++++++++++ src/main/java/com/baseball/view/OutputView.java | 4 ++++ 5 files changed, 34 insertions(+), 7 deletions(-) create mode 100644 src/main/java/com/baseball/BaseBallMainApplication.java delete mode 100644 src/main/java/com/baseball/Baseball.java create mode 100644 src/main/java/com/baseball/domain/Ball.java create mode 100644 src/main/java/com/baseball/view/InputView.java create mode 100644 src/main/java/com/baseball/view/OutputView.java diff --git a/src/main/java/com/baseball/BaseBallMainApplication.java b/src/main/java/com/baseball/BaseBallMainApplication.java new file mode 100644 index 0000000..1c74171 --- /dev/null +++ b/src/main/java/com/baseball/BaseBallMainApplication.java @@ -0,0 +1,9 @@ +package com.baseball; + +import java.io.IOException; + +public class BaseBallMainApplication { + public static void main(String[] args) throws IOException { + + } +} diff --git a/src/main/java/com/baseball/Baseball.java b/src/main/java/com/baseball/Baseball.java deleted file mode 100644 index 460915e..0000000 --- a/src/main/java/com/baseball/Baseball.java +++ /dev/null @@ -1,7 +0,0 @@ -package com.baseball; - -public class Baseball { - public static void main(String[] args) { - System.out.println("hello word"); - } -} diff --git a/src/main/java/com/baseball/domain/Ball.java b/src/main/java/com/baseball/domain/Ball.java new file mode 100644 index 0000000..84f8ae8 --- /dev/null +++ b/src/main/java/com/baseball/domain/Ball.java @@ -0,0 +1,6 @@ +package com.baseball.domain; + +public class Ball { + int ball; + +} diff --git a/src/main/java/com/baseball/view/InputView.java b/src/main/java/com/baseball/view/InputView.java new file mode 100644 index 0000000..f1a8030 --- /dev/null +++ b/src/main/java/com/baseball/view/InputView.java @@ -0,0 +1,15 @@ +package com.baseball.view; + +import java.io.BufferedReader; +import java.io.IOException; +import java.io.InputStreamReader; + +public class InputView { + private static final BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); + + public static Integer inputBalls() throws IOException { + System.out.print("숫자를 입력해주세요 : "); + return Integer.parseInt(br.readLine()); + }; + +} diff --git a/src/main/java/com/baseball/view/OutputView.java b/src/main/java/com/baseball/view/OutputView.java new file mode 100644 index 0000000..2569db2 --- /dev/null +++ b/src/main/java/com/baseball/view/OutputView.java @@ -0,0 +1,4 @@ +package com.baseball.view; + +public class OutputView { +} From a4ed1ae8476a716f5534663dc1c006ca08d94fec Mon Sep 17 00:00:00 2001 From: chlwlgus4 Date: Thu, 6 Aug 2020 23:38:04 +0900 Subject: [PATCH 09/12] =?UTF-8?q?=EB=B2=88=ED=98=B8=20=EC=9E=85=EB=A0=A5,?= =?UTF-8?q?=20=EB=A9=94=EC=8B=9C=EC=A7=80=20=EC=B6=9C=EB=A0=A5,=20ENUM=20?= =?UTF-8?q?=ED=81=B4=EB=9E=98=EC=8A=A4=20=EC=83=9D=EC=84=B1?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../com/baseball/BaseBallMainApplication.java | 5 ++++- src/main/java/com/baseball/domain/Ball.java | 5 ++++- .../baseball/domain/BaseBallPlayService.java | 18 ++++++++++++++++++ .../com/baseball/domain/BaseballPlayImpl.java | 7 +++++++ src/main/java/com/baseball/mssage/Message.java | 15 +++++++++++++++ src/main/java/com/baseball/view/InputView.java | 1 - .../java/com/baseball/view/OutputView.java | 6 ++++++ 7 files changed, 54 insertions(+), 3 deletions(-) create mode 100644 src/main/java/com/baseball/domain/BaseBallPlayService.java create mode 100644 src/main/java/com/baseball/domain/BaseballPlayImpl.java create mode 100644 src/main/java/com/baseball/mssage/Message.java diff --git a/src/main/java/com/baseball/BaseBallMainApplication.java b/src/main/java/com/baseball/BaseBallMainApplication.java index 1c74171..8e5e4b6 100644 --- a/src/main/java/com/baseball/BaseBallMainApplication.java +++ b/src/main/java/com/baseball/BaseBallMainApplication.java @@ -1,9 +1,12 @@ package com.baseball; +import com.baseball.domain.BaseBallPlayService; + import java.io.IOException; public class BaseBallMainApplication { public static void main(String[] args) throws IOException { - + BaseBallPlayService baseBallPlayService = new BaseBallPlayService(); + baseBallPlayService.playGame(); } } diff --git a/src/main/java/com/baseball/domain/Ball.java b/src/main/java/com/baseball/domain/Ball.java index 84f8ae8..e39da57 100644 --- a/src/main/java/com/baseball/domain/Ball.java +++ b/src/main/java/com/baseball/domain/Ball.java @@ -2,5 +2,8 @@ public class Ball { int ball; - + public int createComputeBall() { + this.ball = (int) (Math.random()*100)+111; + return this.ball; + } } diff --git a/src/main/java/com/baseball/domain/BaseBallPlayService.java b/src/main/java/com/baseball/domain/BaseBallPlayService.java new file mode 100644 index 0000000..a30d448 --- /dev/null +++ b/src/main/java/com/baseball/domain/BaseBallPlayService.java @@ -0,0 +1,18 @@ +package com.baseball.domain; + +import com.baseball.view.InputView; +import com.baseball.view.OutputView; + +import java.io.IOException; + +public class BaseBallPlayService implements BaseballPlayImpl{ + private static InputView inputView; + private static OutputView outputView = new OutputView(); + private static int computerBall = new Ball().createComputeBall(); + @Override + public void playGame() throws IOException { + System.out.println(computerBall); + this.outputView.startInputNumberMessage(); + this.inputView.inputBalls(); + } +} diff --git a/src/main/java/com/baseball/domain/BaseballPlayImpl.java b/src/main/java/com/baseball/domain/BaseballPlayImpl.java new file mode 100644 index 0000000..804e623 --- /dev/null +++ b/src/main/java/com/baseball/domain/BaseballPlayImpl.java @@ -0,0 +1,7 @@ +package com.baseball.domain; + +import java.io.IOException; + +public interface BaseballPlayImpl { + void playGame() throws IOException; +} diff --git a/src/main/java/com/baseball/mssage/Message.java b/src/main/java/com/baseball/mssage/Message.java new file mode 100644 index 0000000..45b3993 --- /dev/null +++ b/src/main/java/com/baseball/mssage/Message.java @@ -0,0 +1,15 @@ +package com.baseball.mssage; + +public enum Message { + START_MESSAGE("숫자를 입력해주세요 : "); + + private final String message; + + Message(String message) { + this.message = message; + } + + public String getMessage() { + return message; + } +} diff --git a/src/main/java/com/baseball/view/InputView.java b/src/main/java/com/baseball/view/InputView.java index f1a8030..41e9ed0 100644 --- a/src/main/java/com/baseball/view/InputView.java +++ b/src/main/java/com/baseball/view/InputView.java @@ -8,7 +8,6 @@ public class InputView { private static final BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); public static Integer inputBalls() throws IOException { - System.out.print("숫자를 입력해주세요 : "); return Integer.parseInt(br.readLine()); }; diff --git a/src/main/java/com/baseball/view/OutputView.java b/src/main/java/com/baseball/view/OutputView.java index 2569db2..9d8a4fc 100644 --- a/src/main/java/com/baseball/view/OutputView.java +++ b/src/main/java/com/baseball/view/OutputView.java @@ -1,4 +1,10 @@ package com.baseball.view; +import com.baseball.mssage.Message; + public class OutputView { + + public void startInputNumberMessage() { + System.out.print(Message.START_MESSAGE.getMessage()); + } } From 70ebcb7d73f8a3f9bfd01001654352353c181f2f Mon Sep 17 00:00:00 2001 From: chlwl Date: Sat, 8 Aug 2020 19:25:02 +0900 Subject: [PATCH 10/12] =?UTF-8?q?exception=20=EC=B2=98=EB=A6=AC=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 --- .../baseball/domain/BaseBallPlayService.java | 19 +++++++++++++++++-- .../java/com/baseball/mssage/Message.java | 4 ++-- .../java/com/baseball/view/OutputView.java | 12 ++++++++++-- 3 files changed, 29 insertions(+), 6 deletions(-) diff --git a/src/main/java/com/baseball/domain/BaseBallPlayService.java b/src/main/java/com/baseball/domain/BaseBallPlayService.java index a30d448..92f9c2d 100644 --- a/src/main/java/com/baseball/domain/BaseBallPlayService.java +++ b/src/main/java/com/baseball/domain/BaseBallPlayService.java @@ -9,10 +9,25 @@ public class BaseBallPlayService implements BaseballPlayImpl{ private static InputView inputView; private static OutputView outputView = new OutputView(); private static int computerBall = new Ball().createComputeBall(); + @Override public void playGame() throws IOException { System.out.println(computerBall); - this.outputView.startInputNumberMessage(); - this.inputView.inputBalls(); + this.outputView.messagePrint("START"); + int userBall = this.inputView.inputBalls(); + + this.userBallNumberVerification(userBall); } + + public void userBallNumberVerification(int userBall) { + try { + if ((int) (Math.log10(userBall) + 1) > 3) { + throw new IllegalArgumentException(); + } + } catch (IllegalArgumentException e) { + this.outputView.messagePrint("VERIFICATION"); + e.printStackTrace(); + } + } + } diff --git a/src/main/java/com/baseball/mssage/Message.java b/src/main/java/com/baseball/mssage/Message.java index 45b3993..fde2e4c 100644 --- a/src/main/java/com/baseball/mssage/Message.java +++ b/src/main/java/com/baseball/mssage/Message.java @@ -1,8 +1,8 @@ package com.baseball.mssage; public enum Message { - START_MESSAGE("숫자를 입력해주세요 : "); - + START_MESSAGE("숫자를 입력해주세요 : "), + VERIFICATION_MESSAGE("볼 입력이 잘못되었습니다."); private final String message; Message(String message) { diff --git a/src/main/java/com/baseball/view/OutputView.java b/src/main/java/com/baseball/view/OutputView.java index 9d8a4fc..3bcdbb7 100644 --- a/src/main/java/com/baseball/view/OutputView.java +++ b/src/main/java/com/baseball/view/OutputView.java @@ -4,7 +4,15 @@ public class OutputView { - public void startInputNumberMessage() { - System.out.print(Message.START_MESSAGE.getMessage()); + public void messagePrint(String message) { + switch (message) { + case "START": + System.out.println(Message.START_MESSAGE.getMessage()); + break; + case "VERIFICATION": + System.out.println(Message.VERIFICATION_MESSAGE.getMessage()); + break; + } + } } From 4f46fe807ba9fe0033def16c032d00b928423c83 Mon Sep 17 00:00:00 2001 From: chlwlgus4 Date: Sun, 9 Aug 2020 23:16:56 +0900 Subject: [PATCH 11/12] =?UTF-8?q?=EA=B8=B0=EB=8A=A5=20=EB=A9=94=EC=86=8C?= =?UTF-8?q?=EB=93=9C=20=EC=B6=94=EA=B0=80,=20=EC=99=84=EB=A3=8C?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- README.md | 13 ++- .../com/baseball/BaseBallMainApplication.java | 4 +- src/main/java/com/baseball/domain/Ball.java | 36 ++++++++- .../baseball/domain/BaseBallPlayService.java | 81 +++++++++++++++---- .../java/com/baseball/mssage/Message.java | 5 +- .../java/com/baseball/view/InputView.java | 22 +++-- .../java/com/baseball/view/OutputView.java | 10 ++- 7 files changed, 136 insertions(+), 35 deletions(-) diff --git a/README.md b/README.md index 830dd5a..4d2bc4e 100644 --- a/README.md +++ b/README.md @@ -1,5 +1,14 @@ # 기능 목록 -
        컴퓨터 볼 생성
      -
        볼 맞추기
      +
        게임 시작 +
          컴퓨터 볼 생성 +
            볼 중복 검사
          +
        +
          유저, 컴퓨터 볼 비교 +
            결과 저장
          +
        +
          조건에 맞으면 종료 +
            재시작 or 종료
          +
        +
      diff --git a/src/main/java/com/baseball/BaseBallMainApplication.java b/src/main/java/com/baseball/BaseBallMainApplication.java index 8e5e4b6..0c2bf27 100644 --- a/src/main/java/com/baseball/BaseBallMainApplication.java +++ b/src/main/java/com/baseball/BaseBallMainApplication.java @@ -2,10 +2,8 @@ import com.baseball.domain.BaseBallPlayService; -import java.io.IOException; - public class BaseBallMainApplication { - public static void main(String[] args) throws IOException { + public static void main(String[] args) { BaseBallPlayService baseBallPlayService = new BaseBallPlayService(); baseBallPlayService.playGame(); } diff --git a/src/main/java/com/baseball/domain/Ball.java b/src/main/java/com/baseball/domain/Ball.java index e39da57..7e81809 100644 --- a/src/main/java/com/baseball/domain/Ball.java +++ b/src/main/java/com/baseball/domain/Ball.java @@ -1,9 +1,37 @@ package com.baseball.domain; public class Ball { - int ball; - public int createComputeBall() { - this.ball = (int) (Math.random()*100)+111; - return this.ball; + String computerBall; + String userBall; + String findBallBuffer; + int strikeCount = 0; + int ballCount = 0; + + StringBuffer pitchZone = new StringBuffer(); + StringBuilder stringBuilder = new StringBuilder(); + + public String createComputeBall() { + do { + int createNumber = (int) (Math.random() * 9) + 1; + if (createNumber > 0) { + stringBuilder.append(createNumber); + this.computerBallInspection(createNumber); + } + } while (stringBuilder.length() != 3); + computerBall = stringBuilder.toString(); + stringBuilder.delete(0, stringBuilder.length()); + findBallBuffer = computerBall; + return computerBall; } + + public void computerBallInspection(int number) { + if (stringBuilder.length() >= 2) { + int index = stringBuilder.substring(0, stringBuilder.length()-1).indexOf(String.valueOf(number)); + if (index > -1) { + stringBuilder.delete(stringBuilder.length()-1, stringBuilder.length()); + createComputeBall(); + } + } + } + } diff --git a/src/main/java/com/baseball/domain/BaseBallPlayService.java b/src/main/java/com/baseball/domain/BaseBallPlayService.java index 92f9c2d..35baf2b 100644 --- a/src/main/java/com/baseball/domain/BaseBallPlayService.java +++ b/src/main/java/com/baseball/domain/BaseBallPlayService.java @@ -3,31 +3,80 @@ import com.baseball.view.InputView; import com.baseball.view.OutputView; -import java.io.IOException; +import java.util.regex.Matcher; +import java.util.regex.Pattern; -public class BaseBallPlayService implements BaseballPlayImpl{ - private static InputView inputView; - private static OutputView outputView = new OutputView(); - private static int computerBall = new Ball().createComputeBall(); +public class BaseBallPlayService implements BaseballPlayImpl { + private static final OutputView outputView = new OutputView(); + private static final Ball ball = new Ball(); + private static String computerBall = ball.createComputeBall(); @Override - public void playGame() throws IOException { - System.out.println(computerBall); - this.outputView.messagePrint("START"); - int userBall = this.inputView.inputBalls(); - - this.userBallNumberVerification(userBall); + public void playGame() { + outputView.messagePrint("START", ""); + ball.userBall = InputView.inputBalls(); + this.userBallNumberVerification(ball.userBall); + this.baseBallMatching(ball.userBall); + outputView.messagePrint("GAME_RESULT", ball.pitchZone.toString()); + this.messageDelete(); + this.gameRestartOrGameEnd(); } - public void userBallNumberVerification(int userBall) { + public void userBallNumberVerification(String userBall) { try { - if ((int) (Math.log10(userBall) + 1) > 3) { - throw new IllegalArgumentException(); - } + Pattern pattern = Pattern.compile("(^[0-9]{3})"); + Matcher matchingResult = pattern.matcher(String.valueOf(userBall)); + if (!matchingResult.find()) throw new IllegalArgumentException(); } catch (IllegalArgumentException e) { - this.outputView.messagePrint("VERIFICATION"); + outputView.messagePrint("VERIFICATION", ""); + InputView.getClose(); e.printStackTrace(); + throw e; + } + } + + public void baseBallMatching(String userBall) { + if (!userBall.trim().isEmpty()) { + if (String.valueOf(userBall.charAt(0)).equals(String.valueOf(computerBall.charAt(0)))) { + ball.strikeCount++; + } + if (ball.findBallBuffer.indexOf(String.valueOf(userBall.charAt(0))) > 0) { + ball.ballCount++; + } + userBall = userBall.substring(1); + computerBall = computerBall.substring(1); + baseBallMatching(userBall); + } else { + if (ball.strikeCount > 0) ball.pitchZone.append(ball.strikeCount).append(" 스트라이크 "); + if (ball.ballCount > 0) ball.pitchZone.append(ball.ballCount).append(" 볼"); } } + public void gameRestartOrGameEnd() { + int coin = 0; + if (ball.strikeCount < 3) { + computerBall = String.valueOf(ball.computerBall); + playGame(); + } else { + outputView.messagePrint("GAME_COMPLETE", ball.pitchZone.toString()); + coin = InputView.inputCoin(); + } + this.messageDelete(); + if(coin == 1) this.gameReset(); + else InputView.getClose(); + } + + public void gameReset() { + computerBall = ball.createComputeBall(); + ball.strikeCount = 0; + ball.ballCount = 0; + this.playGame(); + } + + public void messageDelete() { + ball.strikeCount = 0; + ball.ballCount = 0; + ball.pitchZone.delete(0, ball.pitchZone.length()); + } + } diff --git a/src/main/java/com/baseball/mssage/Message.java b/src/main/java/com/baseball/mssage/Message.java index fde2e4c..636a0db 100644 --- a/src/main/java/com/baseball/mssage/Message.java +++ b/src/main/java/com/baseball/mssage/Message.java @@ -2,7 +2,10 @@ public enum Message { START_MESSAGE("숫자를 입력해주세요 : "), - VERIFICATION_MESSAGE("볼 입력이 잘못되었습니다."); + VERIFICATION_MESSAGE("볼 입력이 잘못되었습니다."), + GAME_RESULT_MESSAGE("낫 싱"), + GAME_COMPLETE_MESSAGE("3개의 숫자를 모두 맞히셨습니다! 게임 종료 \n게임을 새로 시작하려면 1, 종료하려면 2를 입력하세요."); + private final String message; Message(String message) { diff --git a/src/main/java/com/baseball/view/InputView.java b/src/main/java/com/baseball/view/InputView.java index 41e9ed0..94f8c08 100644 --- a/src/main/java/com/baseball/view/InputView.java +++ b/src/main/java/com/baseball/view/InputView.java @@ -1,14 +1,22 @@ package com.baseball.view; -import java.io.BufferedReader; -import java.io.IOException; -import java.io.InputStreamReader; +import java.util.Scanner; public class InputView { - private static final BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); + private static Scanner scanner; + public static String inputBalls() { + scanner = new Scanner(System.in); + return scanner.nextLine(); + } + + public static int inputCoin() { + scanner = new Scanner(System.in); + return scanner.nextInt(); + } + + public static void getClose() { + scanner.close(); + } - public static Integer inputBalls() throws IOException { - return Integer.parseInt(br.readLine()); - }; } diff --git a/src/main/java/com/baseball/view/OutputView.java b/src/main/java/com/baseball/view/OutputView.java index 3bcdbb7..2a9848f 100644 --- a/src/main/java/com/baseball/view/OutputView.java +++ b/src/main/java/com/baseball/view/OutputView.java @@ -4,7 +4,7 @@ public class OutputView { - public void messagePrint(String message) { + public void messagePrint(String message, String resultMessage) { switch (message) { case "START": System.out.println(Message.START_MESSAGE.getMessage()); @@ -12,7 +12,13 @@ public void messagePrint(String message) { case "VERIFICATION": System.out.println(Message.VERIFICATION_MESSAGE.getMessage()); break; + case "GAME_RESULT": + if (!resultMessage.isEmpty()) System.out.println(resultMessage); + else System.out.println(Message.GAME_RESULT_MESSAGE.getMessage()); + break; + case "GAME_COMPLETE": + System.out.println(Message.GAME_COMPLETE_MESSAGE.getMessage()); + break; } - } } From a53635987d56df5bf84709fcba3653002e3079e0 Mon Sep 17 00:00:00 2001 From: chlwlgus4 Date: Sun, 9 Aug 2020 23:32:55 +0900 Subject: [PATCH 12/12] =?UTF-8?q?=EA=B2=B0=EA=B3=BC=20=EC=B6=9C=EB=A0=A5?= =?UTF-8?q?=20=EC=88=98=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/com/baseball/domain/BaseBallPlayService.java | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/src/main/java/com/baseball/domain/BaseBallPlayService.java b/src/main/java/com/baseball/domain/BaseBallPlayService.java index 35baf2b..0923e2d 100644 --- a/src/main/java/com/baseball/domain/BaseBallPlayService.java +++ b/src/main/java/com/baseball/domain/BaseBallPlayService.java @@ -16,9 +16,10 @@ public void playGame() { outputView.messagePrint("START", ""); ball.userBall = InputView.inputBalls(); this.userBallNumberVerification(ball.userBall); - this.baseBallMatching(ball.userBall); - outputView.messagePrint("GAME_RESULT", ball.pitchZone.toString()); this.messageDelete(); + this.baseBallMatching(ball.userBall); + if (ball.strikeCount < 3) outputView.messagePrint("GAME_RESULT", ball.pitchZone.toString()); + else outputView.messagePrint("GAME_RESULT", "3 스트라이크"); this.gameRestartOrGameEnd(); } @@ -36,6 +37,7 @@ public void userBallNumberVerification(String userBall) { } public void baseBallMatching(String userBall) { + System.out.println(computerBall); if (!userBall.trim().isEmpty()) { if (String.valueOf(userBall.charAt(0)).equals(String.valueOf(computerBall.charAt(0)))) { ball.strikeCount++; @@ -62,7 +64,7 @@ public void gameRestartOrGameEnd() { coin = InputView.inputCoin(); } this.messageDelete(); - if(coin == 1) this.gameReset(); + if (coin == 1) this.gameReset(); else InputView.getClose(); }