From 49a1fa46ac5ce7f1191d9c9ccdf192e6181ff858 Mon Sep 17 00:00:00 2001 From: dlwjddus1112 <161396355+dlwjddus1112@users.noreply.github.com> Date: Wed, 25 Sep 2024 13:55:37 +0900 Subject: [PATCH 1/5] =?UTF-8?q?=EC=82=AC=EB=8B=A4=EB=A6=AC=20=EC=B6=9C?= =?UTF-8?q?=EB=A0=A5=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/ladder/LadderRunner.java | 19 +++++++++++++++++++ src/main/java/ladder/Node.java | 4 ++++ src/main/java/ladder/Row.java | 22 ++++++++++++++++++++++ 3 files changed, 45 insertions(+) diff --git a/src/main/java/ladder/LadderRunner.java b/src/main/java/ladder/LadderRunner.java index dc1e121..e2a8483 100644 --- a/src/main/java/ladder/LadderRunner.java +++ b/src/main/java/ladder/LadderRunner.java @@ -10,8 +10,27 @@ public LadderRunner(Row[] rows) { public int run(Position position) { for (int i = 0; i < rows.length; i++) { + System.out.println("Before"); + drawLadder(Position.from(i),position); + rows[i].nextPosition(position); + + System.out.println("After"); + drawLadder(Position.from(i),position); + } return position.getValue(); } + + private void drawLadder(Position x, Position y){ + StringBuilder sb = new StringBuilder(); + for(int i = 0; i < rows.length; i++){ + if( i == x.getValue()){ + sb.append(rows[i].convertPositionRowtoString(y)).append("\n"); + continue; + } + sb.append(rows[i].convertRowtoString()).append("\n"); + } + System.out.println(sb); + } } diff --git a/src/main/java/ladder/Node.java b/src/main/java/ladder/Node.java index 3291e62..a1d5d0c 100644 --- a/src/main/java/ladder/Node.java +++ b/src/main/java/ladder/Node.java @@ -48,4 +48,8 @@ private boolean isLeft() { private boolean isNone() { return direction == NONE; } + + public Direction getDirection() { + return direction; + } } diff --git a/src/main/java/ladder/Row.java b/src/main/java/ladder/Row.java index 1be0477..6859e91 100644 --- a/src/main/java/ladder/Row.java +++ b/src/main/java/ladder/Row.java @@ -12,6 +12,28 @@ public Row(GreaterThanOne numberOfPerson) { } } + public StringBuilder convertRowtoString(){ + StringBuilder sb = new StringBuilder(); + for(int i = 0 ; i < nodes.length ; i++){ + sb.append(nodes[i].getDirection().getValue()).append(" "); + } + return sb; + } + + public StringBuilder convertPositionRowtoString(Position y){ + StringBuilder sb = new StringBuilder(); + + for (int i = 0; i < nodes.length; i++) { + if(i == y.getValue()) { + sb.append(nodes[i].getDirection().getValue()).append("* "); + continue; + } + sb.append(nodes[i].getDirection().getValue()).append(" "); + } + + return sb; + } + public void drawLine(Position startPosition) { validateDrawLinePosition(startPosition); From 074a838b331b6ff711a5a055506b24c226c2ea0e Mon Sep 17 00:00:00 2001 From: dlwjddus1112 <161396355+dlwjddus1112@users.noreply.github.com> Date: Wed, 25 Sep 2024 15:21:01 +0900 Subject: [PATCH 2/5] =?UTF-8?q?feat=20:=20=EC=82=AC=EB=8B=A4=EB=A6=AC=20?= =?UTF-8?q?=EC=9E=90=EB=8F=99=20=EC=83=9D=EC=84=B1=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/ladder/LadderGame.java | 2 +- src/main/java/ladder/LadderGameFactory.java | 7 ++ src/main/java/ladder/Node.java | 2 + src/main/java/ladder/Position.java | 2 +- src/main/java/ladder/Row.java | 4 +- .../ladder/creator/LadderAutoCreator.java | 65 +++++++++++++++++++ .../java/ladder/creator/LadderCreator.java | 19 +----- .../ladder/creator/LadderCreatorImpl.java | 25 +++++++ src/test/java/ladder/LadderGameTest.java | 20 +++--- src/test/java/ladder/RandomLadderTest.java | 19 ++++++ 10 files changed, 136 insertions(+), 29 deletions(-) create mode 100644 src/main/java/ladder/LadderGameFactory.java create mode 100644 src/main/java/ladder/creator/LadderAutoCreator.java create mode 100644 src/main/java/ladder/creator/LadderCreatorImpl.java create mode 100644 src/test/java/ladder/RandomLadderTest.java diff --git a/src/main/java/ladder/LadderGame.java b/src/main/java/ladder/LadderGame.java index 717458e..684daf0 100644 --- a/src/main/java/ladder/LadderGame.java +++ b/src/main/java/ladder/LadderGame.java @@ -1,11 +1,11 @@ package ladder; import ladder.creator.LadderCreator; +import ladder.creator.LadderCreatorImpl; public class LadderGame { private final LadderCreator ladderCreator; - public LadderGame(LadderCreator ladderCreator) { this.ladderCreator = ladderCreator; } diff --git a/src/main/java/ladder/LadderGameFactory.java b/src/main/java/ladder/LadderGameFactory.java new file mode 100644 index 0000000..e544626 --- /dev/null +++ b/src/main/java/ladder/LadderGameFactory.java @@ -0,0 +1,7 @@ +package ladder; + +import static ladder.Position.validatePosition; + +public class LadderGameFactory { + +} diff --git a/src/main/java/ladder/Node.java b/src/main/java/ladder/Node.java index a1d5d0c..358a8be 100644 --- a/src/main/java/ladder/Node.java +++ b/src/main/java/ladder/Node.java @@ -25,6 +25,8 @@ public void move(Position position) { } } + + public void setRightNode() { direction = RIGHT; } diff --git a/src/main/java/ladder/Position.java b/src/main/java/ladder/Position.java index fdaa2dd..7646890 100644 --- a/src/main/java/ladder/Position.java +++ b/src/main/java/ladder/Position.java @@ -34,7 +34,7 @@ public boolean isBiggerThan(int position) { return this.position > position; } - private static void validatePosition(int position) { + public static void validatePosition(int position) { if (!isPosition(position)) { throw new IllegalArgumentException(INVALID_LADDER_POSITION.getMessage()); } diff --git a/src/main/java/ladder/Row.java b/src/main/java/ladder/Row.java index 6859e91..e1b1caf 100644 --- a/src/main/java/ladder/Row.java +++ b/src/main/java/ladder/Row.java @@ -12,6 +12,9 @@ public Row(GreaterThanOne numberOfPerson) { } } + public int getNodeLength(){ + return nodes.length; + } public StringBuilder convertRowtoString(){ StringBuilder sb = new StringBuilder(); for(int i = 0 ; i < nodes.length ; i++){ @@ -36,7 +39,6 @@ public StringBuilder convertPositionRowtoString(Position y){ public void drawLine(Position startPosition) { validateDrawLinePosition(startPosition); - setDirectionBetweenNextPosition(startPosition); } diff --git a/src/main/java/ladder/creator/LadderAutoCreator.java b/src/main/java/ladder/creator/LadderAutoCreator.java new file mode 100644 index 0000000..416fde2 --- /dev/null +++ b/src/main/java/ladder/creator/LadderAutoCreator.java @@ -0,0 +1,65 @@ +package ladder.creator; + +import ladder.GreaterThanOne; +import ladder.Position; +import ladder.Row; + +import java.util.HashSet; +import java.util.Random; + +public class LadderAutoCreator implements LadderCreator { + private final Row[] rows; + + public LadderAutoCreator(GreaterThanOne numberOfRow, GreaterThanOne numberOfPerson) { + rows = new Row[numberOfRow.getNumber()]; + for (int i = 0; i < numberOfRow.getNumber(); i++) { + rows[i] = new Row(numberOfPerson); + } + } + public Row[] getRows() {return rows;} + + public void drawLine(Position row, Position col){ + HashSet lines = new HashSet<>(); + + row = getRandomRow(); + col = getRandomCol(); + + rows[row.getValue()].drawLine(col); + + int numberOfLines = (int)(rows.length * rows[0].getNodeLength() * 0.3) - 1; + + while(lines.size() < numberOfLines){ + row = getRandomRow(); + col = getRandomCol(); + if(!canDrawLine(row,col)){ + continue; + } + lines.add(row); + + } + + } + + private Position getRandomCol() { + Random r = new Random(); + Position col; + col = Position.from(r.nextInt(rows[0].getNodeLength() - 1)); + return col; + } + + private Position getRandomRow() { + Random r = new Random(); + Position row; + row = Position.from(r.nextInt(rows.length - 1)); + return row; + } + + private boolean canDrawLine(Position row, Position col) { + try { + rows[row.getValue()].drawLine(col); + } catch (IllegalArgumentException e) { + return false; + } + return true; + } +} diff --git a/src/main/java/ladder/creator/LadderCreator.java b/src/main/java/ladder/creator/LadderCreator.java index 0145e29..21b8b73 100644 --- a/src/main/java/ladder/creator/LadderCreator.java +++ b/src/main/java/ladder/creator/LadderCreator.java @@ -1,25 +1,12 @@ package ladder.creator; -import ladder.GreaterThanOne; import ladder.Position; import ladder.Row; -public class LadderCreator { +public interface LadderCreator { - private final Row[] rows; + void drawLine(Position row, Position col); - public LadderCreator(GreaterThanOne numberOfRow, GreaterThanOne numberOfPerson) { - rows = new Row[numberOfRow.getNumber()]; - for (int i = 0; i < numberOfRow.getNumber(); i++) { - rows[i] = new Row(numberOfPerson); - } - } + Row[] getRows(); - public void drawLine(Position row, Position col) { - rows[row.getValue()].drawLine(col); - } - - public Row[] getRows() { - return rows; - } } diff --git a/src/main/java/ladder/creator/LadderCreatorImpl.java b/src/main/java/ladder/creator/LadderCreatorImpl.java new file mode 100644 index 0000000..d8bcf2b --- /dev/null +++ b/src/main/java/ladder/creator/LadderCreatorImpl.java @@ -0,0 +1,25 @@ +package ladder.creator; + +import ladder.GreaterThanOne; +import ladder.Position; +import ladder.Row; + +public class LadderCreatorImpl implements LadderCreator { + + private final Row[] rows; + + public LadderCreatorImpl(GreaterThanOne numberOfRow, GreaterThanOne numberOfPerson) { + rows = new Row[numberOfRow.getNumber()]; + for (int i = 0; i < numberOfRow.getNumber(); i++) { + rows[i] = new Row(numberOfPerson); + } + } + + public void drawLine(Position row, Position col) { + rows[row.getValue()].drawLine(col); + } + + public Row[] getRows() { + return rows; + } +} diff --git a/src/test/java/ladder/LadderGameTest.java b/src/test/java/ladder/LadderGameTest.java index aa93e5f..fe25f40 100644 --- a/src/test/java/ladder/LadderGameTest.java +++ b/src/test/java/ladder/LadderGameTest.java @@ -1,6 +1,6 @@ package ladder; -import ladder.creator.LadderCreator; +import ladder.creator.LadderCreatorImpl; import org.junit.jupiter.api.Test; import static org.assertj.core.api.Assertions.*; @@ -14,18 +14,18 @@ class LadderGameTest { GreaterThanOne numberOfPerson = GreaterThanOne.from(5); //when - LadderCreator ladderCreator = new LadderCreator(numberOfRow, numberOfPerson); + LadderCreatorImpl ladderCreatorImpl = new LadderCreatorImpl(numberOfRow, numberOfPerson); //then - assertThat(ladderCreator).isNotNull(); + assertThat(ladderCreatorImpl).isNotNull(); } @Test void 사다리_사람_예외_처리_확인() { //when GreaterThanOne numberOfPerson = GreaterThanOne.from(3); - LadderCreator ladderCreator = new LadderCreator(GreaterThanOne.from(2), numberOfPerson); - LadderGame ladderGame = new LadderGame(ladderCreator); + LadderCreatorImpl ladderCreatorImpl = new LadderCreatorImpl(GreaterThanOne.from(2), numberOfPerson); + LadderGame ladderGame = new LadderGame(ladderCreatorImpl); //given Position position = Position.from(4); @@ -40,12 +40,12 @@ class LadderGameTest { //when GreaterThanOne numberOfPerson = GreaterThanOne.from(4); GreaterThanOne row = GreaterThanOne.from(3); - LadderCreator ladderCreator = new LadderCreator(row, numberOfPerson); - LadderGame ladderGame = new LadderGame(ladderCreator); + LadderCreatorImpl ladderCreatorImpl = new LadderCreatorImpl(row, numberOfPerson); + LadderGame ladderGame = new LadderGame(ladderCreatorImpl); - ladderCreator.drawLine(Position.from(0),Position.from(0)); - ladderCreator.drawLine(Position.from(1),Position.from(1)); - ladderCreator.drawLine(Position.from(2),Position.from(0)); + ladderCreatorImpl.drawLine(Position.from(0),Position.from(0)); + ladderCreatorImpl.drawLine(Position.from(1),Position.from(1)); + ladderCreatorImpl.drawLine(Position.from(2),Position.from(0)); //given Position position = Position.from(0); diff --git a/src/test/java/ladder/RandomLadderTest.java b/src/test/java/ladder/RandomLadderTest.java new file mode 100644 index 0000000..0eeb6c7 --- /dev/null +++ b/src/test/java/ladder/RandomLadderTest.java @@ -0,0 +1,19 @@ +package ladder; + +import ladder.creator.LadderAutoCreator; +import org.junit.jupiter.api.Test; + +public class RandomLadderTest { + @Test + void 사다리_자동_생성_결과_확인(){ + GreaterThanOne numberOfPerson = GreaterThanOne.from(4); + GreaterThanOne row = GreaterThanOne.from(3); + LadderAutoCreator ladderAutoCreator = new LadderAutoCreator(numberOfPerson,row); + LadderGame ladderGame = new LadderGame(ladderAutoCreator); + + ladderAutoCreator.drawLine(Position.from(0),Position.from(0)); + + ladderGame.run(Position.from(0)); + + } +} From b52387d876dcaa6b0f9b180ebbcdb7ac2347a18c Mon Sep 17 00:00:00 2001 From: dlwjddus1112 <161396355+dlwjddus1112@users.noreply.github.com> Date: Thu, 26 Sep 2024 11:18:57 +0900 Subject: [PATCH 3/5] =?UTF-8?q?=ED=85=8C=EC=8A=A4=ED=8A=B8=20=EC=BD=94?= =?UTF-8?q?=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/main/java/ladder/LadderGame.java | 4 ++ src/main/java/ladder/LadderGameFactory.java | 11 +++- .../ladder/creator/LadderAutoCreator.java | 5 +- .../ladder/creator/LadderCreatorImpl.java | 5 +- src/test/java/ladder/RandomLadderTest.java | 56 +++++++++++++++++-- 5 files changed, 73 insertions(+), 8 deletions(-) diff --git a/src/main/java/ladder/LadderGame.java b/src/main/java/ladder/LadderGame.java index 684daf0..71b947e 100644 --- a/src/main/java/ladder/LadderGame.java +++ b/src/main/java/ladder/LadderGame.java @@ -15,4 +15,8 @@ public int run(Position position) { ladderRunner.run(position); return position.getValue(); } + + public LadderCreator getLadderCreator() { + return ladderCreator; + } } diff --git a/src/main/java/ladder/LadderGameFactory.java b/src/main/java/ladder/LadderGameFactory.java index e544626..60de181 100644 --- a/src/main/java/ladder/LadderGameFactory.java +++ b/src/main/java/ladder/LadderGameFactory.java @@ -1,7 +1,16 @@ package ladder; -import static ladder.Position.validatePosition; +import ladder.creator.LadderAutoCreator; +import ladder.creator.LadderCreatorImpl; + public class LadderGameFactory { + public static LadderGame createLadderGame(GreaterThanOne row, GreaterThanOne numberOfPerson) { + return new LadderGame(new LadderCreatorImpl(row, numberOfPerson)); + } + + public static LadderGame createRandomLadderGame(GreaterThanOne row, GreaterThanOne numberOfPerson) { + return new LadderGame(new LadderAutoCreator(row, numberOfPerson)); + } } diff --git a/src/main/java/ladder/creator/LadderAutoCreator.java b/src/main/java/ladder/creator/LadderAutoCreator.java index 416fde2..9bfbd61 100644 --- a/src/main/java/ladder/creator/LadderAutoCreator.java +++ b/src/main/java/ladder/creator/LadderAutoCreator.java @@ -8,7 +8,10 @@ import java.util.Random; public class LadderAutoCreator implements LadderCreator { - private final Row[] rows; + private Row[] rows; + + public LadderAutoCreator() { + } public LadderAutoCreator(GreaterThanOne numberOfRow, GreaterThanOne numberOfPerson) { rows = new Row[numberOfRow.getNumber()]; diff --git a/src/main/java/ladder/creator/LadderCreatorImpl.java b/src/main/java/ladder/creator/LadderCreatorImpl.java index d8bcf2b..15f24ba 100644 --- a/src/main/java/ladder/creator/LadderCreatorImpl.java +++ b/src/main/java/ladder/creator/LadderCreatorImpl.java @@ -6,7 +6,10 @@ public class LadderCreatorImpl implements LadderCreator { - private final Row[] rows; + private Row[] rows; + + public LadderCreatorImpl() { + } public LadderCreatorImpl(GreaterThanOne numberOfRow, GreaterThanOne numberOfPerson) { rows = new Row[numberOfRow.getNumber()]; diff --git a/src/test/java/ladder/RandomLadderTest.java b/src/test/java/ladder/RandomLadderTest.java index 0eeb6c7..256bfad 100644 --- a/src/test/java/ladder/RandomLadderTest.java +++ b/src/test/java/ladder/RandomLadderTest.java @@ -1,19 +1,65 @@ package ladder; import ladder.creator.LadderAutoCreator; +import ladder.creator.LadderCreator; +import org.assertj.core.api.Assertions; +import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.Test; +import static org.assertj.core.api.Assertions.assertThatThrownBy; + public class RandomLadderTest { + GreaterThanOne numberOfPerson; + GreaterThanOne row; + + @BeforeEach + void setUp() { + numberOfPerson = GreaterThanOne.from(4); + row = GreaterThanOne.from(3); + } + + @Test void 사다리_자동_생성_결과_확인(){ - GreaterThanOne numberOfPerson = GreaterThanOne.from(4); - GreaterThanOne row = GreaterThanOne.from(3); - LadderAutoCreator ladderAutoCreator = new LadderAutoCreator(numberOfPerson,row); - LadderGame ladderGame = new LadderGame(ladderAutoCreator); + //given + + LadderGame ladderGame = LadderGameFactory.createRandomLadderGame(numberOfPerson,row); + LadderCreator ladderCreator = ladderGame.getLadderCreator(); + ladderCreator.drawLine(Position.from(0),Position.from(0)); - ladderAutoCreator.drawLine(Position.from(0),Position.from(0)); + //when ladderGame.run(Position.from(0)); } + @Test + void 사다리_자동_생성_예외_확인(){ + + //given + LadderGame ladderGame = LadderGameFactory.createRandomLadderGame(numberOfPerson,row); + LadderCreator ladderCreator = ladderGame.getLadderCreator(); + + //when + ladderCreator.drawLine(Position.from(0),Position.from(0)); + + + //then + assertThatThrownBy(() -> ladderCreator.drawLine(Position.from(0),Position.from(0))) + .isInstanceOf(IllegalArgumentException.class); + + } + + + @Test + void 사다리_일반_생성_결과_확인(){ + //given + + LadderGame ladderGame = LadderGameFactory.createLadderGame(numberOfPerson,row); + LadderCreator ladderCreator = ladderGame.getLadderCreator(); + ladderCreator.drawLine(Position.from(0),Position.from(0)); + + //when + ladderGame.run(Position.from(0)); + } + } From 8503dcb9e346838e485735ae9380a5c0dd1cc972 Mon Sep 17 00:00:00 2001 From: dlwjddus1112 <161396355+dlwjddus1112@users.noreply.github.com> Date: Thu, 26 Sep 2024 19:59:44 +0900 Subject: [PATCH 4/5] =?UTF-8?q?LadderPosition=20=ED=81=B4=EB=9E=98?= =?UTF-8?q?=EC=8A=A4=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/LadderPosition.java | 19 +++++++++++ src/main/java/ladder/LadderRunner.java | 12 ++++--- src/main/java/ladder/LadderSize.java | 19 +++++++++++ src/main/java/ladder/Row.java | 3 +- .../ladder/creator/LadderAutoCreator.java | 15 +++------ .../ladder/creator/LadderCreatorImpl.java | 4 --- src/test/java/ladder/RandomLadderTest.java | 32 +++++++++---------- 7 files changed, 67 insertions(+), 37 deletions(-) create mode 100644 src/main/java/ladder/LadderPosition.java create mode 100644 src/main/java/ladder/LadderSize.java diff --git a/src/main/java/ladder/LadderPosition.java b/src/main/java/ladder/LadderPosition.java new file mode 100644 index 0000000..42cc78c --- /dev/null +++ b/src/main/java/ladder/LadderPosition.java @@ -0,0 +1,19 @@ +package ladder; + +public class LadderPosition { + Position x; + Position y; + + public LadderPosition(Position x, Position y) { + this.x = x; + this.y = y; + } + + public Position getX() { + return x; + } + + public Position getY() { + return y; + } +} diff --git a/src/main/java/ladder/LadderRunner.java b/src/main/java/ladder/LadderRunner.java index e2a8483..e823659 100644 --- a/src/main/java/ladder/LadderRunner.java +++ b/src/main/java/ladder/LadderRunner.java @@ -10,23 +10,25 @@ public LadderRunner(Row[] rows) { public int run(Position position) { for (int i = 0; i < rows.length; i++) { + LadderPosition ladderPosition = new LadderPosition(Position.from(i), position); + System.out.println("Before"); - drawLadder(Position.from(i),position); + printLadder(ladderPosition); rows[i].nextPosition(position); System.out.println("After"); - drawLadder(Position.from(i),position); + printLadder(ladderPosition); } return position.getValue(); } - private void drawLadder(Position x, Position y){ + private void printLadder(LadderPosition ladderPosition){ StringBuilder sb = new StringBuilder(); for(int i = 0; i < rows.length; i++){ - if( i == x.getValue()){ - sb.append(rows[i].convertPositionRowtoString(y)).append("\n"); + if( i == ladderPosition.getX().getValue()){ + sb.append(rows[i].convertPositionRowToString(ladderPosition.getY())).append("\n"); continue; } sb.append(rows[i].convertRowtoString()).append("\n"); diff --git a/src/main/java/ladder/LadderSize.java b/src/main/java/ladder/LadderSize.java new file mode 100644 index 0000000..b94b4f1 --- /dev/null +++ b/src/main/java/ladder/LadderSize.java @@ -0,0 +1,19 @@ +package ladder; + +public class LadderSize { + GreaterThanOne numberOfRow; + GreaterThanOne numberOfPerson; + + public LadderSize(GreaterThanOne numberOfRow, GreaterThanOne numberOfPerson) { + this.numberOfRow = numberOfRow; + this.numberOfPerson = numberOfPerson; + } + + public GreaterThanOne getNumberOfRow() { + return numberOfRow; + } + + public GreaterThanOne getNumberOfPerson() { + return numberOfPerson; + } +} diff --git a/src/main/java/ladder/Row.java b/src/main/java/ladder/Row.java index e1b1caf..c825f1f 100644 --- a/src/main/java/ladder/Row.java +++ b/src/main/java/ladder/Row.java @@ -23,7 +23,7 @@ public StringBuilder convertRowtoString(){ return sb; } - public StringBuilder convertPositionRowtoString(Position y){ + public StringBuilder convertPositionRowToString(Position y){ StringBuilder sb = new StringBuilder(); for (int i = 0; i < nodes.length; i++) { @@ -33,7 +33,6 @@ public StringBuilder convertPositionRowtoString(Position y){ } sb.append(nodes[i].getDirection().getValue()).append(" "); } - return sb; } diff --git a/src/main/java/ladder/creator/LadderAutoCreator.java b/src/main/java/ladder/creator/LadderAutoCreator.java index 9bfbd61..159d465 100644 --- a/src/main/java/ladder/creator/LadderAutoCreator.java +++ b/src/main/java/ladder/creator/LadderAutoCreator.java @@ -1,18 +1,17 @@ package ladder.creator; import ladder.GreaterThanOne; +import ladder.LadderPosition; import ladder.Position; import ladder.Row; import java.util.HashSet; import java.util.Random; +import java.util.Set; public class LadderAutoCreator implements LadderCreator { private Row[] rows; - public LadderAutoCreator() { - } - public LadderAutoCreator(GreaterThanOne numberOfRow, GreaterThanOne numberOfPerson) { rows = new Row[numberOfRow.getNumber()]; for (int i = 0; i < numberOfRow.getNumber(); i++) { @@ -22,22 +21,18 @@ public LadderAutoCreator(GreaterThanOne numberOfRow, GreaterThanOne numberOfPers public Row[] getRows() {return rows;} public void drawLine(Position row, Position col){ - HashSet lines = new HashSet<>(); - - row = getRandomRow(); - col = getRandomCol(); - - rows[row.getValue()].drawLine(col); + Set lines = new HashSet<>(); int numberOfLines = (int)(rows.length * rows[0].getNodeLength() * 0.3) - 1; while(lines.size() < numberOfLines){ row = getRandomRow(); col = getRandomCol(); + LadderPosition ladderPosition = new LadderPosition(row, col); if(!canDrawLine(row,col)){ continue; } - lines.add(row); + lines.add(ladderPosition); } diff --git a/src/main/java/ladder/creator/LadderCreatorImpl.java b/src/main/java/ladder/creator/LadderCreatorImpl.java index 15f24ba..2e23b84 100644 --- a/src/main/java/ladder/creator/LadderCreatorImpl.java +++ b/src/main/java/ladder/creator/LadderCreatorImpl.java @@ -5,12 +5,8 @@ import ladder.Row; public class LadderCreatorImpl implements LadderCreator { - private Row[] rows; - public LadderCreatorImpl() { - } - public LadderCreatorImpl(GreaterThanOne numberOfRow, GreaterThanOne numberOfPerson) { rows = new Row[numberOfRow.getNumber()]; for (int i = 0; i < numberOfRow.getNumber(); i++) { diff --git a/src/test/java/ladder/RandomLadderTest.java b/src/test/java/ladder/RandomLadderTest.java index 256bfad..feccc9a 100644 --- a/src/test/java/ladder/RandomLadderTest.java +++ b/src/test/java/ladder/RandomLadderTest.java @@ -32,22 +32,22 @@ void setUp() { ladderGame.run(Position.from(0)); } - @Test - void 사다리_자동_생성_예외_확인(){ - - //given - LadderGame ladderGame = LadderGameFactory.createRandomLadderGame(numberOfPerson,row); - LadderCreator ladderCreator = ladderGame.getLadderCreator(); - - //when - ladderCreator.drawLine(Position.from(0),Position.from(0)); - - - //then - assertThatThrownBy(() -> ladderCreator.drawLine(Position.from(0),Position.from(0))) - .isInstanceOf(IllegalArgumentException.class); - - } +// @Test +// void 사다리_자동_생성_예외_확인(){ +// +// //given +// LadderGame ladderGame = LadderGameFactory.createRandomLadderGame(numberOfPerson,row); +// LadderCreator ladderCreator = ladderGame.getLadderCreator(); +// +// //when +// ladderCreator.drawLine(Position.from(0),Position.from(0)); +// +// +// //then +// assertThatThrownBy(() -> ladderCreator.drawLine(Position.from(0),Position.from(0))) +// .isInstanceOf(IllegalArgumentException.class); +// +// } @Test From b2357119d253eb2001a5ac808a09f303907d9f7e Mon Sep 17 00:00:00 2001 From: dlwjddus1112 <161396355+dlwjddus1112@users.noreply.github.com> Date: Thu, 26 Sep 2024 20:07:18 +0900 Subject: [PATCH 5/5] =?UTF-8?q?=EC=98=88=EC=99=B8=20=ED=85=8C=EC=8A=A4?= =?UTF-8?q?=ED=8A=B8=20=EC=BD=94=EB=93=9C=20=EC=88=98=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/test/java/ladder/RandomLadderTest.java | 19 +------------------ 1 file changed, 1 insertion(+), 18 deletions(-) diff --git a/src/test/java/ladder/RandomLadderTest.java b/src/test/java/ladder/RandomLadderTest.java index feccc9a..d824992 100644 --- a/src/test/java/ladder/RandomLadderTest.java +++ b/src/test/java/ladder/RandomLadderTest.java @@ -32,24 +32,7 @@ void setUp() { ladderGame.run(Position.from(0)); } -// @Test -// void 사다리_자동_생성_예외_확인(){ -// -// //given -// LadderGame ladderGame = LadderGameFactory.createRandomLadderGame(numberOfPerson,row); -// LadderCreator ladderCreator = ladderGame.getLadderCreator(); -// -// //when -// ladderCreator.drawLine(Position.from(0),Position.from(0)); -// -// -// //then -// assertThatThrownBy(() -> ladderCreator.drawLine(Position.from(0),Position.from(0))) -// .isInstanceOf(IllegalArgumentException.class); -// -// } - - + @Test void 사다리_일반_생성_결과_확인(){ //given