From 974c0f2e6e18cac78fcc0d61057d207578f7c340 Mon Sep 17 00:00:00 2001 From: honinbo6355 Date: Tue, 28 Jul 2020 01:34:19 +0900 Subject: [PATCH 1/6] initial commit --- src/main/java/BaseballGame.java | 5 +++++ src/main/java/Main.java | 6 ++++++ src/main/java/empty.txt | 0 3 files changed, 11 insertions(+) create mode 100644 src/main/java/BaseballGame.java create mode 100644 src/main/java/Main.java delete mode 100644 src/main/java/empty.txt diff --git a/src/main/java/BaseballGame.java b/src/main/java/BaseballGame.java new file mode 100644 index 0000000..b7a70ab --- /dev/null +++ b/src/main/java/BaseballGame.java @@ -0,0 +1,5 @@ +public class BaseballGame { + public void start() { + + } +} diff --git a/src/main/java/Main.java b/src/main/java/Main.java new file mode 100644 index 0000000..f7d481a --- /dev/null +++ b/src/main/java/Main.java @@ -0,0 +1,6 @@ +public class Main { + public static void main(String[] args) { + BaseballGame baseballGame = new BaseballGame(); + baseballGame.start(); + } +} diff --git a/src/main/java/empty.txt b/src/main/java/empty.txt deleted file mode 100644 index e69de29..0000000 From 8d887f2d2145448316bdfcaee07e02eec98d3f8b Mon Sep 17 00:00:00 2001 From: songseail Date: Tue, 28 Jul 2020 17:59:20 +0900 Subject: [PATCH 2/6] =?UTF-8?q?=EB=9E=9C=EB=8D=A4=20=EC=88=AB=EC=9E=90=20?= =?UTF-8?q?=EC=83=9D=EC=84=B1?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- README.md | 14 ++++++++++++++ src/main/java/BaseballGame.java | 31 +++++++++++++++++++++++++++++++ 2 files changed, 45 insertions(+) diff --git a/README.md b/README.md index e69de29..931ebff 100644 --- a/README.md +++ b/README.md @@ -0,0 +1,14 @@ +### 기능 목록 + +- 컴퓨터 랜덤 숫자 3개 만들기 + - 중복되는 숫자 있는지 체크, 있을 경우 다시 생성 + + + +- 게임 시작 + - 플레이어 3개 숫자 입력하기 + - 자릿수 계산하기 + - 모두 맞지 않았다면 결과를 출력하고 다시 플레이어 숫자 입력 받음 + - 모두 맞췄다면 성공 메시지 출력함 + - 게임을 새로 시작할지 여부에 따른 분기 처리 + diff --git a/src/main/java/BaseballGame.java b/src/main/java/BaseballGame.java index b7a70ab..5d1df06 100644 --- a/src/main/java/BaseballGame.java +++ b/src/main/java/BaseballGame.java @@ -1,5 +1,36 @@ +import java.util.Random; +import java.util.Scanner; + public class BaseballGame { + private int number1; + private int number2; + private int number3; + public void start() { + setRandomNumber(); + Scanner scanner = new Scanner(System.in); + + while (true) { + System.out.print("숫자를 입력해주세요 : "); + int number = scanner.nextInt(); + checkNumber(number); + } + } + + private void checkNumber(int number) { + + } + + private void setRandomNumber() { + Random random = new Random(); + + while (true) { + number1 = random.nextInt(9) + 1; + number2 = random.nextInt(9) + 1; + number3 = random.nextInt(9) + 1; + if ((number1 != number2) && (number1 != number3) && (number2 != number3)) + break; + } } } From d6eb063b476982217ccf2fb737e8ac7575bd290b Mon Sep 17 00:00:00 2001 From: songseail Date: Wed, 29 Jul 2020 18:01:30 +0900 Subject: [PATCH 3/6] =?UTF-8?q?=EC=9E=90=EB=A6=BF=EC=88=98=20=EA=B3=84?= =?UTF-8?q?=EC=82=B0=20=EB=A1=9C=EC=A7=81=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/BaseballGame.java | 57 ++++++++++++++++++++++++++------- 1 file changed, 46 insertions(+), 11 deletions(-) diff --git a/src/main/java/BaseballGame.java b/src/main/java/BaseballGame.java index 5d1df06..0ec106b 100644 --- a/src/main/java/BaseballGame.java +++ b/src/main/java/BaseballGame.java @@ -2,34 +2,69 @@ import java.util.Scanner; public class BaseballGame { - private int number1; - private int number2; - private int number3; + Scanner scanner; + private String computerNum; + private String userNum; + private int strike; + private int ball; + + public BaseballGame() { + this.scanner = new Scanner(System.in); + this.strike = 0; + this.ball = 0; + } public void start() { setRandomNumber(); - Scanner scanner = new Scanner(System.in); while (true) { System.out.print("숫자를 입력해주세요 : "); - int number = scanner.nextInt(); - checkNumber(number); + userNum = String.valueOf(scanner.nextInt()); + checkNumber(); + break; } } - private void checkNumber(int number) { + private void checkNumber() { + for (int i=0; i 0) + System.out.print(strike + " 스트라이크 "); + if (ball > 0) + System.out.print(ball + "볼"); + System.out.println(""); + if (strike == 3) { + System.out.println("3개의 숫자를 모두 맞히셨습니다! 게임 종료"); + System.out.println("게임을 새로 시작하려면 1, 종료하려면 2를 입력하세요."); + } + + int selectMenuNum = scanner.nextInt(); + + switch (selectMenuNum) { + case 1 : + start(); + case 2 : + System.exit(0); + } } private void setRandomNumber() { Random random = new Random(); while (true) { - number1 = random.nextInt(9) + 1; - number2 = random.nextInt(9) + 1; - number3 = random.nextInt(9) + 1; + computerNum = String.valueOf(random.nextInt(900) + 100); - if ((number1 != number2) && (number1 != number3) && (number2 != number3)) + if ((computerNum.charAt(0) != computerNum.charAt(1) && (computerNum.charAt(0) != computerNum.charAt(2)) && (computerNum.charAt(1) != computerNum.charAt(2)))) break; } } From c1c57a89550c02f432ef0692eb2e706f0a79c436 Mon Sep 17 00:00:00 2001 From: songseail Date: Fri, 31 Jul 2020 18:10:08 +0900 Subject: [PATCH 4/6] =?UTF-8?q?=EC=97=AD=ED=95=A0=20=EB=B6=84=EB=A6=AC=20?= =?UTF-8?q?=EC=9E=91=EC=97=85?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/main/java/BaseballGame.java | 70 +++++++++++++----------- src/main/java/domain/Computer.java | 23 ++++++++ src/main/java/domain/Result.java | 11 ++++ src/main/java/domain/User.java | 43 +++++++++++++++ src/main/java/view/BaseballGameView.java | 10 ++++ 5 files changed, 124 insertions(+), 33 deletions(-) create mode 100644 src/main/java/domain/Computer.java create mode 100644 src/main/java/domain/Result.java create mode 100644 src/main/java/domain/User.java create mode 100644 src/main/java/view/BaseballGameView.java diff --git a/src/main/java/BaseballGame.java b/src/main/java/BaseballGame.java index 0ec106b..b6010cc 100644 --- a/src/main/java/BaseballGame.java +++ b/src/main/java/BaseballGame.java @@ -1,52 +1,56 @@ +import domain.Computer; +import domain.Result; +import domain.User; +import view.BaseballGameView; + import java.util.Random; import java.util.Scanner; public class BaseballGame { Scanner scanner; - private String computerNum; - private String userNum; - private int strike; - private int ball; + private Computer computer; + private User user; + private Result result; public BaseballGame() { this.scanner = new Scanner(System.in); - this.strike = 0; - this.ball = 0; + this.computer = new Computer(); + this.user = new User(); + this.result = new Result(); } public void start() { + initResultStats(); setRandomNumber(); + enterNumber(); + selectMenu(); + } - while (true) { - System.out.print("숫자를 입력해주세요 : "); - userNum = String.valueOf(scanner.nextInt()); - checkNumber(); - break; - } + private void initResultStats() { + result.initStrikeAndBallScore(); } - private void checkNumber() { - for (int i=0; i 0) - System.out.print(strike + " 스트라이크 "); - if (ball > 0) - System.out.print(ball + "볼"); - System.out.println(""); + } - if (strike == 3) { - System.out.println("3개의 숫자를 모두 맞히셨습니다! 게임 종료"); - System.out.println("게임을 새로 시작하려면 1, 종료하려면 2를 입력하세요."); - } + private void selectMenu() { + System.out.println(BaseballGameView.SUCCESS_MESSAGE); int selectMenuNum = scanner.nextInt(); @@ -62,10 +66,10 @@ private void setRandomNumber() { Random random = new Random(); while (true) { - computerNum = String.valueOf(random.nextInt(900) + 100); - - if ((computerNum.charAt(0) != computerNum.charAt(1) && (computerNum.charAt(0) != computerNum.charAt(2)) && (computerNum.charAt(1) != computerNum.charAt(2)))) + computer.makeRandomNumberToString(random.nextInt(900) + 100); + if (computer.notExistsDuplicateDigit()) break; } + System.out.println("computerNum : " + computer.getComputerNum()); } } diff --git a/src/main/java/domain/Computer.java b/src/main/java/domain/Computer.java new file mode 100644 index 0000000..4661931 --- /dev/null +++ b/src/main/java/domain/Computer.java @@ -0,0 +1,23 @@ +package domain; + +public class Computer { + private String computerNum; + + public void makeRandomNumberToString(int randomNumber) { + this.computerNum = String.valueOf(randomNumber); + } + + public boolean notExistsDuplicateDigit() { + return (computerNum.charAt(0) != computerNum.charAt(1)) && + (computerNum.charAt(0) != computerNum.charAt(2)) && + (computerNum.charAt(1) != computerNum.charAt(2)); + } + + public String getComputerNum() { + return computerNum; + } + + public void setComputerNum(String computerNum) { + this.computerNum = computerNum; + } +} diff --git a/src/main/java/domain/Result.java b/src/main/java/domain/Result.java new file mode 100644 index 0000000..7f33bdf --- /dev/null +++ b/src/main/java/domain/Result.java @@ -0,0 +1,11 @@ +package domain; + +public class Result { + private int strike; + private int ball; + + public void initStrikeAndBallScore() { + this.strike = 0; + this.ball = 0; + } +} diff --git a/src/main/java/domain/User.java b/src/main/java/domain/User.java new file mode 100644 index 0000000..f747767 --- /dev/null +++ b/src/main/java/domain/User.java @@ -0,0 +1,43 @@ +package domain; + +import view.BaseballGameView; + +public class User { + private String userNum; + + public void inputNumberToString(int number) { + this.userNum = String.valueOf(number); + } + + public boolean notNumberLengthIsThree() { + return this.userNum.length() != 3; + } + + public boolean isCorrectNumber(Computer computer) { + String computerNum = computer.getComputerNum(); + for (int i=0; i 0) + System.out.print(strike + BaseballGameView.STRIKE_MESSAGE); + if (ball > 0) + System.out.print(ball + BaseballGameView.BALL_MESSAGE); + if (strike == 0 && ball == 0) + System.out.print(BaseballGameView.NO_STRIKE_NO_BALL_MESSAGE); + System.out.println(""); + + if (strike == 3) { + return true; + } + + return false; + } +} diff --git a/src/main/java/view/BaseballGameView.java b/src/main/java/view/BaseballGameView.java new file mode 100644 index 0000000..aaea01c --- /dev/null +++ b/src/main/java/view/BaseballGameView.java @@ -0,0 +1,10 @@ +package view; + +public final class BaseballGameView { + public static final String INPUT_NUMBER_MESSAGE = "숫자를 입력해주세요 : "; + public static final String INCORRECT_DIGIT_MESSAGE = "세 자리 수를 입력해야 합니다."; + public static final String STRIKE_MESSAGE = " 스트라이크 "; + public static final String BALL_MESSAGE = "볼"; + public static final String NO_STRIKE_NO_BALL_MESSAGE = "낫싱"; + public static final String SUCCESS_MESSAGE = "3개의 숫자를 모두 맞히셨습니다! 게임 종료" + System.lineSeparator() + "게임을 새로 시작하려면 1, 종료하려면 2를 입력하세요."; +} From 69e2e3590d806501dadabed85f0aaa8c23313f1f Mon Sep 17 00:00:00 2001 From: songseail Date: Wed, 5 Aug 2020 18:06:10 +0900 Subject: [PATCH 5/6] =?UTF-8?q?=EC=97=AD=ED=95=A0=20=EB=B6=84=EB=A6=AC=20?= =?UTF-8?q?=EB=A6=AC=ED=8C=A9=ED=86=A0=EB=A7=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/main/java/BaseballGame.java | 75 ------------------- src/main/java/Main.java | 6 +- .../Message.java} | 4 +- src/main/java/controller/BaseballConsole.java | 61 +++++++++++++++ src/main/java/domain/Computer.java | 4 - src/main/java/domain/Result.java | 11 --- src/main/java/domain/User.java | 30 +------- src/main/java/service/BaseballService.java | 62 +++++++++++++++ 8 files changed, 131 insertions(+), 122 deletions(-) delete mode 100644 src/main/java/BaseballGame.java rename src/main/java/{view/BaseballGameView.java => constant/Message.java} (92%) create mode 100644 src/main/java/controller/BaseballConsole.java delete mode 100644 src/main/java/domain/Result.java create mode 100644 src/main/java/service/BaseballService.java diff --git a/src/main/java/BaseballGame.java b/src/main/java/BaseballGame.java deleted file mode 100644 index b6010cc..0000000 --- a/src/main/java/BaseballGame.java +++ /dev/null @@ -1,75 +0,0 @@ -import domain.Computer; -import domain.Result; -import domain.User; -import view.BaseballGameView; - -import java.util.Random; -import java.util.Scanner; - -public class BaseballGame { - Scanner scanner; - private Computer computer; - private User user; - private Result result; - - public BaseballGame() { - this.scanner = new Scanner(System.in); - this.computer = new Computer(); - this.user = new User(); - this.result = new Result(); - } - - public void start() { - initResultStats(); - setRandomNumber(); - enterNumber(); - selectMenu(); - } - - private void initResultStats() { - result.initStrikeAndBallScore(); - } - - private void enterNumber() { - while (true) { - try { - System.out.print(BaseballGameView.INPUT_NUMBER_MESSAGE); - user.inputNumberToString(scanner.nextInt()); - - if (user.notNumberLengthIsThree()) { - throw new Exception(BaseballGameView.INCORRECT_DIGIT_MESSAGE); - } - - if (user.isCorrectNumber(computer)) - break; - initResultStats(); - } catch (Exception e) { - System.out.println(e.getMessage()); - } - } - } - - private void selectMenu() { - System.out.println(BaseballGameView.SUCCESS_MESSAGE); - - int selectMenuNum = scanner.nextInt(); - - switch (selectMenuNum) { - case 1 : - start(); - case 2 : - System.exit(0); - } - } - - private void setRandomNumber() { - Random random = new Random(); - - while (true) { - computer.makeRandomNumberToString(random.nextInt(900) + 100); - if (computer.notExistsDuplicateDigit()) - break; - } - System.out.println("computerNum : " + computer.getComputerNum()); - } -} diff --git a/src/main/java/Main.java b/src/main/java/Main.java index f7d481a..9010a28 100644 --- a/src/main/java/Main.java +++ b/src/main/java/Main.java @@ -1,6 +1,8 @@ +import controller.BaseballConsole; + public class Main { public static void main(String[] args) { - BaseballGame baseballGame = new BaseballGame(); - baseballGame.start(); + BaseballConsole baseballConsole = new BaseballConsole(); + baseballConsole.start(); } } diff --git a/src/main/java/view/BaseballGameView.java b/src/main/java/constant/Message.java similarity index 92% rename from src/main/java/view/BaseballGameView.java rename to src/main/java/constant/Message.java index aaea01c..e72ff90 100644 --- a/src/main/java/view/BaseballGameView.java +++ b/src/main/java/constant/Message.java @@ -1,6 +1,6 @@ -package view; +package constant; -public final class BaseballGameView { +public final class Message { public static final String INPUT_NUMBER_MESSAGE = "숫자를 입력해주세요 : "; public static final String INCORRECT_DIGIT_MESSAGE = "세 자리 수를 입력해야 합니다."; public static final String STRIKE_MESSAGE = " 스트라이크 "; diff --git a/src/main/java/controller/BaseballConsole.java b/src/main/java/controller/BaseballConsole.java new file mode 100644 index 0000000..661737b --- /dev/null +++ b/src/main/java/controller/BaseballConsole.java @@ -0,0 +1,61 @@ +package controller; +import constant.Message; +import domain.Computer; +import domain.User; +import service.BaseballService; + +import java.util.Scanner; + +public class BaseballConsole { + private Scanner scanner; + private Computer computer; + private User user; + private BaseballService baseballService; + + public BaseballConsole() { + this.scanner = new Scanner(System.in); + this.computer = new Computer(); + this.user = new User(); + this.baseballService = new BaseballService(); + } + + public void start() { + while (true) { + baseballService.setRandomNumber(computer); + + enterNumber(); + selectMenu(); + } + } + + public void enterNumber() { + while (true) { + try { + System.out.print(Message.INPUT_NUMBER_MESSAGE); + user.inputNumberToString(scanner.nextInt()); + + if (user.notNumberLengthIsThree()) { + throw new Exception(Message.INCORRECT_DIGIT_MESSAGE); + } + + if (baseballService.isCorrectNumber(computer, user)) + break; + } catch (Exception e) { + System.out.println(e.getMessage()); + } + } + } + + private void selectMenu() { + System.out.println(Message.SUCCESS_MESSAGE); + + int selectMenuNum = scanner.nextInt(); + + switch (selectMenuNum) { + case 1 : + break; + case 2 : + System.exit(0); + } + } +} diff --git a/src/main/java/domain/Computer.java b/src/main/java/domain/Computer.java index 4661931..79745ee 100644 --- a/src/main/java/domain/Computer.java +++ b/src/main/java/domain/Computer.java @@ -16,8 +16,4 @@ public boolean notExistsDuplicateDigit() { public String getComputerNum() { return computerNum; } - - public void setComputerNum(String computerNum) { - this.computerNum = computerNum; - } } diff --git a/src/main/java/domain/Result.java b/src/main/java/domain/Result.java deleted file mode 100644 index 7f33bdf..0000000 --- a/src/main/java/domain/Result.java +++ /dev/null @@ -1,11 +0,0 @@ -package domain; - -public class Result { - private int strike; - private int ball; - - public void initStrikeAndBallScore() { - this.strike = 0; - this.ball = 0; - } -} diff --git a/src/main/java/domain/User.java b/src/main/java/domain/User.java index f747767..b7711e3 100644 --- a/src/main/java/domain/User.java +++ b/src/main/java/domain/User.java @@ -1,7 +1,5 @@ package domain; -import view.BaseballGameView; - public class User { private String userNum; @@ -13,31 +11,7 @@ public boolean notNumberLengthIsThree() { return this.userNum.length() != 3; } - public boolean isCorrectNumber(Computer computer) { - String computerNum = computer.getComputerNum(); - for (int i=0; i 0) - System.out.print(strike + BaseballGameView.STRIKE_MESSAGE); - if (ball > 0) - System.out.print(ball + BaseballGameView.BALL_MESSAGE); - if (strike == 0 && ball == 0) - System.out.print(BaseballGameView.NO_STRIKE_NO_BALL_MESSAGE); - System.out.println(""); - - if (strike == 3) { - return true; - } - - return false; + public String getUserNum() { + return userNum; } } diff --git a/src/main/java/service/BaseballService.java b/src/main/java/service/BaseballService.java new file mode 100644 index 0000000..81705e2 --- /dev/null +++ b/src/main/java/service/BaseballService.java @@ -0,0 +1,62 @@ +package service; + +import constant.Message; +import domain.Computer; +import domain.User; + +import java.util.Random; + +public class BaseballService { + public void setRandomNumber(Computer computer) { + Random random = new Random(); + + while (true) { + computer.makeRandomNumberToString(random.nextInt(900) + 100); + if (computer.notExistsDuplicateDigit()) + break; + } + System.out.println("computerNum : " + computer.getComputerNum()); + } + + public boolean isCorrectNumber(Computer computer, User user) { + String computerNum = computer.getComputerNum(); + String userNum = user.getUserNum(); + + int strike = getStrikeResult(); + int ball = getBallResult(); + +// for (int i=0; i 0) + System.out.print(strike + Message.STRIKE_MESSAGE); + if (ball > 0) + System.out.print(ball + Message.BALL_MESSAGE); + if (strike == 0 && ball == 0) + System.out.print(Message.NO_STRIKE_NO_BALL_MESSAGE); + System.out.println(""); + + if (strike == 3) { + return true; + } + + return false; + } + + private int getBallResult() { + + } + + private int getStrikeResult() { + + } +} From 1f533f2811605867db94bcd6acbe97e80a6be4a7 Mon Sep 17 00:00:00 2001 From: songseail Date: Fri, 7 Aug 2020 16:23:32 +0900 Subject: [PATCH 6/6] =?UTF-8?q?=EC=88=AB=EC=9E=90=20=EC=95=BC=EA=B5=AC=20?= =?UTF-8?q?=EA=B2=8C=EC=9E=84=20=EA=B5=AC=ED=98=84=20=EC=99=84=EB=A3=8C?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/main/java/constant/Message.java | 1 + src/main/java/controller/BaseballConsole.java | 28 ++++++--- src/main/java/domain/Result.java | 39 ++++++++++++ src/main/java/domain/User.java | 20 +++++- src/main/java/service/BaseballService.java | 62 +++++++++---------- 5 files changed, 109 insertions(+), 41 deletions(-) create mode 100644 src/main/java/domain/Result.java diff --git a/src/main/java/constant/Message.java b/src/main/java/constant/Message.java index e72ff90..78406a9 100644 --- a/src/main/java/constant/Message.java +++ b/src/main/java/constant/Message.java @@ -3,6 +3,7 @@ public final class Message { public static final String INPUT_NUMBER_MESSAGE = "숫자를 입력해주세요 : "; public static final String INCORRECT_DIGIT_MESSAGE = "세 자리 수를 입력해야 합니다."; + public static final String DUPLICATE_DIGIT_MESSAGE = "중복되는 수가 존재합니다."; public static final String STRIKE_MESSAGE = " 스트라이크 "; public static final String BALL_MESSAGE = "볼"; public static final String NO_STRIKE_NO_BALL_MESSAGE = "낫싱"; diff --git a/src/main/java/controller/BaseballConsole.java b/src/main/java/controller/BaseballConsole.java index 661737b..32c5d4f 100644 --- a/src/main/java/controller/BaseballConsole.java +++ b/src/main/java/controller/BaseballConsole.java @@ -1,6 +1,7 @@ package controller; import constant.Message; import domain.Computer; +import domain.Result; import domain.User; import service.BaseballService; @@ -10,12 +11,14 @@ public class BaseballConsole { private Scanner scanner; private Computer computer; private User user; + private Result result; private BaseballService baseballService; public BaseballConsole() { this.scanner = new Scanner(System.in); this.computer = new Computer(); this.user = new User(); + this.result = new Result(); this.baseballService = new BaseballService(); } @@ -32,14 +35,12 @@ public void enterNumber() { while (true) { try { System.out.print(Message.INPUT_NUMBER_MESSAGE); - user.inputNumberToString(scanner.nextInt()); - - if (user.notNumberLengthIsThree()) { - throw new Exception(Message.INCORRECT_DIGIT_MESSAGE); - } - - if (baseballService.isCorrectNumber(computer, user)) + user.inputNumberToString(scanner); + result = baseballService.getGameResult(computer, user); + printGameResult(result); + if (result.isThreeStrike()) { break; + } } catch (Exception e) { System.out.println(e.getMessage()); } @@ -58,4 +59,17 @@ private void selectMenu() { System.exit(0); } } + + private void printGameResult(Result result) { + int strike = result.getStrike(); + int ball = result.getBall(); + + if (strike > 0) + System.out.print(strike + Message.STRIKE_MESSAGE); + if (ball > 0) + System.out.print(ball + Message.BALL_MESSAGE); + if (strike == 0 && ball == 0) + System.out.print(Message.NO_STRIKE_NO_BALL_MESSAGE); + System.out.println(""); + } } diff --git a/src/main/java/domain/Result.java b/src/main/java/domain/Result.java new file mode 100644 index 0000000..b92a697 --- /dev/null +++ b/src/main/java/domain/Result.java @@ -0,0 +1,39 @@ +package domain; + +public class Result { + private int strike; + private int ball; + + public Result() { + this.strike = 0; + this.ball = 0; + } + + public void plusStrike() { + this.strike++; + } + + public void plusBall() { + this.ball++; + } + + public int getStrike() { + return strike; + } + + public void setStrike(int strike) { + this.strike = strike; + } + + public int getBall() { + return ball; + } + + public void setBall(int ball) { + this.ball = ball; + } + + public boolean isThreeStrike() { + return this.strike == 3; + } +} diff --git a/src/main/java/domain/User.java b/src/main/java/domain/User.java index b7711e3..43bd65d 100644 --- a/src/main/java/domain/User.java +++ b/src/main/java/domain/User.java @@ -1,16 +1,32 @@ package domain; +import constant.Message; + +import java.util.Scanner; + public class User { private String userNum; - public void inputNumberToString(int number) { - this.userNum = String.valueOf(number); + public void inputNumberToString(Scanner scanner) throws Exception { + this.userNum = String.valueOf(scanner.nextInt()); + + if (notNumberLengthIsThree()) { + throw new Exception(Message.INCORRECT_DIGIT_MESSAGE); + } else if (existsDuplicateDigit()) { + throw new Exception(Message.DUPLICATE_DIGIT_MESSAGE); + } } public boolean notNumberLengthIsThree() { return this.userNum.length() != 3; } + public boolean existsDuplicateDigit() { + return (userNum.charAt(0) == userNum.charAt(1)) || + (userNum.charAt(0) == userNum.charAt(2)) || + (userNum.charAt(1) == userNum.charAt(2)); + } + public String getUserNum() { return userNum; } diff --git a/src/main/java/service/BaseballService.java b/src/main/java/service/BaseballService.java index 81705e2..78990ba 100644 --- a/src/main/java/service/BaseballService.java +++ b/src/main/java/service/BaseballService.java @@ -1,7 +1,7 @@ package service; -import constant.Message; import domain.Computer; +import domain.Result; import domain.User; import java.util.Random; @@ -18,45 +18,43 @@ public void setRandomNumber(Computer computer) { System.out.println("computerNum : " + computer.getComputerNum()); } - public boolean isCorrectNumber(Computer computer, User user) { - String computerNum = computer.getComputerNum(); + public Result getGameResult(Computer computer, User user) { + Result gameResult = calculateGameResult(computer, user); + return gameResult; + } + + private Result calculateGameResult(Computer computer, User user) { String userNum = user.getUserNum(); + String computerNum = computer.getComputerNum(); + Result gameResult = new Result(); + + for (int i=0; i 0) - System.out.print(strike + Message.STRIKE_MESSAGE); - if (ball > 0) - System.out.print(ball + Message.BALL_MESSAGE); - if (strike == 0 && ball == 0) - System.out.print(Message.NO_STRIKE_NO_BALL_MESSAGE); - System.out.println(""); - - if (strike == 3) { - return true; + if (isStrike(userDigit, computerDigit)) { + gameResult.plusStrike(); + } else if (isBall(userDigit, computer)) { + gameResult.plusBall(); + } } - return false; + return gameResult; } - private int getBallResult() { - + private boolean isStrike(int userDigit, int computerDigit) { + return userDigit == computerDigit; } - private int getStrikeResult() { + private boolean isBall(int userDigit, Computer computer) { + String computerNum = computer.getComputerNum(); + for (int i=0; i