diff --git a/src/main/java/Baseball.java b/src/main/java/Baseball.java new file mode 100644 index 0000000..c5a1a9f --- /dev/null +++ b/src/main/java/Baseball.java @@ -0,0 +1,20 @@ +public class Baseball { + private String comNumber; + private String userNumber; + + public String getComNumber() { + return comNumber; + } + + public void setComNumber(String comNumber) { + this.comNumber = comNumber; + } + + public String getUserNumber() { + return userNumber; + } + + public void setUserNumber(String userNumber) { + this.userNumber = userNumber; + } +} diff --git a/src/main/java/BaseballServiceImpl.java b/src/main/java/BaseballServiceImpl.java new file mode 100644 index 0000000..790b791 --- /dev/null +++ b/src/main/java/BaseballServiceImpl.java @@ -0,0 +1,92 @@ +public class BaseballServiceImpl implements SportsGameService { + + @Override + public String playGame(String userNumber) { + Baseball b = new Baseball(); + b.setComNumber(getRandomInteger(9, 1, 3)); + b.setUserNumber(userNumber); + System.out.println("상대방 숫자는 " + b.getComNumber() + "입니다."); + return checkNumber(b.getUserNumber(), b.getComNumber()); + } + + private static final Integer NUM_DIGIT = 3; + private static final String OVER_DIGIT_MESSAGE = "세자리 수를 입력해주세요."; + @Override + public Boolean checkLength(String userNumber) { + if (userNumber.length() != NUM_DIGIT) { + System.out.println(OVER_DIGIT_MESSAGE); + return false; + } + return true; + } + private static final Integer GAME_QUIT = 000; + @Override + public Boolean gameQuit(String userNumber) { + if (userNumber.equals(GAME_QUIT)) { + return false; + } + return true; + } + + private static final String NOT_INT_MESSAGE = "문자는 안됩니다. 숫자를 입력하세요."; + @Override + public Boolean isInt(String userNumber) { + try { + Integer.parseInt(userNumber); + return true; + } catch (NumberFormatException e) { + System.out.println(NOT_INT_MESSAGE); + return false; + } + + } + + private String checkNumber(String userNumber, String comNumber) { + int ballCount = 0; + int strikeCount = 0; + int cn = Integer.parseInt(comNumber); + for (int i = 0; i < comNumber.length(); i++) { + String kcn = cn % 10 + ""; + int chk = reverseStr(userNumber).lastIndexOf(kcn); + if (chk > -1 && chk != i) { + ballCount++; + } + if (chk == i) { + strikeCount++; + } + cn = cn / 10; + } + return result(ballCount, strikeCount); + } + + private String result(int ballCount, int strikeCount) { + String res = ""; + if (ballCount > 0) { + res += ballCount + " ball "; + } + if (strikeCount > 0) { + res += strikeCount + " strike"; + } + if (ballCount == 0 && strikeCount == 0) { + res = "nothing"; + } + return res; + } + + private String getRandomInteger(int maximum, int minimum, int length) { + String res = ""; + while(!(res.length() == length)) { + int num = ((int) (Math.random() * (maximum - minimum))) + minimum; + if (res.indexOf(num + "") == -1) { + res +=num; + } + } + return res; + } + + + private String reverseStr(String s) { + return (new StringBuffer(s)).reverse().toString(); + } +} + diff --git a/src/main/java/Main.java b/src/main/java/Main.java new file mode 100644 index 0000000..daa4fc8 --- /dev/null +++ b/src/main/java/Main.java @@ -0,0 +1,21 @@ +import java.util.Scanner; + +public class Main { + public static void main(String[] args) { + SportsGameService baseballGame = new BaseballServiceImpl(); + System.out.println("1부터 9까지로 이루어진 숫자 3개를 눌러주세요.\n더 이상 게임을 원하지 않을경우 000 을 입력하세요."); + while (true) { + Scanner sc = new Scanner(System.in); + System.out.println("숫자를 입력하세요."); + String userNumber = sc.next(); + if (!baseballGame.gameQuit(userNumber)) { + break; + } + if (!baseballGame.isInt(userNumber) || !baseballGame.checkLength(userNumber)) { + continue; + } + System.out.println(baseballGame.playGame(userNumber)); + } + System.out.println("게임이 종료됐습니다. 감사합니다."); + } +} diff --git a/src/main/java/SportsGameService.java b/src/main/java/SportsGameService.java new file mode 100644 index 0000000..fe7688a --- /dev/null +++ b/src/main/java/SportsGameService.java @@ -0,0 +1,7 @@ +public interface SportsGameService { +// baseball game 뿐만 아니라 나중에 soccer 등의 확장성으 고려해 service 로 만듦 + String playGame(String userInput); + Boolean gameQuit(String userNumber); + Boolean isInt(String userNumber); + Boolean checkLength(String userNumber); +} diff --git a/src/main/java/method1.md b/src/main/java/method1.md new file mode 100644 index 0000000..e69de29