Skip to content

Commit 7bb2031

Browse files
authored
Merge pull request #2 from mjung1798/kmj
after advise
2 parents becb5f9 + 4231c63 commit 7bb2031

14 files changed

Lines changed: 127 additions & 116 deletions

src/main/java/domain/ladder/Bridge.java

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -17,4 +17,12 @@ public LinkedType getLinkPillarDirection() {
1717
return linkPillarDirection;
1818
}
1919

20+
public static Bridge createOneRightBridge(Integer location) {
21+
return (new Bridge(location, LinkedType.RIGHT));
22+
}
23+
24+
public static Bridge createOneLeftBridge(Integer location) {
25+
return (new Bridge(location, LinkedType.LEFT));
26+
}
27+
2028
}

src/main/java/domain/ladder/Ladder.java

Lines changed: 9 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
package domain.ladder;
22

3-
import data.InputData;
3+
import dto.GameStartOption;
44

55
import java.util.ArrayList;
66
import java.util.List;
@@ -11,18 +11,18 @@ public class Ladder {
1111
private Integer width;
1212
private Integer height;
1313

14-
public Ladder(InputData inputData) {
15-
this.width = inputData.getLadderWidth();
16-
this.height = inputData.getLadderHeight();
17-
this.pillars = createLadder(inputData);
14+
public Ladder(GameStartOption gameStartOption) {
15+
this.width = gameStartOption.getLadderWidth();
16+
this.height = gameStartOption.getLadderHeight();
17+
this.pillars = createLadder(gameStartOption);
1818
}
1919

20-
private List<Pillar> createLadder(InputData inputData) {
20+
private List<Pillar> createLadder(GameStartOption gameStartOption) {
2121
List<Pillar> pillars = new ArrayList<>();
22-
Pillar previous = new Pillar(inputData, null);
22+
Pillar previous = new Pillar(gameStartOption, null); //팩토리 메소드 패턴 or construction 1개
2323
pillars.add(previous);
2424
for (int i = 1; i < width; i++) {
25-
Pillar now = new Pillar(inputData, previous);
25+
Pillar now = new Pillar(gameStartOption, previous);
2626
pillars.add(now);
2727
previous = now;
2828
}
@@ -33,7 +33,7 @@ public Pillar getPillarByNum(Integer pillarNum) {
3333
return pillars.stream()
3434
.filter(p -> p.getPillarNum() == pillarNum)
3535
.findFirst()
36-
.orElse(null);
36+
.orElseThrow(IllegalArgumentException :: new); // optional orElse에 null 던지지 말기 throw Exception
3737
}
3838

3939
public List<Pillar> getPillars() {
Lines changed: 1 addition & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -1,16 +1,5 @@
11
package domain.ladder;
22

33
public enum LinkedType {
4-
RIGHT('├'),
5-
LEFT('┤');
6-
7-
private char drawLink;
8-
9-
LinkedType(char drawLink) {
10-
this.drawLink = drawLink;
11-
}
12-
13-
public char getDrawLink() {
14-
return drawLink;
15-
}
4+
RIGHT, LEFT
165
}

src/main/java/domain/ladder/Pillar.java

Lines changed: 15 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -1,21 +1,23 @@
11
package domain.ladder;
22

3-
import data.InputData;
3+
4+
import dto.GameStartOption;
45

56
import java.util.List;
67
import java.util.stream.Collectors;
78

8-
import static util.Util.createRandomIntegers;
9-
import static util.Util.createRandomIntegersWithRestriction;
9+
import static util.RandomIntegerMaker.createRandomIntegers;
10+
import static util.RandomIntegerMaker.createRandomIntegersWithRestriction;
11+
1012

1113
public class Pillar {
1214
public static final int MINIMUM_PILLAR_NUM = 0;
1315
private List<Bridge> bridges;
1416
private Integer pillarNum;
1517

16-
public Pillar(InputData inputData, Pillar previousPillar) { //자동으로 다리생성
18+
public Pillar(GameStartOption gameStartOption, Pillar previousPillar) { //자동으로 다리생성
1719
pillarNum = nowPillarNum(previousPillar);
18-
bridges = createBridges(inputData, previousPillar);
20+
bridges = createBridges(gameStartOption, previousPillar);
1921
}
2022

2123
public Integer getPillarNum() {
@@ -45,17 +47,17 @@ public List<Integer> getBridgesDirectionLocation(LinkedType linkedType) {
4547
.collect(Collectors.toList());
4648
}
4749

48-
private List<Bridge> createBridges(InputData inputData, Pillar previousPillar) {
50+
private List<Bridge> createBridges(GameStartOption gameStartOption, Pillar previousPillar) {
4951
if (isFirstPillar(previousPillar))
50-
return createRightBridges(createRandomIntegers(inputData.getLadderHeight()));
51-
if (isLastPillar(inputData, previousPillar))
52+
return createRightBridges(createRandomIntegers(gameStartOption.getLadderHeight()));
53+
if (isLastPillar(gameStartOption, previousPillar))
5254
return createLeftBridges(previousPillar);
53-
return createLeftRightBridges(previousPillar, inputData.getLadderHeight());
55+
return createLeftRightBridges(previousPillar, gameStartOption.getLadderHeight());
5456
}
5557

5658

57-
private boolean isLastPillar(InputData inputData, Pillar previousPillar) {
58-
if (inputData.getLadderWidth() - previousPillar.getPillarNum() == 2)
59+
private boolean isLastPillar(GameStartOption gameStartOption, Pillar previousPillar) {
60+
if (gameStartOption.getLadderWidth() - previousPillar.getPillarNum() == 2)
5961
return true;
6062
return false;
6163
}
@@ -76,23 +78,15 @@ private List<Bridge> createLeftRightBridges(Pillar previous, Integer height) {
7678

7779
private List<Bridge> createRightBridges(List<Integer> locationsOfBridge) {
7880
return locationsOfBridge.stream()
79-
.map(b -> createOneRightBridge(b))
81+
.map(b -> Bridge.createOneRightBridge(b))
8082
.collect(Collectors.toList());
8183
}
8284

8385

8486
private List<Bridge> createLeftBridges(Pillar previous) {
8587
List<Integer> locationsOfBridge = previous.getBridgesDirectionLocation(LinkedType.RIGHT);
8688
return locationsOfBridge.stream()
87-
.map(b -> createOneLeftBridge(b))
89+
.map(b -> Bridge.createOneLeftBridge(b))
8890
.collect(Collectors.toList());
8991
}
90-
91-
private Bridge createOneRightBridge(Integer location) {
92-
return (new Bridge(location, LinkedType.RIGHT));
93-
}
94-
95-
private Bridge createOneLeftBridge(Integer location) {
96-
return (new Bridge(location, LinkedType.LEFT));
97-
}
9892
}

src/main/java/domain/user/UserManage.java renamed to src/main/java/domain/user/ParticipantUsers.java

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,18 +1,18 @@
11
package domain.user;
22

3-
import data.InputData;
3+
import dto.GameStartOption;
44

55
import java.util.Collections;
66
import java.util.List;
77
import java.util.stream.Collectors;
88

9-
import static util.Util.separateUserName;
9+
import static util.RandomIntegerMaker.separateUserName;
1010

11-
public class UserManage {
11+
public class ParticipantUsers {
1212
private List<User> users;
1313

14-
public UserManage(InputData inputData) {
15-
this.users = createUser(inputData.getParticipants());
14+
public ParticipantUsers(GameStartOption gameStartOption) {
15+
this.users = createUser(gameStartOption.getParticipants());
1616
}
1717

1818
public List<User> getUsers() {

src/main/java/domain/user/User.java

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,9 @@
22

33
public class User {
44

5+
//user's PillarNum 갖고있게 하기,
6+
//결과 반환하는것 만들기
7+
58
private String name;
69

710
public User(String name) {
Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,14 +1,14 @@
1-
package data;
1+
package dto;
22

3-
public class InputData {
3+
public class GameStartOption {
44

55
public static final String DELIMETER = ",";
66

77
private int ladderWidth;
88
private int ladderHeight;
99
private String participants;
1010

11-
public InputData(String participants, int ladderHeight) {
11+
public GameStartOption(String participants, int ladderHeight) {
1212
this.ladderWidth = ladderWidth(participants);
1313
this.ladderHeight = ladderHeight;
1414
this.participants = participants;

src/main/java/util/Util.java renamed to src/main/java/util/RandomIntegerMaker.java

Lines changed: 7 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -6,10 +6,14 @@
66
import java.util.stream.Collectors;
77
import java.util.stream.IntStream;
88

9-
import static data.InputData.DELIMETER;
9+
import static dto.GameStartOption.DELIMETER;
10+
11+
public class RandomIntegerMaker {
12+
13+
private RandomIntegerMaker() {
14+
15+
}
1016

11-
public class Util {
12-
// public
1317
public static final int MIN_HEIGHT_INDEX = 0;
1418

1519
public static List<Integer> createRandomIntegers(Integer heights) {

src/main/java/view/OutputView.java

Lines changed: 22 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -3,30 +3,42 @@
33
import domain.ladder.Ladder;
44
import domain.ladder.LinkedType;
55
import domain.ladder.Pillar;
6+
import domain.user.ParticipantUsers;
67
import domain.user.User;
7-
import domain.user.UserManage;
88

99
import java.util.Arrays;
1010
import java.util.stream.IntStream;
1111

1212
public class OutputView {
1313

14+
// 가로로 찍을 수 있게 변환해서
15+
// dto로 bridge와 그 높이 들고있는 dto만들어서 가로로 변환해서
16+
// 찍기 편한 형태로 변환하기
17+
// flatMap으로 쭉 적으면서
18+
// bridge 1개랑 level 들고있으면 (Converter class 만들기)
19+
20+
21+
/*
22+
높이만큼 돌고 높이 1일 때
23+
*/
1424

1525
public static final int PILLAR_WIDTH_SURPLUS = 1;
1626
private static final char DOWN = '│';
1727
private static final char HORIZON = '─';
28+
private static final char RIGHT = '├';
29+
private static final char LEFT = '┤';
1830
private static final char BLANK = ' ';
1931

2032
private char[][] ladderDrawing;
2133
private int basicNum;
2234
private int ladderHeight;
23-
private UserManage userManage;
35+
private ParticipantUsers participantUsers;
2436

25-
public OutputView(UserManage userManage, Ladder ladder) {
26-
this.basicNum = calculateBasicsNum(userManage);
37+
public OutputView(ParticipantUsers participantUsers, Ladder ladder) {
38+
this.basicNum = calculateBasicsNum(participantUsers);
2739
this.ladderHeight = ladder.getHeight();
2840
this.ladderDrawing = drawAllLadder(ladder);
29-
this.userManage = userManage;
41+
this.participantUsers = participantUsers;
3042
}
3143

3244
public void printLadder() {
@@ -44,7 +56,7 @@ private String makeStringLadder() {
4456

4557
private String makeUserNames() {
4658
StringBuilder sb = new StringBuilder();
47-
for (User user : userManage.getUsers()) {
59+
for (User user : participantUsers.getUsers()) {
4860
sb.append(user.getName());
4961
sb.append(nameBlank(user));
5062
}
@@ -85,13 +97,13 @@ private void drawPillar(char[][] charLadder, Pillar pillar) {
8597
drawPillarWithRIGHTLink(charLadder[location], pillar.getPillarNum());
8698
}
8799
for (Integer location : pillar.getBridgesDirectionLocation(LinkedType.LEFT)) {
88-
charLadder[location][pillar.getPillarNum() * (basicNum + PILLAR_WIDTH_SURPLUS)] = LinkedType.LEFT.getDrawLink();
100+
charLadder[location][pillar.getPillarNum() * (basicNum + PILLAR_WIDTH_SURPLUS)] = LEFT;
89101
}
90102
}
91103

92104
private void drawPillarWithRIGHTLink(char[] ladderRow, Integer pillarNum) {
93105
int mainPillarIdx = pillarNum * (basicNum + PILLAR_WIDTH_SURPLUS);
94-
ladderRow[mainPillarIdx] = LinkedType.RIGHT.getDrawLink();
106+
ladderRow[mainPillarIdx] = RIGHT;
95107
for (int i = mainPillarIdx + PILLAR_WIDTH_SURPLUS; i <= mainPillarIdx + basicNum; i++) {
96108
ladderRow[i] = HORIZON;
97109
}
@@ -101,8 +113,8 @@ private int calculateDrawingWidth(Ladder ladder) {
101113
return ladder.getWidth() * basicNum;
102114
}
103115

104-
private int calculateBasicsNum(UserManage userManage) {
105-
return userManage.getUserCharMaxNum();
116+
private int calculateBasicsNum(ParticipantUsers participantUsers) {
117+
return participantUsers.getUserCharMaxNum();
106118
}
107119

108120
}

src/test/java/domain/ladder/LadderTest.java

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
package domain.ladder;
22

3-
import data.InputData;
3+
import dto.GameStartOption;
44
import org.junit.Test;
55

66
import static org.junit.Assert.assertEquals;
@@ -9,16 +9,16 @@ public class LadderTest {
99

1010
@Test
1111
public void Ladder_생성하기_Pillar_리스트_생성하기() {
12-
InputData inputData = new InputData("pobi,honux,crong,jk", 4);
13-
Ladder ladder = new Ladder(inputData);
12+
GameStartOption gameStartOption = new GameStartOption("pobi,honux,crong,jk", 4);
13+
Ladder ladder = new Ladder(gameStartOption);
1414

1515
assertEquals((int) ladder.getWidth(), ladder.getPillars().size());
1616
}
1717

1818
@Test
1919
public void Pillar_NUM_에따라_찾기() {
20-
InputData inputData = new InputData("pobi,honux,crong,jk", 4);
21-
Ladder ladder = new Ladder(inputData);
20+
GameStartOption gameStartOption = new GameStartOption("pobi,honux,crong,jk", 4);
21+
Ladder ladder = new Ladder(gameStartOption);
2222

2323
Pillar p = ladder.getPillarByNum(1);
2424
assertEquals((Integer) 1, p.getPillarNum());

0 commit comments

Comments
 (0)