diff --git a/src/main/java/baseball/Application.java b/src/main/java/baseball/Application.java index dd95a34214..f6a78cdf36 100644 --- a/src/main/java/baseball/Application.java +++ b/src/main/java/baseball/Application.java @@ -1,7 +1,97 @@ package baseball; +import camp.nextstep.edu.missionutils.Console; + +import java.util.*; + +// M model -> 계산 로직 데이터 +// v View -> 입력 출력 +// C Controller -> 모델 뷰를 합쳐서 관리함 + public class Application { + public static void main(String[] args) { // TODO: 프로그램 구현 + while (true) { + //게임 시작 + System.out.print("숫자 야구 게임을 시작합니다."); + startGame(); + + System.out.println("게임을 새로 시작하려면 1, 종료하려면 2를 입력하세요."); + int continueAnswer = Integer.parseInt(Console.readLine()); + if (continueAnswer == 1) continue; + else if (continueAnswer == 2) { + break; + } + } + } + + private static void startGame() { + while (true) { + //정답 배열 생성 + List answerNumbers = makeAnswer(); + + //볼, 스트라이크 판별 + while (true) { + //숫자 입력받고 list에 저장 + List userNumbers = getNumbers(); + Result result = verifyNumbers(answerNumbers, userNumbers); + + if (result.hasBall()) { + System.out.println(result.ball + "볼"); + } + if (result.strike == 1 || result.strike == 2) { + System.out.println(result.strike + "스트라이크"); + } else if (result.isNothing()) { + System.out.println("낫싱"); + } + if (result.strike == 3) { + System.out.println("3개의 숫자를 모두 맞히셨습니다! 게임 종료"); + break; + } else continue; + } + } + } + + private static List makeAnswer() { + List answerNumbers = new ArrayList<>(); + Random random = new Random(); + + while(answerNumbers.size() < 3) { + int number = random.nextInt(9) + 1; //1~9 + if (!answerNumbers.contains(number)) { + answerNumbers.add(number); + } + } + + return answerNumbers; + } + + private static Result verifyNumbers(List answerNumbers, List userNumbers) { + int ball = 0; + int strike = 0; + + for (int i = 0; i < userNumbers.size(); i++) { + if (answerNumbers.contains(userNumbers.get(i))) { + if (answerNumbers.get(i) == userNumbers.get(i)) { + strike++; + } + else ball++; + } + } + return new Result(strike, ball); + } + + private static List getNumbers() { + List userInput = new ArrayList<>(); + + System.out.print("\n숫자를 입력해주세요: "); + String input = Console.readLine(); + + for (int i = 0; i < input.length(); i++) { + userInput.add(input.charAt(i) - '0'); + } + + return userInput; } -} +} \ No newline at end of file diff --git a/src/main/java/baseball/Result.java b/src/main/java/baseball/Result.java new file mode 100644 index 0000000000..465d79bb15 --- /dev/null +++ b/src/main/java/baseball/Result.java @@ -0,0 +1,19 @@ +package baseball; + +public class Result { + public int strike; + public int ball; + + public Result(int strike, int ball) { + this.strike = strike; + this.ball = ball; + } + + public boolean hasBall() { + return ball > 0; + } + + public boolean isNothing() { + return ball == 0 && strike == 0; + } +}