From a1f38607db2890dc2e80e13a494ee90de1531660 Mon Sep 17 00:00:00 2001 From: anxi01 Date: Wed, 17 Apr 2024 15:13:08 +0900 Subject: [PATCH 1/8] =?UTF-8?q?feat=20:=20=EC=88=AB=EC=9E=90=EB=B2=84?= =?UTF-8?q?=EC=A0=84=20controller=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/GameController.java | 47 +++++++++++++++++++ 1 file changed, 47 insertions(+) create mode 100644 src/main/java/leets/land/controller/GameController.java diff --git a/src/main/java/leets/land/controller/GameController.java b/src/main/java/leets/land/controller/GameController.java new file mode 100644 index 0000000..f9863d8 --- /dev/null +++ b/src/main/java/leets/land/controller/GameController.java @@ -0,0 +1,47 @@ +package leets.land.controller; + +import leets.land.model.GameNumericModel; +import leets.land.view.GameView; + +public class GameController { + + private final GameView view; + private final GameNumericModel numericModel; + + public GameController(GameView view, GameNumericModel numericModel) { + this.view = view; + this.numericModel = numericModel; + } + + public void play() { + int version = view.getVersionInput(); + + if (version == 1) { + numericPlay(); + } else if (version == 2) { + alphabetPlay(); + } + } + + public void numericPlay() { + + int input = view.getNumericInput(); + while (true) { + + if (numericModel.up(input)) { + input = numericModel.changeLimitForUp(input); + } else if (numericModel.down(input)) { + input = numericModel.changeLimitForDown(input); + } else if (numericModel.isCorrect(input)) { + System.out.println("정답 !"); + break; + } + } + + System.out.println("시도한 횟수 : " + (GameNumericModel.getCount() + 1)); + } + + public void alphabetPlay() { + + } +} From 76224493fe71e5d229deb92b4cfbf5a6ce80afeb Mon Sep 17 00:00:00 2001 From: anxi01 Date: Wed, 17 Apr 2024 15:13:30 +0900 Subject: [PATCH 2/8] =?UTF-8?q?feat=20:=20=EC=88=AB=EC=9E=90=20=EB=B2=84?= =?UTF-8?q?=EC=A0=84=20model=20=EA=B5=AC=ED=98=84?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../leets/land/model/GameNumericModel.java | 48 +++++++++++++++++++ 1 file changed, 48 insertions(+) create mode 100644 src/main/java/leets/land/model/GameNumericModel.java diff --git a/src/main/java/leets/land/model/GameNumericModel.java b/src/main/java/leets/land/model/GameNumericModel.java new file mode 100644 index 0000000..38b1f5a --- /dev/null +++ b/src/main/java/leets/land/model/GameNumericModel.java @@ -0,0 +1,48 @@ +package leets.land.model; + +import java.util.Scanner; + +public class GameNumericModel { + + private final int answer = (int) (Math.random() * 100); + private static int count; + private int min = 1; + private int max = 100; + + public boolean up(int input) { + return input < answer; + } + + public int changeLimitForUp(int input) { + System.out.println("UP"); + count++; + + min = input + 1; + + Scanner sc = new Scanner(System.in); + System.out.print("숫자를 입력해주세요(" + min + " ~ " + max + ") : "); + return sc.nextInt(); + } + + public boolean down(int input) { + return input > answer; + } + + public int changeLimitForDown(int input) { + System.out.println("DOWN"); + count++; + + max = input - 1; + Scanner sc = new Scanner(System.in); + System.out.print("숫자를 입력해주세요(" + min + " ~ " + max + ") : "); + return sc.nextInt(); + } + + public boolean isCorrect(int input) { + return input == answer; + } + + public static int getCount() { + return count; + } +} From cce3ddddc5f8d56e5d5c05a30676ac2af0e17aca Mon Sep 17 00:00:00 2001 From: anxi01 Date: Wed, 17 Apr 2024 15:13:45 +0900 Subject: [PATCH 3/8] =?UTF-8?q?feat=20:=20=EC=88=AB=EC=9E=90=20=EB=B2=84?= =?UTF-8?q?=EC=A0=84=20view=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/UpdownApplication.java | 9 ++++++- src/main/java/leets/land/view/GameView.java | 24 +++++++++++++++++++ 2 files changed, 32 insertions(+), 1 deletion(-) create mode 100644 src/main/java/leets/land/view/GameView.java diff --git a/src/main/java/leets/land/UpdownApplication.java b/src/main/java/leets/land/UpdownApplication.java index 09d7ae5..67f0ada 100644 --- a/src/main/java/leets/land/UpdownApplication.java +++ b/src/main/java/leets/land/UpdownApplication.java @@ -1,8 +1,15 @@ package leets.land; +import leets.land.controller.GameController; +import leets.land.model.GameNumericModel; +import leets.land.view.GameView; + public class UpdownApplication { public static void main(String[] args) { - System.out.print("hihi :D"); + GameView view = new GameView(); + GameNumericModel numericModel = new GameNumericModel(); + GameController controller = new GameController(view, numericModel); + controller.play(); } } diff --git a/src/main/java/leets/land/view/GameView.java b/src/main/java/leets/land/view/GameView.java new file mode 100644 index 0000000..64a9dae --- /dev/null +++ b/src/main/java/leets/land/view/GameView.java @@ -0,0 +1,24 @@ +package leets.land.view; + +import java.util.Scanner; + +public class GameView { + + public int getVersionInput() { + Scanner sc = new Scanner(System.in); + System.out.print("버전을 입력해주세요 (숫자 버전: 1, 영어 버전: 2) : "); + return sc.nextInt(); + } + + public int getNumericInput() { + Scanner sc = new Scanner(System.in); + System.out.print("숫자를 입력해주세요(1 ~ 100) : "); + return sc.nextInt(); + } + + public String getAlphabetInput() { + Scanner sc = new Scanner(System.in); + System.out.print("영어를 입력해주세요(A ~ z) : "); + return sc.next(); + } +} From db89057e71de47de9ffbb96e1c331aee0fda3161 Mon Sep 17 00:00:00 2001 From: anxi01 Date: Wed, 17 Apr 2024 16:47:48 +0900 Subject: [PATCH 4/8] =?UTF-8?q?feat=20:=20=EC=98=81=EC=96=B4=20=EB=B2=84?= =?UTF-8?q?=EC=A0=84=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/UpdownApplication.java | 4 +- .../leets/land/controller/GameController.java | 19 +++++- .../leets/land/model/GameAlphabetModel.java | 59 +++++++++++++++++++ src/main/java/leets/land/view/GameView.java | 4 +- 4 files changed, 82 insertions(+), 4 deletions(-) create mode 100644 src/main/java/leets/land/model/GameAlphabetModel.java diff --git a/src/main/java/leets/land/UpdownApplication.java b/src/main/java/leets/land/UpdownApplication.java index 67f0ada..f10dd56 100644 --- a/src/main/java/leets/land/UpdownApplication.java +++ b/src/main/java/leets/land/UpdownApplication.java @@ -1,6 +1,7 @@ package leets.land; import leets.land.controller.GameController; +import leets.land.model.GameAlphabetModel; import leets.land.model.GameNumericModel; import leets.land.view.GameView; @@ -9,7 +10,8 @@ public class UpdownApplication { public static void main(String[] args) { GameView view = new GameView(); GameNumericModel numericModel = new GameNumericModel(); - GameController controller = new GameController(view, numericModel); + GameAlphabetModel alphabetModel = new GameAlphabetModel(); + GameController controller = new GameController(view, numericModel, alphabetModel); controller.play(); } } diff --git a/src/main/java/leets/land/controller/GameController.java b/src/main/java/leets/land/controller/GameController.java index f9863d8..385ac1b 100644 --- a/src/main/java/leets/land/controller/GameController.java +++ b/src/main/java/leets/land/controller/GameController.java @@ -1,5 +1,6 @@ package leets.land.controller; +import leets.land.model.GameAlphabetModel; import leets.land.model.GameNumericModel; import leets.land.view.GameView; @@ -7,10 +8,13 @@ public class GameController { private final GameView view; private final GameNumericModel numericModel; + private final GameAlphabetModel alphabetModel; - public GameController(GameView view, GameNumericModel numericModel) { + public GameController(GameView view, GameNumericModel numericModel, + GameAlphabetModel alphabetModel) { this.view = view; this.numericModel = numericModel; + this.alphabetModel = alphabetModel; } public void play() { @@ -42,6 +46,19 @@ public void numericPlay() { } public void alphabetPlay() { + int input = view.getAlphabetInput(); + while (true) { + + if (alphabetModel.up(input)) { + input = alphabetModel.changeLimitForUp(input); + } else if (alphabetModel.down(input)) { + input = alphabetModel.changeLimitForDown(input); + } else if (alphabetModel.isCorrect(input)) { + System.out.println("정답 !"); + break; + } + } + System.out.println("시도한 횟수 : " + (GameAlphabetModel.getCount() + 1)); } } diff --git a/src/main/java/leets/land/model/GameAlphabetModel.java b/src/main/java/leets/land/model/GameAlphabetModel.java new file mode 100644 index 0000000..91c8868 --- /dev/null +++ b/src/main/java/leets/land/model/GameAlphabetModel.java @@ -0,0 +1,59 @@ +package leets.land.model; + +import java.util.Random; +import java.util.Scanner; + +public class GameAlphabetModel { + + private final char answer; + private static int count; + private char min = 'A'; + private char max = 'z'; + + public GameAlphabetModel() { + Random random = new Random(); + this.answer = (char) (random.nextInt(26) + (random.nextBoolean() ? 'A' : 'a')); + } + + public boolean up(int input) { + return input < answer; + } + + public char changeLimitForUp(int input) { + System.out.println("UP"); + count++; + + min = (char) (input + 1); + + Scanner sc = new Scanner(System.in); + System.out.print("영어를 입력해주세요(" + min + " ~ " + max + ") : "); + return sc.next().charAt(0); + } + + public boolean down(int input) { + return input > answer; + } + + public char changeLimitForDown(int input) { + System.out.println("DOWN"); + count++; + + if (input == 'a') { + max = 'Z'; + } else { + max = (char) (input - 1); + } + + Scanner sc = new Scanner(System.in); + System.out.print("영어를 입력해주세요(" + min + " ~ " + max + ") : "); + return sc.next().charAt(0); + } + + public boolean isCorrect(int input) { + return input == answer; + } + + public static int getCount() { + return count; + } +} diff --git a/src/main/java/leets/land/view/GameView.java b/src/main/java/leets/land/view/GameView.java index 64a9dae..489a84f 100644 --- a/src/main/java/leets/land/view/GameView.java +++ b/src/main/java/leets/land/view/GameView.java @@ -16,9 +16,9 @@ public int getNumericInput() { return sc.nextInt(); } - public String getAlphabetInput() { + public char getAlphabetInput() { Scanner sc = new Scanner(System.in); System.out.print("영어를 입력해주세요(A ~ z) : "); - return sc.next(); + return sc.next().charAt(0); } } From ee0ff349fed155cf1840afd77c10dca54586fbd4 Mon Sep 17 00:00:00 2001 From: anxi01 Date: Wed, 17 Apr 2024 20:22:17 +0900 Subject: [PATCH 5/8] =?UTF-8?q?feat=20:=20=EC=A1=B4=EC=9E=AC=ED=95=98?= =?UTF-8?q?=EC=A7=80=20=EC=95=8A=EB=8A=94=20=EB=B2=84=EC=A0=84=20=EC=97=90?= =?UTF-8?q?=EB=9F=AC=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/leets/land/controller/GameController.java | 3 +++ 1 file changed, 3 insertions(+) diff --git a/src/main/java/leets/land/controller/GameController.java b/src/main/java/leets/land/controller/GameController.java index 385ac1b..90960c9 100644 --- a/src/main/java/leets/land/controller/GameController.java +++ b/src/main/java/leets/land/controller/GameController.java @@ -24,6 +24,9 @@ public void play() { numericPlay(); } else if (version == 2) { alphabetPlay(); + } else { + System.out.println("[ERROR] 존재하지 않는 버전입니다."); + play(); } } From aa8d892a6dc11818b33d52b176f1f51316d6981d Mon Sep 17 00:00:00 2001 From: anxi01 Date: Wed, 17 Apr 2024 20:24:31 +0900 Subject: [PATCH 6/8] =?UTF-8?q?feat=20:=20=EB=B2=94=EC=9C=84=20=EB=82=B4?= =?UTF-8?q?=20=EC=88=AB=EC=9E=90=20=EC=9E=85=EB=A0=A5=20=EC=98=88=EC=99=B8?= =?UTF-8?q?=EC=B2=98=EB=A6=AC?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../leets/land/model/GameNumericModel.java | 24 ++++++++++++++----- 1 file changed, 18 insertions(+), 6 deletions(-) diff --git a/src/main/java/leets/land/model/GameNumericModel.java b/src/main/java/leets/land/model/GameNumericModel.java index 38b1f5a..9473a11 100644 --- a/src/main/java/leets/land/model/GameNumericModel.java +++ b/src/main/java/leets/land/model/GameNumericModel.java @@ -19,9 +19,7 @@ public int changeLimitForUp(int input) { min = input + 1; - Scanner sc = new Scanner(System.in); - System.out.print("숫자를 입력해주세요(" + min + " ~ " + max + ") : "); - return sc.nextInt(); + return isValidNumericRange(); } public boolean down(int input) { @@ -33,9 +31,8 @@ public int changeLimitForDown(int input) { count++; max = input - 1; - Scanner sc = new Scanner(System.in); - System.out.print("숫자를 입력해주세요(" + min + " ~ " + max + ") : "); - return sc.nextInt(); + + return isValidNumericRange(); } public boolean isCorrect(int input) { @@ -45,4 +42,19 @@ public boolean isCorrect(int input) { public static int getCount() { return count; } + + private int isValidNumericRange() { + Scanner sc = new Scanner(System.in); + + while (true) { + System.out.print("숫자를 입력해주세요(" + min + " ~ " + max + ") : "); + int newInput = sc.nextInt(); + + if (newInput < min || newInput > max) { + System.out.println("[ERROR] 범위 내의 숫자를 입력하세요."); + } else { + return newInput; + } + } + } } From 933a09f961eeb518bc0b10fd0c1d99ba0a6514fe Mon Sep 17 00:00:00 2001 From: anxi01 Date: Wed, 17 Apr 2024 20:36:01 +0900 Subject: [PATCH 7/8] =?UTF-8?q?fix=20:=20=EB=82=9C=EC=88=98=20=EC=83=9D?= =?UTF-8?q?=EC=84=B1=20=EB=A1=9C=EC=A7=81=20=EB=B3=80=EA=B2=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/main/java/leets/land/model/GameNumericModel.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/java/leets/land/model/GameNumericModel.java b/src/main/java/leets/land/model/GameNumericModel.java index 9473a11..d386817 100644 --- a/src/main/java/leets/land/model/GameNumericModel.java +++ b/src/main/java/leets/land/model/GameNumericModel.java @@ -4,7 +4,7 @@ public class GameNumericModel { - private final int answer = (int) (Math.random() * 100); + private final int answer = (int) (Math.random() * 100) + 1; private static int count; private int min = 1; private int max = 100; From 5146a68d46832f59a8a465674475cf6cb397733a Mon Sep 17 00:00:00 2001 From: anxi01 Date: Thu, 18 Apr 2024 16:03:43 +0900 Subject: [PATCH 8/8] =?UTF-8?q?feat=20:=20=EB=B2=94=EC=9C=84=20=EB=82=B4?= =?UTF-8?q?=20=EC=95=8C=ED=8C=8C=EB=B2=B3=20=EC=9E=85=EB=A0=A5=20=EC=98=88?= =?UTF-8?q?=EC=99=B8=EC=B2=98=EB=A6=AC?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../leets/land/model/GameAlphabetModel.java | 23 ++++++++++++++----- 1 file changed, 17 insertions(+), 6 deletions(-) diff --git a/src/main/java/leets/land/model/GameAlphabetModel.java b/src/main/java/leets/land/model/GameAlphabetModel.java index 91c8868..267e610 100644 --- a/src/main/java/leets/land/model/GameAlphabetModel.java +++ b/src/main/java/leets/land/model/GameAlphabetModel.java @@ -25,9 +25,7 @@ public char changeLimitForUp(int input) { min = (char) (input + 1); - Scanner sc = new Scanner(System.in); - System.out.print("영어를 입력해주세요(" + min + " ~ " + max + ") : "); - return sc.next().charAt(0); + return isValidAlphabetRange(); } public boolean down(int input) { @@ -44,9 +42,7 @@ public char changeLimitForDown(int input) { max = (char) (input - 1); } - Scanner sc = new Scanner(System.in); - System.out.print("영어를 입력해주세요(" + min + " ~ " + max + ") : "); - return sc.next().charAt(0); + return isValidAlphabetRange(); } public boolean isCorrect(int input) { @@ -56,4 +52,19 @@ public boolean isCorrect(int input) { public static int getCount() { return count; } + + private char isValidAlphabetRange() { + Scanner sc = new Scanner(System.in); + + while (true) { + System.out.print("영어를 입력해주세요(" + min + " ~ " + max + ") : "); + char newInput = sc.next().charAt(0); + + if (newInput < min || newInput > max) { + System.out.println("[ERROR] 범위 내의 알파벳을 입력하세요."); + } else { + return newInput; + } + } + } }