From 7b1a3c7005d4fdb0819b91ab9e938a026a8efd7d Mon Sep 17 00:00:00 2001 From: dldb-chamchi Date: Tue, 18 Feb 2025 19:39:20 +0900 Subject: [PATCH 01/17] =?UTF-8?q?=EC=B4=88=EA=B8=B0=20=EC=84=A4=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/main/java/Line.java | 2 ++ 1 file changed, 2 insertions(+) create mode 100644 src/main/java/Line.java diff --git a/src/main/java/Line.java b/src/main/java/Line.java new file mode 100644 index 00000000..179fa92f --- /dev/null +++ b/src/main/java/Line.java @@ -0,0 +1,2 @@ +public class Line { +} From 418e4f6fd135c45e1659503e5410a232f2fae22c Mon Sep 17 00:00:00 2001 From: dldb-chamchi Date: Tue, 12 Aug 2025 14:38:19 +0900 Subject: [PATCH 02/17] =?UTF-8?q?feat:=20Line=20=EC=83=9D=EC=84=B1?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/main/java/Line.java | 2 -- src/main/java/model/Line.java | 35 +++++++++++++++++++++++++++++++++++ 2 files changed, 35 insertions(+), 2 deletions(-) delete mode 100644 src/main/java/Line.java create mode 100644 src/main/java/model/Line.java diff --git a/src/main/java/Line.java b/src/main/java/Line.java deleted file mode 100644 index 179fa92f..00000000 --- a/src/main/java/Line.java +++ /dev/null @@ -1,2 +0,0 @@ -public class Line { -} diff --git a/src/main/java/model/Line.java b/src/main/java/model/Line.java new file mode 100644 index 00000000..efe6e402 --- /dev/null +++ b/src/main/java/model/Line.java @@ -0,0 +1,35 @@ +package model; + +import java.util.*; + +public class Line { + private final List points; + + public Line(int count) { + points = new ArrayList<>(Collections.nCopies(count - 1, false)); + generateRandomLadder(); + } + + private void generateRandomLadder() { + Random random = new Random(); + for (int i = 0; i < points.size() - 1; i++) { + if (!points.get(i) && (i == 0 || !points.get(i - 1))) { + points.set(i, random.nextBoolean()); + } + } + } + + public int move(int position) { + if (position > 0 && points.get(position - 1)) { + return position - 1; + } + if (position < points.size() && points.get(position)) { + return position + 1; + } + return position; + } + + public List getPoints() { + return points; + } +} From 38f04336a50645fd5adcf5f55b35389614d364f1 Mon Sep 17 00:00:00 2001 From: dldb-chamchi Date: Tue, 12 Aug 2025 14:39:07 +0900 Subject: [PATCH 03/17] =?UTF-8?q?feat:=20Player=20=EC=83=9D=EC=84=B1?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/main/java/model/Player.java | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) create mode 100644 src/main/java/model/Player.java diff --git a/src/main/java/model/Player.java b/src/main/java/model/Player.java new file mode 100644 index 00000000..e18a0fde --- /dev/null +++ b/src/main/java/model/Player.java @@ -0,0 +1,16 @@ +package model; + +public class Player { + private final String name; + + public Player(String name) { + if (name.length() > 5) { + throw new IllegalArgumentException("이름은 최대 5글자까지 가능합니다."); + } + this.name = name; + } + + public String getName() { + return name; + } +} From a206dfdfb33fc36e5fc2dc6f14667954f9ef1464 Mon Sep 17 00:00:00 2001 From: dldb-chamchi Date: Tue, 12 Aug 2025 14:50:52 +0900 Subject: [PATCH 04/17] =?UTF-8?q?feat:=20Ladder=20=EC=83=9D=EC=84=B1?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/main/java/model/Ladder.java | 34 +++++++++++++++++++++++++++++++++ 1 file changed, 34 insertions(+) create mode 100644 src/main/java/model/Ladder.java diff --git a/src/main/java/model/Ladder.java b/src/main/java/model/Ladder.java new file mode 100644 index 00000000..e049c9f9 --- /dev/null +++ b/src/main/java/model/Ladder.java @@ -0,0 +1,34 @@ +package model; + +import java.util.*; + +public class Ladder { + private final List lines; + + public Ladder(int playerCount, int height) { + lines = new ArrayList<>(); + for (int i = 0; i < height; i++) { + lines.add(new Line(playerCount)); + } + } + + public LadderResult run(List players, List results) { + Map resultMap = new HashMap<>(); + for (int i = 0; i < players.size(); i++) { + int finalPosition = move(i); + resultMap.put(players.get(i).getName(), results.get(finalPosition)); + } + return new LadderResult(resultMap); + } + + private int move(int position) { + for (Line line : lines) { + position = line.move(position); + } + return position; + } + + public List getLines() { + return lines; + } +} From bae2eca367ceb5dbe23e23f705965afaf7254f15 Mon Sep 17 00:00:00 2001 From: dldb-chamchi Date: Tue, 12 Aug 2025 14:51:13 +0900 Subject: [PATCH 05/17] =?UTF-8?q?feat:=20LadderResult=20=EC=83=9D=EC=84=B1?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/main/java/model/LadderResult.java | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) create mode 100644 src/main/java/model/LadderResult.java diff --git a/src/main/java/model/LadderResult.java b/src/main/java/model/LadderResult.java new file mode 100644 index 00000000..0f463d94 --- /dev/null +++ b/src/main/java/model/LadderResult.java @@ -0,0 +1,19 @@ +package model; + +import java.util.*; + +public class LadderResult { + private final Map results; + + public LadderResult(Map results) { + this.results = results; + } + + public String getResult(String name) { + return results.get(name); + } + + public Map getAllResults() { + return results; + } +} From c74c95e54c5be259a3d4ee5a46838fc09b467bb7 Mon Sep 17 00:00:00 2001 From: dldb-chamchi Date: Tue, 12 Aug 2025 15:00:24 +0900 Subject: [PATCH 06/17] =?UTF-8?q?feat:=20InputView=20=EC=83=9D=EC=84=B1?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/main/java/view/InputView.java | 27 +++++++++++++++++++++++++++ 1 file changed, 27 insertions(+) create mode 100644 src/main/java/view/InputView.java diff --git a/src/main/java/view/InputView.java b/src/main/java/view/InputView.java new file mode 100644 index 00000000..e3374702 --- /dev/null +++ b/src/main/java/view/InputView.java @@ -0,0 +1,27 @@ +package view; + +import java.util.*; + +public class InputView { + private static final Scanner scanner = new Scanner(System.in); + + public static List getPlayerNames() { + System.out.println("참여할 사람 이름을 입력하세요. (이름은 쉼표(,)로 구분하세요)"); + return Arrays.asList(scanner.nextLine().split(",")); + } + + public static List getResults() { + System.out.println("실행 결과를 입력하세요. (결과는 쉼표(,)로 구분하세요)"); + return Arrays.asList(scanner.nextLine().split(",")); + } + + public static int getLadderHeight() { + System.out.println("최대 사다리 높이는 몇 개인가요?"); + return scanner.nextInt(); + } + + public static String getQuery() { + System.out.println("결과를 보고 싶은 사람은?"); + return scanner.next(); + } +} From 354f1003da7d37c3831320dae3fcfb5f0a7bea0e Mon Sep 17 00:00:00 2001 From: dldb-chamchi Date: Tue, 12 Aug 2025 15:00:37 +0900 Subject: [PATCH 07/17] =?UTF-8?q?feat:=20ResultView=20=EC=83=9D=EC=84=B1?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/main/java/view/ResultView.java | 42 ++++++++++++++++++++++++++++++ 1 file changed, 42 insertions(+) create mode 100644 src/main/java/view/ResultView.java diff --git a/src/main/java/view/ResultView.java b/src/main/java/view/ResultView.java new file mode 100644 index 00000000..0d73dca4 --- /dev/null +++ b/src/main/java/view/ResultView.java @@ -0,0 +1,42 @@ +package view; + +import model.Line; +import model.Player; + +import java.util.*; + +public class ResultView { + public static void printLadder(List players, List lines, List results) { + for (Player player : players) { + System.out.printf("%6s", player.getName()); + } + System.out.println(); + + for (Line line : lines) { + printLine(line); + } + + for (String result : results) { + System.out.printf("%6s", result); + } + System.out.println(); + } + + private static void printLine(Line line) { + System.out.print(" "); + for (boolean point : line.getPoints()) { + System.out.print(point ? " |-----" : " | "); + } + System.out.println(" |"); + } + + public static void printResult(String name, String result) { + System.out.println("실행 결과"); + System.out.println(name + " : " + result); + } + + public static void printAllResults(Map results) { + System.out.println("실행 결과"); + results.forEach((name, result) -> System.out.println(name + " : " + result)); + } +} From d67337fb936ba44ab9db309337a92ccf64394c28 Mon Sep 17 00:00:00 2001 From: dldb-chamchi Date: Tue, 12 Aug 2025 15:00:50 +0900 Subject: [PATCH 08/17] =?UTF-8?q?feat:=20LadderController=20=EC=83=9D?= =?UTF-8?q?=EC=84=B1?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/controller/LadderController.java | 58 +++++++++++++++++++ 1 file changed, 58 insertions(+) create mode 100644 src/main/java/controller/LadderController.java diff --git a/src/main/java/controller/LadderController.java b/src/main/java/controller/LadderController.java new file mode 100644 index 00000000..3a89d839 --- /dev/null +++ b/src/main/java/controller/LadderController.java @@ -0,0 +1,58 @@ +package controller; + +import java.util.*; +import model.*; +import view.*; + +public class LadderController { + private List players; + private List results; + private Ladder ladder; + private LadderResult ladderResult; + + public void start() { + List names = InputView.getPlayerNames(); + List results = InputView.getResults(); + int height = InputView.getLadderHeight(); + + this.players = createPlayers(names); + this.results = results; + this.ladder = new Ladder(players.size(), height); + + play(); + } + + private List createPlayers(List names) { + List players = new ArrayList<>(); + for (String name : names) { + players.add(new Player(name)); + } + return players; + } + + public void play() { + ResultView.printLadder(players, ladder.getLines(), results); + + this.ladderResult = ladder.run(players, results); + + showResults(); + } + + private void showResults() { + while (true) { + String query = InputView.getQuery(); + + if (query.equals("all")) { + ResultView.printAllResults(ladderResult.getAllResults()); + break; + } + + if (ladderResult.getAllResults().containsKey(query)) { + ResultView.printResult(query, ladderResult.getResult(query)); + } + else { + System.out.println("존재하지 않는 이름입니다. 다시 입력해주세요."); + } + } + } +} From 2c31d3243a649fc62aee47f1db6aac2cd86c9219 Mon Sep 17 00:00:00 2001 From: dldb-chamchi Date: Tue, 12 Aug 2025 15:01:00 +0900 Subject: [PATCH 09/17] =?UTF-8?q?feat:=20Main=20=EC=83=9D=EC=84=B1?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/main/java/Main.java | 8 ++++++++ 1 file changed, 8 insertions(+) create mode 100644 src/main/java/Main.java diff --git a/src/main/java/Main.java b/src/main/java/Main.java new file mode 100644 index 00000000..dc00ee2e --- /dev/null +++ b/src/main/java/Main.java @@ -0,0 +1,8 @@ +import controller.LadderController; + +public class Main { + public static void main(String[] args) { + LadderController ladderGameController = new LadderController(); + ladderGameController.start(); + } +} From 10d8e7ab3ba5cf460786ec5bff0fafadf1d79401 Mon Sep 17 00:00:00 2001 From: dldb-chamchi Date: Tue, 12 Aug 2025 15:12:00 +0900 Subject: [PATCH 10/17] =?UTF-8?q?feat:=20=ED=85=8C=EC=8A=A4=ED=8A=B8=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 --- src/test/java/model/LadderResultTest.java | 19 +++++++++++++++ src/test/java/model/LadderTest.java | 29 +++++++++++++++++++++++ src/test/java/model/LineTest.java | 16 +++++++++++++ src/test/java/model/PlayerTest.java | 20 ++++++++++++++++ 4 files changed, 84 insertions(+) create mode 100644 src/test/java/model/LadderResultTest.java create mode 100644 src/test/java/model/LadderTest.java create mode 100644 src/test/java/model/LineTest.java create mode 100644 src/test/java/model/PlayerTest.java diff --git a/src/test/java/model/LadderResultTest.java b/src/test/java/model/LadderResultTest.java new file mode 100644 index 00000000..96e8b153 --- /dev/null +++ b/src/test/java/model/LadderResultTest.java @@ -0,0 +1,19 @@ +package model; + +import org.junit.jupiter.api.Test; + +import static org.junit.jupiter.api.Assertions.assertEquals; + +import java.util.Map; + +class LadderResultTest { + + @Test + void 특정_플레이어_결과_조회() { + Map results = Map.of("Neo", "꽝", "Tommy", "5000", "Brie", "꽝"); + LadderResult ladderResult = new LadderResult(results); + + assertEquals("5000", ladderResult.getResult("Tommy")); + assertEquals("꽝", ladderResult.getResult("Neo")); + } +} diff --git a/src/test/java/model/LadderTest.java b/src/test/java/model/LadderTest.java new file mode 100644 index 00000000..f8a9a874 --- /dev/null +++ b/src/test/java/model/LadderTest.java @@ -0,0 +1,29 @@ +package model; + +import org.junit.jupiter.api.Test; + +import static org.junit.jupiter.api.Assertions.assertEquals; +import static org.junit.jupiter.api.Assertions.assertTrue; + +import java.util.List; +import java.util.Map; + + +class LadderTest { + + @Test + void 사다리_게임_결과_확인() { + List players = List.of(new Player("Neo"), new Player("Tommy"), new Player("Brie")); + List results = List.of("1000", "꽝", "3000"); + + Ladder ladder = new Ladder(players.size(), 5); + LadderResult ladderResult = ladder.run(players, results); + + Map resultMap = ladderResult.getAllResults(); + + assertEquals(3, resultMap.size()); + assertTrue(resultMap.containsKey("Neo")); + assertTrue(resultMap.containsKey("Tommy")); + assertTrue(resultMap.containsKey("Brie")); + } +} diff --git a/src/test/java/model/LineTest.java b/src/test/java/model/LineTest.java new file mode 100644 index 00000000..c2dd1fcf --- /dev/null +++ b/src/test/java/model/LineTest.java @@ -0,0 +1,16 @@ +package model; + +import org.junit.jupiter.api.Test; + +import static org.junit.jupiter.api.Assertions.assertTrue; + +class LineTest { + + @Test + void 사다리_이동() { + Line line = new Line(3); + int newPosition = line.move(1); + + assertTrue(newPosition >= 0 && newPosition < 3); + } +} diff --git a/src/test/java/model/PlayerTest.java b/src/test/java/model/PlayerTest.java new file mode 100644 index 00000000..ba65b8b0 --- /dev/null +++ b/src/test/java/model/PlayerTest.java @@ -0,0 +1,20 @@ +package model; + +import org.junit.jupiter.api.Test; + +import static org.junit.jupiter.api.Assertions.assertEquals; +import static org.junit.jupiter.api.Assertions.assertThrows; + +class PlayerTest { + + @Test + void 이름이_5자를_초과하면_예외() { + assertThrows(IllegalArgumentException.class, () -> new Player("abcdef")); + } + + @Test + void 이름이_5자_이하면_통과() { + Player player = new Player("Neo"); + assertEquals("Neo", player.getName()); + } +} From f1a49169c18cc93d15215989351297e2ef4cf586 Mon Sep 17 00:00:00 2001 From: dldb-chamchi Date: Tue, 12 Aug 2025 20:47:59 +0900 Subject: [PATCH 11/17] =?UTF-8?q?refactor:=20=EB=A7=A4=EC=A7=81=EB=84=98?= =?UTF-8?q?=EB=B2=84=20=EC=83=81=EC=88=98=ED=99=94?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/main/java/model/Player.java | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/src/main/java/model/Player.java b/src/main/java/model/Player.java index e18a0fde..ae11e2f2 100644 --- a/src/main/java/model/Player.java +++ b/src/main/java/model/Player.java @@ -1,10 +1,12 @@ package model; public class Player { + private final String name; + private static final int MAX_NAME_LENGTH = 5; public Player(String name) { - if (name.length() > 5) { + if (name.length() > MAX_NAME_LENGTH) { throw new IllegalArgumentException("이름은 최대 5글자까지 가능합니다."); } this.name = name; From 5c7da67c3476571b6fc173b9eb8f009afd15c0b5 Mon Sep 17 00:00:00 2001 From: dldb-chamchi Date: Tue, 12 Aug 2025 20:48:50 +0900 Subject: [PATCH 12/17] =?UTF-8?q?refactor:=20=EC=97=90=EB=9F=AC=EB=A9=94?= =?UTF-8?q?=EC=84=B8=EC=A7=80=EB=8F=84=20=ED=85=8C=EC=8A=A4=ED=8A=B8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/test/java/model/PlayerTest.java | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/src/test/java/model/PlayerTest.java b/src/test/java/model/PlayerTest.java index ba65b8b0..79aec2d6 100644 --- a/src/test/java/model/PlayerTest.java +++ b/src/test/java/model/PlayerTest.java @@ -9,7 +9,11 @@ class PlayerTest { @Test void 이름이_5자를_초과하면_예외() { - assertThrows(IllegalArgumentException.class, () -> new Player("abcdef")); + IllegalArgumentException exception = assertThrows( + IllegalArgumentException.class, + () -> new Player("abcdef") + ); + assertEquals("이름은 최대 5글자까지 가능합니다.", exception.getMessage()); } @Test From a317f475f39a02fc1fb04e16d8b3fab090b483fb Mon Sep 17 00:00:00 2001 From: dldb-chamchi Date: Tue, 12 Aug 2025 20:49:30 +0900 Subject: [PATCH 13/17] =?UTF-8?q?style:=20=EC=BB=A8=EB=B2=A4=EC=85=98=20?= =?UTF-8?q?=EC=88=98=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/main/java/controller/LadderController.java | 1 + src/main/java/model/Ladder.java | 3 +++ src/main/java/model/LadderResult.java | 1 + src/main/java/model/Line.java | 2 ++ src/main/java/view/InputView.java | 1 + src/main/java/view/ResultView.java | 1 + 6 files changed, 9 insertions(+) diff --git a/src/main/java/controller/LadderController.java b/src/main/java/controller/LadderController.java index 3a89d839..7e0290fb 100644 --- a/src/main/java/controller/LadderController.java +++ b/src/main/java/controller/LadderController.java @@ -5,6 +5,7 @@ import view.*; public class LadderController { + private List players; private List results; private Ladder ladder; diff --git a/src/main/java/model/Ladder.java b/src/main/java/model/Ladder.java index e049c9f9..6924bc31 100644 --- a/src/main/java/model/Ladder.java +++ b/src/main/java/model/Ladder.java @@ -3,10 +3,12 @@ import java.util.*; public class Ladder { + private final List lines; public Ladder(int playerCount, int height) { lines = new ArrayList<>(); + for (int i = 0; i < height; i++) { lines.add(new Line(playerCount)); } @@ -14,6 +16,7 @@ public Ladder(int playerCount, int height) { public LadderResult run(List players, List results) { Map resultMap = new HashMap<>(); + for (int i = 0; i < players.size(); i++) { int finalPosition = move(i); resultMap.put(players.get(i).getName(), results.get(finalPosition)); diff --git a/src/main/java/model/LadderResult.java b/src/main/java/model/LadderResult.java index 0f463d94..8bf30cd6 100644 --- a/src/main/java/model/LadderResult.java +++ b/src/main/java/model/LadderResult.java @@ -3,6 +3,7 @@ import java.util.*; public class LadderResult { + private final Map results; public LadderResult(Map results) { diff --git a/src/main/java/model/Line.java b/src/main/java/model/Line.java index efe6e402..7ffdf729 100644 --- a/src/main/java/model/Line.java +++ b/src/main/java/model/Line.java @@ -3,6 +3,7 @@ import java.util.*; public class Line { + private final List points; public Line(int count) { @@ -12,6 +13,7 @@ public Line(int count) { private void generateRandomLadder() { Random random = new Random(); + for (int i = 0; i < points.size() - 1; i++) { if (!points.get(i) && (i == 0 || !points.get(i - 1))) { points.set(i, random.nextBoolean()); diff --git a/src/main/java/view/InputView.java b/src/main/java/view/InputView.java index e3374702..d74b31c1 100644 --- a/src/main/java/view/InputView.java +++ b/src/main/java/view/InputView.java @@ -3,6 +3,7 @@ import java.util.*; public class InputView { + private static final Scanner scanner = new Scanner(System.in); public static List getPlayerNames() { diff --git a/src/main/java/view/ResultView.java b/src/main/java/view/ResultView.java index 0d73dca4..4b4c37af 100644 --- a/src/main/java/view/ResultView.java +++ b/src/main/java/view/ResultView.java @@ -6,6 +6,7 @@ import java.util.*; public class ResultView { + public static void printLadder(List players, List lines, List results) { for (Player player : players) { System.out.printf("%6s", player.getName()); From ec039b585a0e0f168696969c2f6c1d4c06994f93 Mon Sep 17 00:00:00 2001 From: dldb-chamchi Date: Tue, 12 Aug 2025 20:57:12 +0900 Subject: [PATCH 14/17] =?UTF-8?q?feat:=20=EC=97=90=EB=9F=AC=20=EB=A9=94?= =?UTF-8?q?=EC=84=B8=EC=A7=80=20=EA=B4=80=EB=A6=AC?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/main/java/exception/ErrorMessage.java | 6 ++++++ 1 file changed, 6 insertions(+) create mode 100644 src/main/java/exception/ErrorMessage.java diff --git a/src/main/java/exception/ErrorMessage.java b/src/main/java/exception/ErrorMessage.java new file mode 100644 index 00000000..b2313866 --- /dev/null +++ b/src/main/java/exception/ErrorMessage.java @@ -0,0 +1,6 @@ +package exception; + +public class ErrorMessage { + public static final String LIMIT_NAME_LENGTH = "이름은 최대 5글자까지 가능합니다."; + public static final String NOT_EXIST_NAME = "존재하지 않는 이름입니다. 다시 입력해주세요."; +} From 2d68f6c29d85553504a4a6b31d53765c3651fe0d Mon Sep 17 00:00:00 2001 From: dldb-chamchi Date: Tue, 12 Aug 2025 20:57:28 +0900 Subject: [PATCH 15/17] =?UTF-8?q?refactor:=20=EC=97=90=EB=9F=AC=20?= =?UTF-8?q?=EB=A9=94=EC=84=B8=EC=A7=80=20=EA=B4=80=EB=A6=AC=20=EB=A6=AC?= =?UTF-8?q?=ED=8C=A9=ED=84=B0=EB=A7=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/main/java/controller/LadderController.java | 4 +++- src/main/java/model/Player.java | 4 +++- src/test/java/model/PlayerTest.java | 3 ++- 3 files changed, 8 insertions(+), 3 deletions(-) diff --git a/src/main/java/controller/LadderController.java b/src/main/java/controller/LadderController.java index 7e0290fb..0123fce5 100644 --- a/src/main/java/controller/LadderController.java +++ b/src/main/java/controller/LadderController.java @@ -1,6 +1,8 @@ package controller; import java.util.*; + +import exception.ErrorMessage; import model.*; import view.*; @@ -52,7 +54,7 @@ private void showResults() { ResultView.printResult(query, ladderResult.getResult(query)); } else { - System.out.println("존재하지 않는 이름입니다. 다시 입력해주세요."); + System.out.println(ErrorMessage.NOT_EXIST_NAME); } } } diff --git a/src/main/java/model/Player.java b/src/main/java/model/Player.java index ae11e2f2..1c243ea4 100644 --- a/src/main/java/model/Player.java +++ b/src/main/java/model/Player.java @@ -1,5 +1,7 @@ package model; +import exception.ErrorMessage; + public class Player { private final String name; @@ -7,7 +9,7 @@ public class Player { public Player(String name) { if (name.length() > MAX_NAME_LENGTH) { - throw new IllegalArgumentException("이름은 최대 5글자까지 가능합니다."); + throw new IllegalArgumentException(ErrorMessage.LIMIT_NAME_LENGTH); } this.name = name; } diff --git a/src/test/java/model/PlayerTest.java b/src/test/java/model/PlayerTest.java index 79aec2d6..795bbe8f 100644 --- a/src/test/java/model/PlayerTest.java +++ b/src/test/java/model/PlayerTest.java @@ -1,5 +1,6 @@ package model; +import exception.ErrorMessage; import org.junit.jupiter.api.Test; import static org.junit.jupiter.api.Assertions.assertEquals; @@ -13,7 +14,7 @@ class PlayerTest { IllegalArgumentException.class, () -> new Player("abcdef") ); - assertEquals("이름은 최대 5글자까지 가능합니다.", exception.getMessage()); + assertEquals(ErrorMessage.LIMIT_NAME_LENGTH, exception.getMessage()); } @Test From 6d01fb9b3822d6982105f0fb21db9e2842e691d5 Mon Sep 17 00:00:00 2001 From: dldb-chamchi Date: Thu, 14 Aug 2025 16:56:01 +0900 Subject: [PATCH 16/17] =?UTF-8?q?style:=20this=20=EC=82=AD=EC=A0=9C?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/main/java/controller/LadderController.java | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/main/java/controller/LadderController.java b/src/main/java/controller/LadderController.java index 0123fce5..0f262b4d 100644 --- a/src/main/java/controller/LadderController.java +++ b/src/main/java/controller/LadderController.java @@ -18,9 +18,9 @@ public void start() { List results = InputView.getResults(); int height = InputView.getLadderHeight(); - this.players = createPlayers(names); + players = createPlayers(names); this.results = results; - this.ladder = new Ladder(players.size(), height); + ladder = new Ladder(players.size(), height); play(); } From a2a2f88c49774db9a62efb094687414748984781 Mon Sep 17 00:00:00 2001 From: dldb-chamchi Date: Thu, 14 Aug 2025 17:04:55 +0900 Subject: [PATCH 17/17] =?UTF-8?q?refactor:=20=EC=9D=BC=EA=B8=89=20?= =?UTF-8?q?=EC=BB=AC=EB=A0=89=EC=85=98=20=EC=A0=81=EC=9A=A9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/controller/LadderController.java | 6 +++--- src/main/java/model/Ladder.java | 4 ++-- src/main/java/model/Players.java | 19 +++++++++++++++++++ src/main/java/view/ResultView.java | 5 +++-- src/test/java/model/LadderTest.java | 2 +- 5 files changed, 28 insertions(+), 8 deletions(-) create mode 100644 src/main/java/model/Players.java diff --git a/src/main/java/controller/LadderController.java b/src/main/java/controller/LadderController.java index 0f262b4d..b92dadca 100644 --- a/src/main/java/controller/LadderController.java +++ b/src/main/java/controller/LadderController.java @@ -8,7 +8,7 @@ public class LadderController { - private List players; + private Players players; private List results; private Ladder ladder; private LadderResult ladderResult; @@ -25,12 +25,12 @@ public void start() { play(); } - private List createPlayers(List names) { + private Players createPlayers(List names) { List players = new ArrayList<>(); for (String name : names) { players.add(new Player(name)); } - return players; + return new Players(players); } public void play() { diff --git a/src/main/java/model/Ladder.java b/src/main/java/model/Ladder.java index 6924bc31..f3f1fe69 100644 --- a/src/main/java/model/Ladder.java +++ b/src/main/java/model/Ladder.java @@ -14,12 +14,12 @@ public Ladder(int playerCount, int height) { } } - public LadderResult run(List players, List results) { + public LadderResult run(Players players, List results) { Map resultMap = new HashMap<>(); for (int i = 0; i < players.size(); i++) { int finalPosition = move(i); - resultMap.put(players.get(i).getName(), results.get(finalPosition)); + resultMap.put(players.getPlayersList().get(i).getName(), results.get(finalPosition)); } return new LadderResult(resultMap); } diff --git a/src/main/java/model/Players.java b/src/main/java/model/Players.java new file mode 100644 index 00000000..c3a03029 --- /dev/null +++ b/src/main/java/model/Players.java @@ -0,0 +1,19 @@ +package model; + +import java.util.List; + +public class Players { + private final List playersList; + + public Players(List playersList) { + this.playersList = playersList; + } + + public int size(){ + return playersList.size(); + } + + public List getPlayersList() { + return playersList; + } +} diff --git a/src/main/java/view/ResultView.java b/src/main/java/view/ResultView.java index 4b4c37af..e107ec21 100644 --- a/src/main/java/view/ResultView.java +++ b/src/main/java/view/ResultView.java @@ -2,13 +2,14 @@ import model.Line; import model.Player; +import model.Players; import java.util.*; public class ResultView { - public static void printLadder(List players, List lines, List results) { - for (Player player : players) { + public static void printLadder(Players players, List lines, List results) { + for (Player player : players.getPlayersList()) { System.out.printf("%6s", player.getName()); } System.out.println(); diff --git a/src/test/java/model/LadderTest.java b/src/test/java/model/LadderTest.java index f8a9a874..4f76b409 100644 --- a/src/test/java/model/LadderTest.java +++ b/src/test/java/model/LadderTest.java @@ -13,7 +13,7 @@ class LadderTest { @Test void 사다리_게임_결과_확인() { - List players = List.of(new Player("Neo"), new Player("Tommy"), new Player("Brie")); + Players players = new Players(List.of(new Player("Neo"), new Player("Tommy"), new Player("Brie"))); List results = List.of("1000", "꽝", "3000"); Ladder ladder = new Ladder(players.size(), 5);