From d22bde82c25072639f8004e514d082b9f42f9547 Mon Sep 17 00:00:00 2001 From: yechan-kim <60172300+yechan-kim@users.noreply.github.com> Date: Thu, 18 Apr 2024 00:23:23 +0900 Subject: [PATCH 01/18] =?UTF-8?q?feat:=20=EC=9E=85=EB=A0=A5=20=EB=B7=B0=20?= =?UTF-8?q?=ED=81=B4=EB=9E=98=EC=8A=A4=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/leets/land/view/InputView.java | 57 ++++++++++++++++++++ 1 file changed, 57 insertions(+) create mode 100644 src/main/java/leets/land/view/InputView.java diff --git a/src/main/java/leets/land/view/InputView.java b/src/main/java/leets/land/view/InputView.java new file mode 100644 index 0000000..aba16e1 --- /dev/null +++ b/src/main/java/leets/land/view/InputView.java @@ -0,0 +1,57 @@ +package leets.land.view; + +import java.util.*; + +public class InputView { + final String VERSION_MESSAGE = "버전을 입력해주세요 (숫자 버전: 1, 영어 버전: 2) : "; + final String NUMBER_MESSAGE = "숫자를 입력해주세요(%d ~ %d) : "; + final String ALPHABET_MESSAGE = "영어를 입력해주세요(%c ~ %c) : "; + final Scanner sc = new Scanner(System.in); + final String newline = System.lineSeparator(); + + // 실행할 버전을 입력받는 함수입니다. + public int inputVersion() { + System.out.print(VERSION_MESSAGE); + try{ + return sc.nextInt(); + } catch (InputMismatchException e) { + System.out.println("[ERROR] 입력 문자의 타입이 맞지 않습니다."); + sc.nextLine(); + return inputVersion(); + } + } + + // 범위 내 숫자를 입력 받는 함수입니다. + public int inputNumberInRange(int startNumber, int endNumber) { + System.out.print(String.format(NUMBER_MESSAGE, startNumber, endNumber)); + int number; + + try { + number = sc.nextInt(); + sc.nextLine(); + return number; + } catch (InputMismatchException e) { + System.out.println("[ERROR] 입력 문자의 타입이 맞지 않습니다."); + sc.nextLine(); + return inputNumberInRange(startNumber, endNumber); + } + } + + // 범위 내 영어를 입력 받는 함수입니다. + public char inputAlphabetInRange(char startAlphabet, char endAlphabet) { + System.out.print(String.format(ALPHABET_MESSAGE, startAlphabet, endAlphabet)); + String alphabet = sc.nextLine(); + + if(alphabet.length() != 1) { + System.out.println("[ERROR] 한 글자만 입력해주세요."); + return inputAlphabetInRange(startAlphabet, endAlphabet); + } + + if(!alphabet.matches("[a-zA-Z]")) { + System.out.println("[ERROR] 입력 문자의 타입이 맞지 않습니다."); + return inputAlphabetInRange(startAlphabet, endAlphabet); + } + + return alphabet.charAt(0); + } +} \ No newline at end of file From 56f20d24a915419fae857a4fb8562b7ff8851037 Mon Sep 17 00:00:00 2001 From: yechan-kim <60172300+yechan-kim@users.noreply.github.com> Date: Thu, 18 Apr 2024 00:23:32 +0900 Subject: [PATCH 02/18] =?UTF-8?q?feat:=20=EC=B6=9C=EB=A0=A5=20=EB=B7=B0=20?= =?UTF-8?q?=ED=81=B4=EB=9E=98=EC=8A=A4=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/leets/land/view/OutputView.java | 10 ++++++++++ 1 file changed, 10 insertions(+) create mode 100644 src/main/java/leets/land/view/OutputView.java diff --git a/src/main/java/leets/land/view/OutputView.java b/src/main/java/leets/land/view/OutputView.java new file mode 100644 index 0000000..d87d02d --- /dev/null +++ b/src/main/java/leets/land/view/OutputView.java @@ -0,0 +1,10 @@ +package leets.land.view; + +public class OutputView { + final String COUNT_MESSAGE = "시도한 횟수 : %d회"; + + // 시도한 횟수를 출력하는 함수 + public void printCount(int count) { + System.out.print(String.format(COUNT_MESSAGE, count)); + } +} From e1ed0d3fe3c341f92ee6517c017fe77e9ab18b7b Mon Sep 17 00:00:00 2001 From: yechan-kim <60172300+yechan-kim@users.noreply.github.com> Date: Thu, 18 Apr 2024 00:34:28 +0900 Subject: [PATCH 03/18] =?UTF-8?q?feat:=20=EC=A0=95=EB=8B=B5=20=EC=84=A4?= =?UTF-8?q?=EC=A0=95=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/leets/land/domain/Answer.java | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) create mode 100644 src/main/java/leets/land/domain/Answer.java diff --git a/src/main/java/leets/land/domain/Answer.java b/src/main/java/leets/land/domain/Answer.java new file mode 100644 index 0000000..1045a1d --- /dev/null +++ b/src/main/java/leets/land/domain/Answer.java @@ -0,0 +1,17 @@ +package leets.land.domain; + +public class Answer { + public static int setNumber() { + return (int) (Math.random() * 100) + 1; + } + + public static char setAlphabet() { + char answer = (char) ((int) (Math.random() * 52) + 'A'); + + if (answer > 'z' || answer < 'A') { + return setAlphabet(); + } + + return answer; + } +} From b2c0e75db0cabff171c741aa6ee79171433fdc7b Mon Sep 17 00:00:00 2001 From: yechan-kim <60172300+yechan-kim@users.noreply.github.com> Date: Thu, 18 Apr 2024 00:36:12 +0900 Subject: [PATCH 04/18] =?UTF-8?q?feat:=20=EB=8F=84=EB=A9=94=EC=9D=B8=20?= =?UTF-8?q?=EC=9D=B8=ED=84=B0=ED=8E=98=EC=9D=B4=EC=8A=A4=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/leets/land/domain/UpDown.java | 27 +++++++++++++++++++++ 1 file changed, 27 insertions(+) create mode 100644 src/main/java/leets/land/domain/UpDown.java diff --git a/src/main/java/leets/land/domain/UpDown.java b/src/main/java/leets/land/domain/UpDown.java new file mode 100644 index 0000000..e75638b --- /dev/null +++ b/src/main/java/leets/land/domain/UpDown.java @@ -0,0 +1,27 @@ +package leets.land.domain; + +public interface UpDown { + int getAnswerAsInt(); + + char getAnswerAsChar(); + + int getStartAsInt(); + + char getStartAsChar(); + + int getEndAsInt(); + + char getEndAsChar(); + + int getCount(); + + void setStart(int start); + + void setEnd(int end); + + void increaseCount(); + + void validator(char alphabet); + + void validator(int number); +} \ No newline at end of file From f9eb4b70c7232b0bef108c215a79a74a00e1d085 Mon Sep 17 00:00:00 2001 From: yechan-kim <60172300+yechan-kim@users.noreply.github.com> Date: Thu, 18 Apr 2024 00:36:24 +0900 Subject: [PATCH 05/18] =?UTF-8?q?feat:=20=EC=88=AB=EC=9E=90=20=EA=B2=8C?= =?UTF-8?q?=EC=9E=84=20=EB=8F=84=EB=A9=94=EC=9D=B8=20=EA=B5=AC=ED=98=84?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/leets/land/domain/NumberUpDown.java | 69 +++++++++++++++++++ 1 file changed, 69 insertions(+) create mode 100644 src/main/java/leets/land/domain/NumberUpDown.java diff --git a/src/main/java/leets/land/domain/NumberUpDown.java b/src/main/java/leets/land/domain/NumberUpDown.java new file mode 100644 index 0000000..f017025 --- /dev/null +++ b/src/main/java/leets/land/domain/NumberUpDown.java @@ -0,0 +1,69 @@ +package leets.land.domain; + +public class NumberUpDown implements UpDown { + private final int answerNumber = Answer.setNumber(); + private int startNumber = 1, endNumber = 100; + private int count = 0; + + @Override + public int getAnswerAsInt() { + return answerNumber; + } + + @Override + public char getAnswerAsChar() { + return 0; + } + + @Override + public int getStartAsInt() { + return startNumber; + } + + @Override + public char getStartAsChar() { + return 0; + } + + @Override + public int getEndAsInt() { + return endNumber; + } + + @Override + public char getEndAsChar() { + return 0; + } + + @Override + public int getCount() { + return count; + } + + @Override + public void setStart(int start) { + startNumber = start; + } + + @Override + public void setEnd(int end) { + endNumber = end; + } + + @Override + public void increaseCount() { + count++; + } + + @Override + public void validator(char alphabet) { + return; + } + + @Override + public void validator(int number) { + if (number < startNumber || number > endNumber) { + throw new IllegalArgumentException("[ERROR] 범위 내의 숫자를 입력하세요."); + } + } +} From 3b866511d0b155c7f4bd13676fd598ad5af5c081 Mon Sep 17 00:00:00 2001 From: yechan-kim <60172300+yechan-kim@users.noreply.github.com> Date: Thu, 18 Apr 2024 00:36:33 +0900 Subject: [PATCH 06/18] =?UTF-8?q?feat:=20=EC=98=81=EC=96=B4=20=EA=B2=8C?= =?UTF-8?q?=EC=9E=84=20=EB=8F=84=EB=A9=94=EC=9D=B8=20=EA=B5=AC=ED=98=84?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../leets/land/domain/AlphabetUpDown.java | 77 +++++++++++++++++++ 1 file changed, 77 insertions(+) create mode 100644 src/main/java/leets/land/domain/AlphabetUpDown.java diff --git a/src/main/java/leets/land/domain/AlphabetUpDown.java b/src/main/java/leets/land/domain/AlphabetUpDown.java new file mode 100644 index 0000000..877435d --- /dev/null +++ b/src/main/java/leets/land/domain/AlphabetUpDown.java @@ -0,0 +1,77 @@ +package leets.land.domain; + +public class AlphabetUpDown implements UpDown { + private final char answerAlphabet = Answer.setAlphabet(); + private char startAlphabet = 'A', endAlphabet = 'z'; + private int count = 0; + + @Override + public int getAnswerAsInt() { + return 0; + } + + @Override + public char getAnswerAsChar() { + return answerAlphabet; + } + + @Override + public int getStartAsInt() { + return 0; + } + + @Override + public char getStartAsChar() { + return startAlphabet; + } + + @Override + public int getEndAsInt() { + return 0; + } + + @Override + public char getEndAsChar() { + return endAlphabet; + } + + @Override + public int getCount() { + return count; + } + + @Override + public void setStart(int start) { + if (start - 1 == 'Z') { + startAlphabet = 'a'; + } else { + startAlphabet = (char) start; + } + } + + @Override + public void setEnd(int end) { + if (end + 1 == 'a') { + endAlphabet = 'Z'; + } else { + endAlphabet = (char) end; + } + } + + @Override + public void increaseCount() { + count++; + } + + @Override + public void validator(char alphabet) { + if (alphabet < startAlphabet || alphabet > endAlphabet) { + throw new IllegalArgumentException("[ERROR] 범위 내의 알파벳을 입력하세요."); + } + } + + @Override + public void validator(int number) { + + } +} From 1165812ae5482a0227f056585007847763af58c5 Mon Sep 17 00:00:00 2001 From: yechan-kim <60172300+yechan-kim@users.noreply.github.com> Date: Thu, 18 Apr 2024 00:38:48 +0900 Subject: [PATCH 07/18] =?UTF-8?q?feat:=20=EA=B2=8C=EC=9E=84=20=EC=9D=B8?= =?UTF-8?q?=ED=84=B0=ED=8E=98=EC=9D=B4=EC=8A=A4=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/leets/land/controller/Game.java | 8 ++++++++ 1 file changed, 8 insertions(+) create mode 100644 src/main/java/leets/land/controller/Game.java diff --git a/src/main/java/leets/land/controller/Game.java b/src/main/java/leets/land/controller/Game.java new file mode 100644 index 0000000..6854f5f --- /dev/null +++ b/src/main/java/leets/land/controller/Game.java @@ -0,0 +1,8 @@ +package leets.land.controller; + +import leets.land.domain.UpDown; + +public interface Game { + void run(); + void play(UpDown upDown); +} From 2a5f58ee7c168fc32910dd22dae8007ebd5abb8b Mon Sep 17 00:00:00 2001 From: yechan-kim <60172300+yechan-kim@users.noreply.github.com> Date: Thu, 18 Apr 2024 00:39:08 +0900 Subject: [PATCH 08/18] =?UTF-8?q?feat:=20=EC=88=AB=EC=9E=90=20=EA=B2=8C?= =?UTF-8?q?=EC=9E=84=20=EA=B5=AC=ED=98=84?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../leets/land/controller/NumberGame.java | 44 +++++++++++++++++++ 1 file changed, 44 insertions(+) create mode 100644 src/main/java/leets/land/controller/NumberGame.java diff --git a/src/main/java/leets/land/controller/NumberGame.java b/src/main/java/leets/land/controller/NumberGame.java new file mode 100644 index 0000000..dc3357f --- /dev/null +++ b/src/main/java/leets/land/controller/NumberGame.java @@ -0,0 +1,44 @@ +package leets.land.controller; + +import leets.land.domain.NumberUpDown; +import leets.land.domain.UpDown; +import leets.land.view.InputView; +import leets.land.view.OutputView; + +public class NumberGame implements Game{ + final InputView inputView = new InputView(); + final OutputView outputView = new OutputView(); + + @Override + public void run() { + UpDown updown = new NumberUpDown(); + play(updown); + } + + @Override + public void play(UpDown updown) { + while (true) { + int number = inputView.inputNumberInRange(updown.getStartAsInt(), updown.getEndAsInt()); + + try{ + updown.validator(number); + } catch (IllegalArgumentException e) { + System.out.println(e.getMessage()); + continue; + } + + updown.increaseCount(); + + if (number == updown.getAnswerAsInt()) { + outputView.printCount(updown.getCount()); + break; + } else if (number < updown.getAnswerAsInt()) { + System.out.println("UP"); + updown.setStart(number + 1); + } else { + System.out.println("DOWN"); + updown.setEnd(number - 1); + } + } + } +} From a079b0d6c86647e4639bbbd550ad30468d21116d Mon Sep 17 00:00:00 2001 From: yechan-kim <60172300+yechan-kim@users.noreply.github.com> Date: Thu, 18 Apr 2024 00:39:18 +0900 Subject: [PATCH 09/18] =?UTF-8?q?feat:=20=EC=98=81=EC=96=B4=20=EA=B2=8C?= =?UTF-8?q?=EC=9E=84=20=EA=B5=AC=ED=98=84?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../leets/land/controller/AlphabetGame.java | 44 +++++++++++++++++++ 1 file changed, 44 insertions(+) create mode 100644 src/main/java/leets/land/controller/AlphabetGame.java diff --git a/src/main/java/leets/land/controller/AlphabetGame.java b/src/main/java/leets/land/controller/AlphabetGame.java new file mode 100644 index 0000000..22e74e1 --- /dev/null +++ b/src/main/java/leets/land/controller/AlphabetGame.java @@ -0,0 +1,44 @@ +package leets.land.controller; + +import leets.land.domain.AlphabetUpDown; +import leets.land.domain.UpDown; +import leets.land.view.InputView; +import leets.land.view.OutputView; + +public class AlphabetGame implements Game{ + final InputView inputView = new InputView(); + final OutputView outputView = new OutputView(); + + @Override + public void run() { + UpDown updown = new AlphabetUpDown(); + play(updown); + } + + @Override + public void play(UpDown updown) { + while (true) { + char alphabet = inputView.inputAlphabetInRange(updown.getStartAsChar(), updown.getEndAsChar()); + + try{ + updown.validator(alphabet); + } catch (IllegalArgumentException e) { + System.out.println(e.getMessage()); + continue; + } + + updown.increaseCount(); + + if (alphabet == updown.getAnswerAsChar()) { + outputView.printCount(updown.getCount()); + break; + } else if (alphabet < updown.getAnswerAsChar()) { + System.out.println("UP"); + updown.setStart(alphabet + 1); + } else { + System.out.println("DOWN"); + updown.setEnd(alphabet - 1); + } + } + } +} From 99f261bf2907ee10eddd6152cc20aff5cc953937 Mon Sep 17 00:00:00 2001 From: yechan-kim <60172300+yechan-kim@users.noreply.github.com> Date: Thu, 18 Apr 2024 00:42:04 +0900 Subject: [PATCH 10/18] =?UTF-8?q?feat:=20=EA=B2=8C=EC=9E=84=20=EC=82=B0?= =?UTF-8?q?=ED=83=9D=20=ED=98=B8=EC=B6=9C=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 --- .../leets/land/controller/GameLoader.java | 18 +++++++++++ src/main/java/leets/land/domain/Version.java | 32 +++++++++++++++++++ 2 files changed, 50 insertions(+) create mode 100644 src/main/java/leets/land/controller/GameLoader.java create mode 100644 src/main/java/leets/land/domain/Version.java diff --git a/src/main/java/leets/land/controller/GameLoader.java b/src/main/java/leets/land/controller/GameLoader.java new file mode 100644 index 0000000..c86a6f0 --- /dev/null +++ b/src/main/java/leets/land/controller/GameLoader.java @@ -0,0 +1,18 @@ +package leets.land.controller; + +import leets.land.domain.Version; +import leets.land.view.InputView; + +public class GameLoader { + final InputView inputView = new InputView(); + + public void load() { + Version version = inputVersion(); + version.run(); + } + + private Version inputVersion() { + int gameVersion = inputView.inputVersion(); + return Version.versionValidator(gameVersion); + } +} \ No newline at end of file diff --git a/src/main/java/leets/land/domain/Version.java b/src/main/java/leets/land/domain/Version.java new file mode 100644 index 0000000..27f2e06 --- /dev/null +++ b/src/main/java/leets/land/domain/Version.java @@ -0,0 +1,32 @@ +package leets.land.domain; + +import leets.land.controller.AlphabetGame; +import leets.land.controller.Game; +import leets.land.controller.NumberGame; + +public enum Version { + + NUMBER(1, new NumberGame()), + ALPHABET(2, new AlphabetGame()); + + private final int version; + private final Game game; + + Version(int version, Game game) { + this.version = version; + this.game = game; + } + + public static Version versionValidator(int version) { + for (Version gameVersion : Version.values()) { + if (gameVersion.version == version) { + return gameVersion; + } + } + throw new IllegalArgumentException("[ERROR] 존재하지 않는 버전입니다."); + } + + public void run() { + game.run(); + } +} \ No newline at end of file From ca9a4e46fecf199e57935e222107f13a76509110 Mon Sep 17 00:00:00 2001 From: yechan-kim <60172300+yechan-kim@users.noreply.github.com> Date: Thu, 18 Apr 2024 00:42:17 +0900 Subject: [PATCH 11/18] =?UTF-8?q?feat:=20=EC=8B=A4=ED=96=89=20=ED=95=A8?= =?UTF-8?q?=EC=88=98=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/leets/land/UpdownApplication.java | 12 +++++++----- 1 file changed, 7 insertions(+), 5 deletions(-) diff --git a/src/main/java/leets/land/UpdownApplication.java b/src/main/java/leets/land/UpdownApplication.java index 09d7ae5..d50d61c 100644 --- a/src/main/java/leets/land/UpdownApplication.java +++ b/src/main/java/leets/land/UpdownApplication.java @@ -1,8 +1,10 @@ package leets.land; -public class UpdownApplication { +import leets.land.controller.GameLoader; - public static void main(String[] args) { - System.out.print("hihi :D"); - } -} +public class UpdownApplication { + public static void main(String[] args) { + GameLoader gameLoader = new GameLoader(); + gameLoader.load(); + } +} \ No newline at end of file From 971ecff1381b0fbacab9f1e7915d25ddad206b48 Mon Sep 17 00:00:00 2001 From: yechan-kim <60172300+yechan-kim@users.noreply.github.com> Date: Thu, 18 Apr 2024 13:26:45 +0900 Subject: [PATCH 12/18] =?UTF-8?q?test(Version):=20=EA=B2=8C=EC=9E=84=20?= =?UTF-8?q?=EB=B2=84=EC=A0=84=20=EC=84=A0=ED=83=9D=20=ED=85=8C=EC=8A=A4?= =?UTF-8?q?=ED=8A=B8=20=EA=B5=AC=ED=98=84?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/leets/land/domain/VersionTest.java | 23 +++++++++++++++++++ 1 file changed, 23 insertions(+) create mode 100644 src/test/java/leets/land/domain/VersionTest.java diff --git a/src/test/java/leets/land/domain/VersionTest.java b/src/test/java/leets/land/domain/VersionTest.java new file mode 100644 index 0000000..89d1a9b --- /dev/null +++ b/src/test/java/leets/land/domain/VersionTest.java @@ -0,0 +1,23 @@ +package leets.land.domain; + +import org.junit.jupiter.api.Test; + +import static org.assertj.core.api.Assertions.assertThat; +import static org.junit.jupiter.api.Assertions.*; + +class VersionTest { + + @Test + void 없는_버전를_입력한_경우_예외를_반환한다() { + assertThrows(Exception.class, () -> { + Version.versionValidator(0); + }); + } + + @Test + void 입력_받은_버전에_맞는_게임을_실행한다() { + int version = 1; + Version actual = Version.versionValidator(version); + assertThat(actual).isEqualTo(Version.NUMBER); + } +} \ No newline at end of file From 60b263290c46c427aaf05f9b9e903bedb6bebfc3 Mon Sep 17 00:00:00 2001 From: yechan-kim <60172300+yechan-kim@users.noreply.github.com> Date: Thu, 18 Apr 2024 13:35:04 +0900 Subject: [PATCH 13/18] =?UTF-8?q?test(AlphabetUpDown):=20=EC=95=8C?= =?UTF-8?q?=ED=8C=8C=EB=B2=B3=20=EC=9E=85=EB=A0=A5=20=EB=B2=94=EC=9C=84=20?= =?UTF-8?q?=ED=85=8C=EC=8A=A4=ED=8A=B8=20=EA=B5=AC=ED=98=84?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../leets/land/domain/AlphabetUpDownTest.java | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) create mode 100644 src/test/java/leets/land/domain/AlphabetUpDownTest.java diff --git a/src/test/java/leets/land/domain/AlphabetUpDownTest.java b/src/test/java/leets/land/domain/AlphabetUpDownTest.java new file mode 100644 index 0000000..4395d55 --- /dev/null +++ b/src/test/java/leets/land/domain/AlphabetUpDownTest.java @@ -0,0 +1,16 @@ +package leets.land.domain; + +import org.junit.jupiter.api.Test; + +import static org.junit.jupiter.api.Assertions.*; + +class AlphabetUpDownTest { + AlphabetUpDown app = new AlphabetUpDown(); + + @Test + void 범위_외의_알파벳를_입력한_경우_예외를_반환한다() { + assertThrows(Exception.class, () -> { + app.validator((char)('A'-1)); + }); + } +} \ No newline at end of file From b14321ebcf4846c900e4a07216b9f199b933bb76 Mon Sep 17 00:00:00 2001 From: yechan-kim <60172300+yechan-kim@users.noreply.github.com> Date: Thu, 18 Apr 2024 13:35:21 +0900 Subject: [PATCH 14/18] =?UTF-8?q?test(NumberUpDown):=20=EC=88=AB=EC=9E=90?= =?UTF-8?q?=20=EC=9E=85=EB=A0=A5=20=EB=B2=94=EC=9C=84=20=ED=85=8C=EC=8A=A4?= =?UTF-8?q?=ED=8A=B8=20=EA=B5=AC=ED=98=84?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/leets/land/domain/NumberUpDownTest.java | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) create mode 100644 src/test/java/leets/land/domain/NumberUpDownTest.java diff --git a/src/test/java/leets/land/domain/NumberUpDownTest.java b/src/test/java/leets/land/domain/NumberUpDownTest.java new file mode 100644 index 0000000..ae02b8f --- /dev/null +++ b/src/test/java/leets/land/domain/NumberUpDownTest.java @@ -0,0 +1,16 @@ +package leets.land.domain; + +import org.junit.jupiter.api.Test; + +import static org.junit.jupiter.api.Assertions.*; + +class NumberUpDownTest { + NumberUpDown app = new NumberUpDown(); + + @Test + void 범위_외의_숫자를_입력한_경우_예외를_반환한다() { + assertThrows(Exception.class, () -> { + app.validator(0); + }); + } +} \ No newline at end of file From 529d4e60e0dc9a233b5eebef88efd818de1495fc Mon Sep 17 00:00:00 2001 From: yechan-kim <60172300+yechan-kim@users.noreply.github.com> Date: Thu, 18 Apr 2024 14:05:59 +0900 Subject: [PATCH 15/18] =?UTF-8?q?refactor(AlphabetGame):=20=EC=A0=95?= =?UTF-8?q?=EB=8B=B5=20=EB=A9=94=EC=8B=9C=EC=A7=80=20=EC=B6=9C=EB=A0=A5=20?= =?UTF-8?q?=EA=B8=B0=EB=8A=A5=20=EC=B6=94=EA=B0=80=20=EB=B0=8F=20=EC=A0=95?= =?UTF-8?q?=EB=8B=B5=20=ED=98=B8=EC=B6=9C=20=EB=A1=9C=EC=A7=81=20=EA=B0=9C?= =?UTF-8?q?=EC=84=A0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/main/java/leets/land/controller/AlphabetGame.java | 11 +++++++---- 1 file changed, 7 insertions(+), 4 deletions(-) diff --git a/src/main/java/leets/land/controller/AlphabetGame.java b/src/main/java/leets/land/controller/AlphabetGame.java index 22e74e1..c36d54a 100644 --- a/src/main/java/leets/land/controller/AlphabetGame.java +++ b/src/main/java/leets/land/controller/AlphabetGame.java @@ -5,7 +5,7 @@ import leets.land.view.InputView; import leets.land.view.OutputView; -public class AlphabetGame implements Game{ +public class AlphabetGame implements Game { final InputView inputView = new InputView(); final OutputView outputView = new OutputView(); @@ -17,10 +17,12 @@ public void run() { @Override public void play(UpDown updown) { + char answer = updown.getAnswerAsChar(); + while (true) { char alphabet = inputView.inputAlphabetInRange(updown.getStartAsChar(), updown.getEndAsChar()); - try{ + try { updown.validator(alphabet); } catch (IllegalArgumentException e) { System.out.println(e.getMessage()); @@ -29,10 +31,11 @@ public void play(UpDown updown) { updown.increaseCount(); - if (alphabet == updown.getAnswerAsChar()) { + if (alphabet == answer) { + System.out.println("Correct!"); outputView.printCount(updown.getCount()); break; - } else if (alphabet < updown.getAnswerAsChar()) { + } else if (alphabet < answer) { System.out.println("UP"); updown.setStart(alphabet + 1); } else { From 55e2562b89ff57bd43b6031ee59e59c68843ee87 Mon Sep 17 00:00:00 2001 From: yechan-kim <60172300+yechan-kim@users.noreply.github.com> Date: Thu, 18 Apr 2024 14:06:31 +0900 Subject: [PATCH 16/18] =?UTF-8?q?refactor(NumberGame):=20=EC=A0=95?= =?UTF-8?q?=EB=8B=B5=20=EB=A9=94=EC=8B=9C=EC=A7=80=20=EC=B6=9C=EB=A0=A5=20?= =?UTF-8?q?=EA=B8=B0=EB=8A=A5=20=EC=B6=94=EA=B0=80=20=EB=B0=8F=20=EC=A0=95?= =?UTF-8?q?=EB=8B=B5=20=ED=98=B8=EC=B6=9C=20=EB=A1=9C=EC=A7=81=20=EA=B0=9C?= =?UTF-8?q?=EC=84=A0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/main/java/leets/land/controller/NumberGame.java | 11 +++++++---- 1 file changed, 7 insertions(+), 4 deletions(-) diff --git a/src/main/java/leets/land/controller/NumberGame.java b/src/main/java/leets/land/controller/NumberGame.java index dc3357f..2852938 100644 --- a/src/main/java/leets/land/controller/NumberGame.java +++ b/src/main/java/leets/land/controller/NumberGame.java @@ -5,7 +5,7 @@ import leets.land.view.InputView; import leets.land.view.OutputView; -public class NumberGame implements Game{ +public class NumberGame implements Game { final InputView inputView = new InputView(); final OutputView outputView = new OutputView(); @@ -17,10 +17,12 @@ public void run() { @Override public void play(UpDown updown) { + int answer = updown.getAnswerAsInt(); + while (true) { int number = inputView.inputNumberInRange(updown.getStartAsInt(), updown.getEndAsInt()); - try{ + try { updown.validator(number); } catch (IllegalArgumentException e) { System.out.println(e.getMessage()); @@ -29,10 +31,11 @@ public void play(UpDown updown) { updown.increaseCount(); - if (number == updown.getAnswerAsInt()) { + if (number == answer) { + System.out.println("Correct!"); outputView.printCount(updown.getCount()); break; - } else if (number < updown.getAnswerAsInt()) { + } else if (number < answer) { System.out.println("UP"); updown.setStart(number + 1); } else { From 9fb093bcecb1c9d2a526fc790c35d1df48f55e25 Mon Sep 17 00:00:00 2001 From: yechan-kim <60172300+yechan-kim@users.noreply.github.com> Date: Thu, 18 Apr 2024 19:49:03 +0900 Subject: [PATCH 17/18] =?UTF-8?q?fix(Answer):=20=EC=98=81=EC=96=B4=20?= =?UTF-8?q?=EA=B2=8C=EC=9E=84=EC=9D=98=20=EC=A0=95=EB=8B=B5=EC=9D=B4=20?= =?UTF-8?q?=ED=8A=B9=EC=88=98=EB=AC=B8=EC=9E=90=EA=B0=80=20=EB=90=98?= =?UTF-8?q?=EB=8A=94=20=EB=B2=84=EA=B7=B8=20=EC=88=98=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/main/java/leets/land/domain/Answer.java | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/main/java/leets/land/domain/Answer.java b/src/main/java/leets/land/domain/Answer.java index 1045a1d..f21304d 100644 --- a/src/main/java/leets/land/domain/Answer.java +++ b/src/main/java/leets/land/domain/Answer.java @@ -6,9 +6,9 @@ public static int setNumber() { } public static char setAlphabet() { - char answer = (char) ((int) (Math.random() * 52) + 'A'); + char answer = (char) ((int) (Math.random() * ('z'-'A'+1)) + 'A'); - if (answer > 'z' || answer < 'A') { + if (answer > 'Z' && answer < 'a') { return setAlphabet(); } From df2c358900baebfa024b7286bdfd8dbf0310e4b2 Mon Sep 17 00:00:00 2001 From: yechan-kim <60172300+yechan-kim@users.noreply.github.com> Date: Thu, 18 Apr 2024 19:49:40 +0900 Subject: [PATCH 18/18] =?UTF-8?q?fix(Answer):=20=EC=98=81=EC=96=B4=20?= =?UTF-8?q?=EA=B2=8C=EC=9E=84=EC=9D=98=20=EC=A0=95=EB=8B=B5=EC=9D=B4=20?= =?UTF-8?q?=ED=8A=B9=EC=88=98=EB=AC=B8=EC=9E=90=EA=B0=80=20=EB=90=98?= =?UTF-8?q?=EB=8A=94=20=EB=B2=84=EA=B7=B8=20=EC=88=98=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/main/java/leets/land/domain/Answer.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/java/leets/land/domain/Answer.java b/src/main/java/leets/land/domain/Answer.java index f21304d..08eaa4d 100644 --- a/src/main/java/leets/land/domain/Answer.java +++ b/src/main/java/leets/land/domain/Answer.java @@ -6,7 +6,7 @@ public static int setNumber() { } public static char setAlphabet() { - char answer = (char) ((int) (Math.random() * ('z'-'A'+1)) + 'A'); + char answer = (char) ((int) (Math.random() * ('z'-'A')) + 'A'); if (answer > 'Z' && answer < 'a') { return setAlphabet();