From b9162ed40e86ca8efaca1bf7001f92775b36de2f Mon Sep 17 00:00:00 2001 From: hd0rable Date: Mon, 23 Sep 2024 16:08:53 +0900 Subject: [PATCH 1/8] =?UTF-8?q?feat=20:=20=EA=B8=B0=EB=8A=A5=20=EC=9A=94?= =?UTF-8?q?=EA=B5=AC=EC=82=AC=ED=95=AD=202=20=EC=82=AC=EB=8B=A4=EB=A6=AC?= =?UTF-8?q?=20=EC=B6=9C=EB=A0=A5=20=EA=B8=B0=EB=8A=A5=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/ladder/LadderRunner.java | 39 ++++++++++++++++++++++++++ 1 file changed, 39 insertions(+) diff --git a/src/main/java/ladder/LadderRunner.java b/src/main/java/ladder/LadderRunner.java index dc1e121..ae95d3c 100644 --- a/src/main/java/ladder/LadderRunner.java +++ b/src/main/java/ladder/LadderRunner.java @@ -8,9 +8,48 @@ public LadderRunner(Row[] rows) { this.rows = rows; } + public void drawLadderState(Position position,int rowcnt) { + + StringBuilder line = new StringBuilder(); + for (int i = 0; i < rows.length; i++) { + Node[] nodes = rows[i].getNodes(); + //LadderStateUpdate(line,position,nodes); + for(int j = 0; j < nodes.length; j++) { + if (nodes[j].isRight()) + line.append(1); + if (nodes[j].isLeft()) + line.append(-1); + if (nodes[j].isNone()) + line.append(0); + if(position.getValue() == j && rowcnt==i) + line.append("*"); + line.append(" "); + } + line.append("\n"); + } + System.out.println(line.toString()); + } + +// public void LadderStateUpdate(StringBuilder line,Position position,Node[] nodes) { +// for(int j = 0; j < nodes.length; j++) { +// if (nodes[j].isRight()) +// line.append(1); +// if (nodes[j].isLeft()) +// line.append(-1); +// if (nodes[j].isNone()) +// line.append(0); +// if(position.getValue() == j) +// line.append("*"); +// line.append(" "); +// } +// +// } + public int run(Position position) { for (int i = 0; i < rows.length; i++) { + drawLadderState(position,i); rows[i].nextPosition(position); + drawLadderState(position,i); } return position.getValue(); } From 05ae98440251f21451d0d16a7b1713905c2ec624 Mon Sep 17 00:00:00 2001 From: hd0rable Date: Mon, 23 Sep 2024 22:02:24 +0900 Subject: [PATCH 2/8] =?UTF-8?q?refactor=20:=20LadderDraw=20=EB=B6=84?= =?UTF-8?q?=EB=A6=AC?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/main/java/ladder/LadderDraw.java | 45 ++++++++++++++++++++++++++++ 1 file changed, 45 insertions(+) create mode 100644 src/main/java/ladder/LadderDraw.java diff --git a/src/main/java/ladder/LadderDraw.java b/src/main/java/ladder/LadderDraw.java new file mode 100644 index 0000000..6826b1d --- /dev/null +++ b/src/main/java/ladder/LadderDraw.java @@ -0,0 +1,45 @@ +package ladder; + +public class LadderDraw { + + private final Row[] rows; + private final StringBuilder line = new StringBuilder(); + + public LadderDraw(Row[] rows) { + this.rows=rows; + } + + public void drawLadderState(int x, int y,String State) { + + line.append(State+"\n"); + for (int i = 0; i < rows.length; i++) { + + Position position = Position.of(x, y); + LadderStateUpdate(position, i); + line.append("\n"); + } + System.out.println(line.toString()); + line.setLength(0); + } + + private void LadderStateUpdate(Position position, int i) { + + Node[] nodes = rows[i].getNodes(); + + for (int j = 0; j < nodes.length; j++) { + + if (nodes[j].isRight()) + line.append(1); + if (nodes[j].isLeft()) + line.append(-1); + if (nodes[j].isNone()) + line.append(0); + if (position.isCorrectPosition(j,i)) + line.append("*"); + line.append(" "); + + } + } + + +} From b02d77077e7dee20cbeab09b35649c97fbd8f332 Mon Sep 17 00:00:00 2001 From: hd0rable Date: Mon, 23 Sep 2024 22:02:48 +0900 Subject: [PATCH 3/8] =?UTF-8?q?refactor=20:=20LadderDraw=20=EB=B6=84?= =?UTF-8?q?=EB=A6=AC=EC=97=90=20=EB=94=B0=EB=A5=B8=20=EC=BD=94=EB=93=9C=20?= =?UTF-8?q?=EB=A6=AC=ED=8E=99=ED=86=A0=EB=A7=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/main/java/ladder/LadderGame.java | 2 +- src/main/java/ladder/LadderRunner.java | 46 +++---------------- src/main/java/ladder/Node.java | 13 +++--- src/main/java/ladder/Position.java | 42 +++++++++++------ src/main/java/ladder/Row.java | 20 ++++---- .../java/ladder/creator/LadderCreator.java | 2 +- 6 files changed, 55 insertions(+), 70 deletions(-) diff --git a/src/main/java/ladder/LadderGame.java b/src/main/java/ladder/LadderGame.java index 717458e..1606f61 100644 --- a/src/main/java/ladder/LadderGame.java +++ b/src/main/java/ladder/LadderGame.java @@ -13,6 +13,6 @@ public LadderGame(LadderCreator ladderCreator) { public int run(Position position) { LadderRunner ladderRunner = new LadderRunner(ladderCreator.getRows()); ladderRunner.run(position); - return position.getValue(); + return position.getX(); } } diff --git a/src/main/java/ladder/LadderRunner.java b/src/main/java/ladder/LadderRunner.java index ae95d3c..c4f67b1 100644 --- a/src/main/java/ladder/LadderRunner.java +++ b/src/main/java/ladder/LadderRunner.java @@ -8,49 +8,15 @@ public LadderRunner(Row[] rows) { this.rows = rows; } - public void drawLadderState(Position position,int rowcnt) { + public int run(Position x) { - StringBuilder line = new StringBuilder(); - for (int i = 0; i < rows.length; i++) { - Node[] nodes = rows[i].getNodes(); - //LadderStateUpdate(line,position,nodes); - for(int j = 0; j < nodes.length; j++) { - if (nodes[j].isRight()) - line.append(1); - if (nodes[j].isLeft()) - line.append(-1); - if (nodes[j].isNone()) - line.append(0); - if(position.getValue() == j && rowcnt==i) - line.append("*"); - line.append(" "); - } - line.append("\n"); - } - System.out.println(line.toString()); - } - -// public void LadderStateUpdate(StringBuilder line,Position position,Node[] nodes) { -// for(int j = 0; j < nodes.length; j++) { -// if (nodes[j].isRight()) -// line.append(1); -// if (nodes[j].isLeft()) -// line.append(-1); -// if (nodes[j].isNone()) -// line.append(0); -// if(position.getValue() == j) -// line.append("*"); -// line.append(" "); -// } -// -// } + LadderDraw ladderDraw = new LadderDraw(rows); - public int run(Position position) { for (int i = 0; i < rows.length; i++) { - drawLadderState(position,i); - rows[i].nextPosition(position); - drawLadderState(position,i); + ladderDraw.drawLadderState(x.getX(),i,"Before"); + rows[i].nextPosition(x); + ladderDraw.drawLadderState(x.getX(),i,"After"); } - return position.getValue(); + return x.getX(); } } diff --git a/src/main/java/ladder/Node.java b/src/main/java/ladder/Node.java index 3291e62..1900077 100644 --- a/src/main/java/ladder/Node.java +++ b/src/main/java/ladder/Node.java @@ -14,13 +14,14 @@ public static Node from(Direction direction) { return new Node(direction); } - public void move(Position position) { + public void moveRow(Position position) { + if (isRight()) { - position.next(); + position.nextX(); return; } if (isLeft()) { - position.prev(); + position.prevX(); return; } } @@ -37,15 +38,15 @@ public boolean isAlreadySetDirection() { return !isNone(); } - private boolean isRight() { + public boolean isRight() { return direction == RIGHT; } - private boolean isLeft() { + public boolean isLeft() { return direction == LEFT; } - private boolean isNone() { + public boolean isNone() { return direction == NONE; } } diff --git a/src/main/java/ladder/Position.java b/src/main/java/ladder/Position.java index fdaa2dd..b26dc59 100644 --- a/src/main/java/ladder/Position.java +++ b/src/main/java/ladder/Position.java @@ -3,35 +3,51 @@ import static ladder.ExceptionMessage.INVALID_LADDER_POSITION; public class Position { - private int position; - private Position(int position) { - this.position = position; + private int x; + private int y; + + private Position(int x) { + this.x = x; + } + + private Position(int x, int y) { + this.x = x; + this.y = y; } - public int getValue() { - return position; + public int getX() { + return x; } + public static Position from(int position) { validatePosition(position); return new Position(position); } - public void prev() { - position--; + public static Position of(int x, int y) { + return new Position(x,y); + } + + public void prevX() { + x--; + } + + public void nextX() { + x++; } - public void next() { - position++; + public boolean xIsSmallerThan(int x) { + return this.x < x; } - public boolean isSmallerThan(int position) { - return this.position < position; + public boolean xIsBiggerThan(int x) { + return this.x > x; } - public boolean isBiggerThan(int position) { - return this.position > position; + public boolean isCorrectPosition(int x, int y) { + return this.x == x && this.y == y; } private static void validatePosition(int position) { diff --git a/src/main/java/ladder/Row.java b/src/main/java/ladder/Row.java index 1be0477..2fff5e4 100644 --- a/src/main/java/ladder/Row.java +++ b/src/main/java/ladder/Row.java @@ -20,14 +20,13 @@ public void drawLine(Position startPosition) { public void nextPosition(Position position) { validatePosition(position); - - nodes[position.getValue()].move(position); + nodes[position.getX()].moveRow(position); } private void setDirectionBetweenNextPosition(Position position) { - nodes[position.getValue()].setRightNode(); - position.next(); - nodes[position.getValue()].setLeftNode(); + nodes[position.getX()].setRightNode(); + position.nextX(); + nodes[position.getX()].setLeftNode(); } private void validatePosition(Position position) { @@ -44,18 +43,21 @@ private void validateDrawLinePosition(Position startPosition) { } private boolean isInvalidPosition(Position position) { - return position.isBiggerThan(nodes.length - 1) ; + return position.xIsBiggerThan(nodes.length - 1) ; } private boolean isLineAtPosition(Position position) { - return nodes[position.getValue()].isAlreadySetDirection(); + return nodes[position.getX()].isAlreadySetDirection(); } private boolean isLineAtNextPosition(Position position) { - position.next(); + position.nextX(); boolean lineAtPosition = isLineAtPosition(position); - position.prev(); + position.prevX(); return lineAtPosition; } + public Node[] getNodes() { + return nodes; + } } \ No newline at end of file diff --git a/src/main/java/ladder/creator/LadderCreator.java b/src/main/java/ladder/creator/LadderCreator.java index 0145e29..1a878e0 100644 --- a/src/main/java/ladder/creator/LadderCreator.java +++ b/src/main/java/ladder/creator/LadderCreator.java @@ -16,7 +16,7 @@ public LadderCreator(GreaterThanOne numberOfRow, GreaterThanOne numberOfPerson) } public void drawLine(Position row, Position col) { - rows[row.getValue()].drawLine(col); + rows[row.getX()].drawLine(col); } public Row[] getRows() { From 7e8b2535fe3a1e7166fb0e147553966ddb7ba6ee Mon Sep 17 00:00:00 2001 From: hd0rable Date: Mon, 23 Sep 2024 22:03:12 +0900 Subject: [PATCH 4/8] =?UTF-8?q?test=20:=20LadderDraw=20=EB=B6=84=EB=A6=AC?= =?UTF-8?q?=EC=97=90=20=EB=94=B0=EB=A5=B8=20=ED=85=8C=EC=8A=A4=ED=8A=B8?= =?UTF-8?q?=EC=BD=94=EB=93=9C=20=EB=A6=AC=ED=8E=99=ED=86=A0=EB=A7=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/test/java/ladder/NodeTest.java | 12 ++++++------ src/test/java/ladder/RowTest.java | 12 ++++++------ 2 files changed, 12 insertions(+), 12 deletions(-) diff --git a/src/test/java/ladder/NodeTest.java b/src/test/java/ladder/NodeTest.java index 13667cc..1776333 100644 --- a/src/test/java/ladder/NodeTest.java +++ b/src/test/java/ladder/NodeTest.java @@ -13,9 +13,9 @@ class NodeTest { Position position = Position.from(0); - node.move(position); + node.moveRow(position); - assertThat(position.getValue()).isEqualTo(1); + assertThat(position.getX()).isEqualTo(1); } @Test @@ -24,9 +24,9 @@ class NodeTest { Position position = Position.from(0); - node.move(position); + node.moveRow(position); - assertThat(position.getValue()).isEqualTo(0); + assertThat(position.getX()).isEqualTo(0); } @Test @@ -35,9 +35,9 @@ class NodeTest { Position position = Position.from(1); - node.move(position); + node.moveRow(position); - assertThat(position.getValue()).isEqualTo(0); + assertThat(position.getX()).isEqualTo(0); } } \ No newline at end of file diff --git a/src/test/java/ladder/RowTest.java b/src/test/java/ladder/RowTest.java index d9e7287..603116a 100644 --- a/src/test/java/ladder/RowTest.java +++ b/src/test/java/ladder/RowTest.java @@ -16,7 +16,7 @@ class RowTest { Position position = Position.from(0); row.nextPosition(position); //then - assertThat(position.getValue()).isEqualTo(0); + assertThat(position.getX()).isEqualTo(0); } @Test @@ -31,14 +31,14 @@ class RowTest { row.nextPosition(position); //then - assertThat(position.getValue()).isEqualTo(1); + assertThat(position.getX()).isEqualTo(1); //given position = Position.from(1); row.nextPosition(position); //then - assertThat(position.getValue()).isEqualTo(0); + assertThat(position.getX()).isEqualTo(0); } @Test @@ -53,21 +53,21 @@ class RowTest { row.nextPosition(position); //then - assertThat(position.getValue()).isEqualTo(1); + assertThat(position.getX()).isEqualTo(1); //given position = Position.from(1); row.nextPosition(position); //then - assertThat(position.getValue()).isEqualTo(0); + assertThat(position.getX()).isEqualTo(0); //given position = Position.from(2); row.nextPosition(position); //then - assertThat(position.getValue()).isEqualTo(2); + assertThat(position.getX()).isEqualTo(2); } @Test From 0663498d56fdf862606e2610d7913374c7610515 Mon Sep 17 00:00:00 2001 From: hd0rable Date: Mon, 23 Sep 2024 22:03:25 +0900 Subject: [PATCH 5/8] =?UTF-8?q?test=20:=20LadderDraw=20=EB=B6=84=EB=A6=AC?= =?UTF-8?q?=EC=97=90=20=EB=94=B0=EB=A5=B8=20=ED=85=8C=EC=8A=A4=ED=8A=B8?= =?UTF-8?q?=EC=BD=94=EB=93=9C=20=EC=9E=91=EC=84=B1?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/test/java/ladder/LadderGameTest.java | 68 ++++++++++++++++++++++++ src/test/java/ladder/OutputCapture.java | 18 +++++++ 2 files changed, 86 insertions(+) create mode 100644 src/test/java/ladder/OutputCapture.java diff --git a/src/test/java/ladder/LadderGameTest.java b/src/test/java/ladder/LadderGameTest.java index aa93e5f..659e083 100644 --- a/src/test/java/ladder/LadderGameTest.java +++ b/src/test/java/ladder/LadderGameTest.java @@ -9,6 +9,7 @@ class LadderGameTest { @Test void 사다리_생성_확인() { + //given GreaterThanOne numberOfRow = GreaterThanOne.from(3); GreaterThanOne numberOfPerson = GreaterThanOne.from(5); @@ -22,6 +23,7 @@ class LadderGameTest { @Test void 사다리_사람_예외_처리_확인() { + //when GreaterThanOne numberOfPerson = GreaterThanOne.from(3); LadderCreator ladderCreator = new LadderCreator(GreaterThanOne.from(2), numberOfPerson); @@ -65,4 +67,70 @@ class LadderGameTest { //then assertThat(ladderGame.run(position)).isEqualTo(0); } + + @Test + void 사다리_출력_확인() { + + //given + GreaterThanOne numberOfPerson = GreaterThanOne.from(4); + GreaterThanOne row = GreaterThanOne.from(3); + LadderCreator ladderCreator = new LadderCreator(row, numberOfPerson); + LadderGame ladderGame = new LadderGame(ladderCreator); + StringBuilder line = new StringBuilder(); + OutputCapture outputCapture = new OutputCapture(); + outputCapture.start(); // 출력 캡처 시작 + + // when + ladderCreator.drawLine(Position.from(0),Position.from(0)); + ladderCreator.drawLine(Position.from(1),Position.from(1)); + ladderCreator.drawLine(Position.from(2),Position.from(0)); + + Position position = Position.from(0); + ladderGame.run(position); + + // then + String output = outputCapture.stop(); // 출력 캡처 중지 + + // 예상 출력 형식 + String expectedOutput = "Before\n" + + "1* -1 0 0\n" + + "0 1 -1 0\n" + + "1 -1 0 0\n" + + "\n" + + "After\n" + + "1 -1* 0 0\n" + + "0 1 -1 0\n" + + "1 -1 0 0\n" + + "\n" + + "Before\n" + + "1 -1 0 0\n" + + "0 1* -1 0\n" + + "1 -1 0 0\n" + + "\n" + + "After\n" + + "1 -1 0 0\n" + + "0 1 -1* 0\n" + + "1 -1 0 0\n" + + "\n" + + "Before\n" + + "1 -1 0 0\n" + + "0 1 -1 0\n" + + "1 -1 0* 0\n" + + "\n" + + "After\n" + + "1 -1 0 0\n" + + "0 1 -1 0\n" + + "1 -1 0* 0\n"; + + // 공백 및 줄바꿈 정리 후 비교 + assertThat(normalizeOutput(output)).isEqualTo(normalizeOutput(expectedOutput)); + } + + private String normalizeOutput(String output) { + // 줄바꿈과 공백을 정리 + return output.replaceAll("\\s+", " ") + .replaceAll(" +", " ") + .trim(); + } + } \ No newline at end of file diff --git a/src/test/java/ladder/OutputCapture.java b/src/test/java/ladder/OutputCapture.java new file mode 100644 index 0000000..8c52a42 --- /dev/null +++ b/src/test/java/ladder/OutputCapture.java @@ -0,0 +1,18 @@ +package ladder; + +import java.io.ByteArrayOutputStream; +import java.io.PrintStream; + +public class OutputCapture { + private final ByteArrayOutputStream outputStream = new ByteArrayOutputStream(); + private final PrintStream originalOut = System.out; + + public void start() { + System.setOut(new PrintStream(outputStream)); + } + + public String stop() { + System.setOut(originalOut); + return outputStream.toString(); + } +} From f5e916449ff7782567912cdcaa96a675361d138a Mon Sep 17 00:00:00 2001 From: hd0rable Date: Tue, 24 Sep 2024 18:36:00 +0900 Subject: [PATCH 6/8] =?UTF-8?q?refactor=20:=20position=20=ED=81=B4?= =?UTF-8?q?=EB=9E=98=EC=8A=A4=20=EB=A6=AC=ED=8E=99=ED=86=A0=EB=A7=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .idea/misc.xml | 2 +- src/main/java/ladder/LadderDraw.java | 15 +++---- src/main/java/ladder/LadderGame.java | 6 +-- src/main/java/ladder/LadderRunner.java | 10 ++--- src/main/java/ladder/Node.java | 4 +- src/main/java/ladder/Position.java | 39 +++++++------------ src/main/java/ladder/Row.java | 16 ++++---- .../java/ladder/creator/LadderCreator.java | 2 +- src/test/java/ladder/NodeTest.java | 6 +-- src/test/java/ladder/RowTest.java | 12 +++--- 10 files changed, 50 insertions(+), 62 deletions(-) diff --git a/.idea/misc.xml b/.idea/misc.xml index 8f86b33..807cb65 100644 --- a/.idea/misc.xml +++ b/.idea/misc.xml @@ -4,7 +4,7 @@ - + \ No newline at end of file diff --git a/src/main/java/ladder/LadderDraw.java b/src/main/java/ladder/LadderDraw.java index 6826b1d..6250668 100644 --- a/src/main/java/ladder/LadderDraw.java +++ b/src/main/java/ladder/LadderDraw.java @@ -9,22 +9,19 @@ public LadderDraw(Row[] rows) { this.rows=rows; } - public void drawLadderState(int x, int y,String State) { + public void drawLadderState(Position positionX,Position positionY,String State) { line.append(State+"\n"); for (int i = 0; i < rows.length; i++) { - - Position position = Position.of(x, y); - LadderStateUpdate(position, i); - line.append("\n"); + LadderStateUpdate(positionX,positionY, i); } System.out.println(line.toString()); line.setLength(0); } - private void LadderStateUpdate(Position position, int i) { + private void LadderStateUpdate(Position positionX,Position positionY, int currentY) { - Node[] nodes = rows[i].getNodes(); + Node[] nodes = rows[currentY].getNodes(); for (int j = 0; j < nodes.length; j++) { @@ -34,11 +31,11 @@ private void LadderStateUpdate(Position position, int i) { line.append(-1); if (nodes[j].isNone()) line.append(0); - if (position.isCorrectPosition(j,i)) + if (positionX.isCurrentPosition(j) && positionY.isCurrentPosition(currentY)) line.append("*"); line.append(" "); - } + line.append("\n"); } diff --git a/src/main/java/ladder/LadderGame.java b/src/main/java/ladder/LadderGame.java index 1606f61..c15b02c 100644 --- a/src/main/java/ladder/LadderGame.java +++ b/src/main/java/ladder/LadderGame.java @@ -10,9 +10,9 @@ public LadderGame(LadderCreator ladderCreator) { this.ladderCreator = ladderCreator; } - public int run(Position position) { + public int run(Position selectX) { LadderRunner ladderRunner = new LadderRunner(ladderCreator.getRows()); - ladderRunner.run(position); - return position.getX(); + ladderRunner.run(selectX); + return selectX.getPosition(); } } diff --git a/src/main/java/ladder/LadderRunner.java b/src/main/java/ladder/LadderRunner.java index c4f67b1..78a3d05 100644 --- a/src/main/java/ladder/LadderRunner.java +++ b/src/main/java/ladder/LadderRunner.java @@ -8,15 +8,15 @@ public LadderRunner(Row[] rows) { this.rows = rows; } - public int run(Position x) { + public int run(Position positionX) { LadderDraw ladderDraw = new LadderDraw(rows); for (int i = 0; i < rows.length; i++) { - ladderDraw.drawLadderState(x.getX(),i,"Before"); - rows[i].nextPosition(x); - ladderDraw.drawLadderState(x.getX(),i,"After"); + ladderDraw.drawLadderState(positionX,Position.from(i),"Before"); + rows[i].nextPosition(positionX); + ladderDraw.drawLadderState(positionX,Position.from(i),"After"); } - return x.getX(); + return positionX.getPosition(); } } diff --git a/src/main/java/ladder/Node.java b/src/main/java/ladder/Node.java index 1900077..14a04ae 100644 --- a/src/main/java/ladder/Node.java +++ b/src/main/java/ladder/Node.java @@ -17,11 +17,11 @@ public static Node from(Direction direction) { public void moveRow(Position position) { if (isRight()) { - position.nextX(); + position.next(); return; } if (isLeft()) { - position.prevX(); + position.prev(); return; } } diff --git a/src/main/java/ladder/Position.java b/src/main/java/ladder/Position.java index b26dc59..afaea76 100644 --- a/src/main/java/ladder/Position.java +++ b/src/main/java/ladder/Position.java @@ -4,20 +4,14 @@ public class Position { - private int x; - private int y; + private int position; - private Position(int x) { - this.x = x; + private Position(int position) { + this.position = position; } - private Position(int x, int y) { - this.x = x; - this.y = y; - } - - public int getX() { - return x; + public int getPosition() { + return position; } @@ -26,28 +20,25 @@ public static Position from(int position) { return new Position(position); } - public static Position of(int x, int y) { - return new Position(x,y); - } - public void prevX() { - x--; + public void prev() { + position--; } - public void nextX() { - x++; + public void next() { + position++; } - public boolean xIsSmallerThan(int x) { - return this.x < x; + public boolean isSmallerThan(int position) { + return this.position < position; } - public boolean xIsBiggerThan(int x) { - return this.x > x; + public boolean isBiggerThan(int position) { + return this.position > position; } - public boolean isCorrectPosition(int x, int y) { - return this.x == x && this.y == y; + public boolean isCurrentPosition(int position) { + return this.position == position; } private static void validatePosition(int position) { diff --git a/src/main/java/ladder/Row.java b/src/main/java/ladder/Row.java index 2fff5e4..11a8c4b 100644 --- a/src/main/java/ladder/Row.java +++ b/src/main/java/ladder/Row.java @@ -20,13 +20,13 @@ public void drawLine(Position startPosition) { public void nextPosition(Position position) { validatePosition(position); - nodes[position.getX()].moveRow(position); + nodes[position.getPosition()].moveRow(position); } private void setDirectionBetweenNextPosition(Position position) { - nodes[position.getX()].setRightNode(); - position.nextX(); - nodes[position.getX()].setLeftNode(); + nodes[position.getPosition()].setRightNode(); + position.next(); + nodes[position.getPosition()].setLeftNode(); } private void validatePosition(Position position) { @@ -43,17 +43,17 @@ private void validateDrawLinePosition(Position startPosition) { } private boolean isInvalidPosition(Position position) { - return position.xIsBiggerThan(nodes.length - 1) ; + return position.isBiggerThan(nodes.length - 1) ; } private boolean isLineAtPosition(Position position) { - return nodes[position.getX()].isAlreadySetDirection(); + return nodes[position.getPosition()].isAlreadySetDirection(); } private boolean isLineAtNextPosition(Position position) { - position.nextX(); + position.next(); boolean lineAtPosition = isLineAtPosition(position); - position.prevX(); + position.prev(); return lineAtPosition; } diff --git a/src/main/java/ladder/creator/LadderCreator.java b/src/main/java/ladder/creator/LadderCreator.java index 1a878e0..0071ea3 100644 --- a/src/main/java/ladder/creator/LadderCreator.java +++ b/src/main/java/ladder/creator/LadderCreator.java @@ -16,7 +16,7 @@ public LadderCreator(GreaterThanOne numberOfRow, GreaterThanOne numberOfPerson) } public void drawLine(Position row, Position col) { - rows[row.getX()].drawLine(col); + rows[row.getPosition()].drawLine(col); } public Row[] getRows() { diff --git a/src/test/java/ladder/NodeTest.java b/src/test/java/ladder/NodeTest.java index 1776333..cd80377 100644 --- a/src/test/java/ladder/NodeTest.java +++ b/src/test/java/ladder/NodeTest.java @@ -15,7 +15,7 @@ class NodeTest { node.moveRow(position); - assertThat(position.getX()).isEqualTo(1); + assertThat(position.getPosition()).isEqualTo(1); } @Test @@ -26,7 +26,7 @@ class NodeTest { node.moveRow(position); - assertThat(position.getX()).isEqualTo(0); + assertThat(position.getPosition()).isEqualTo(0); } @Test @@ -37,7 +37,7 @@ class NodeTest { node.moveRow(position); - assertThat(position.getX()).isEqualTo(0); + assertThat(position.getPosition()).isEqualTo(0); } } \ No newline at end of file diff --git a/src/test/java/ladder/RowTest.java b/src/test/java/ladder/RowTest.java index 603116a..3e5ed1f 100644 --- a/src/test/java/ladder/RowTest.java +++ b/src/test/java/ladder/RowTest.java @@ -16,7 +16,7 @@ class RowTest { Position position = Position.from(0); row.nextPosition(position); //then - assertThat(position.getX()).isEqualTo(0); + assertThat(position.getPosition()).isEqualTo(0); } @Test @@ -31,14 +31,14 @@ class RowTest { row.nextPosition(position); //then - assertThat(position.getX()).isEqualTo(1); + assertThat(position.getPosition()).isEqualTo(1); //given position = Position.from(1); row.nextPosition(position); //then - assertThat(position.getX()).isEqualTo(0); + assertThat(position.getPosition()).isEqualTo(0); } @Test @@ -53,21 +53,21 @@ class RowTest { row.nextPosition(position); //then - assertThat(position.getX()).isEqualTo(1); + assertThat(position.getPosition()).isEqualTo(1); //given position = Position.from(1); row.nextPosition(position); //then - assertThat(position.getX()).isEqualTo(0); + assertThat(position.getPosition()).isEqualTo(0); //given position = Position.from(2); row.nextPosition(position); //then - assertThat(position.getX()).isEqualTo(2); + assertThat(position.getPosition()).isEqualTo(2); } @Test From 0e405b0d48aaf20359394ebae027a1af10d289aa Mon Sep 17 00:00:00 2001 From: hd0rable Date: Thu, 26 Sep 2024 02:49:53 +0900 Subject: [PATCH 7/8] =?UTF-8?q?refactor=20:=20=EC=A0=84=EC=B2=B4=20?= =?UTF-8?q?=EB=A6=AC=ED=8E=99=ED=86=A0=EB=A7=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .idea/gradle.xml | 3 +- src/main/java/ladder/GreaterThanOne.java | 4 +- src/main/java/ladder/LadderDraw.java | 42 ------ src/main/java/ladder/LadderGame.java | 18 ++- src/main/java/ladder/LadderRunner.java | 32 +++-- src/main/java/ladder/Position.java | 68 ++++++--- .../ladder/creator/LadderAutoCreator.java | 84 +++++++++++ .../java/ladder/creator/LadderCreator.java | 26 +--- .../ladder/creator/LadderInputCreator.java | 36 +++++ .../{ => exception}/ExceptionMessage.java | 6 +- src/main/java/ladder/info/Ladder.java | 29 ++++ src/main/java/ladder/info/LadderSize.java | 26 ++++ src/main/java/ladder/{ => info}/Node.java | 11 +- src/main/java/ladder/{ => info}/Row.java | 36 +++-- src/main/java/ladder/print/LadderPrint.java | 57 ++++++++ src/main/java/ladder/print/PrintState.java | 16 +++ src/test/java/ladder/LadderGameTest.java | 130 ++++++++++++------ src/test/java/ladder/NodeTest.java | 19 +-- src/test/java/ladder/OutputCapture.java | 6 + src/test/java/ladder/RowTest.java | 114 +++++++++------ 20 files changed, 547 insertions(+), 216 deletions(-) delete mode 100644 src/main/java/ladder/LadderDraw.java create mode 100644 src/main/java/ladder/creator/LadderAutoCreator.java create mode 100644 src/main/java/ladder/creator/LadderInputCreator.java rename src/main/java/ladder/{ => exception}/ExceptionMessage.java (59%) create mode 100644 src/main/java/ladder/info/Ladder.java create mode 100644 src/main/java/ladder/info/LadderSize.java rename src/main/java/ladder/{ => info}/Node.java (82%) rename src/main/java/ladder/{ => info}/Row.java (56%) create mode 100644 src/main/java/ladder/print/LadderPrint.java create mode 100644 src/main/java/ladder/print/PrintState.java diff --git a/.idea/gradle.xml b/.idea/gradle.xml index 2a65317..446c193 100644 --- a/.idea/gradle.xml +++ b/.idea/gradle.xml @@ -4,8 +4,9 @@