Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
26 commits
Select commit Hold shift + click to select a range
5d2027f
file : 불필요 프로젝트 파일 제거
nonaninona Oct 4, 2024
6ebc7d8
feat : 도메인 모델 객체 인식 및 구현
nonaninona Oct 4, 2024
fa2e6e9
feat : 1번 메시지에 대한 협력 관계 구현
nonaninona Oct 4, 2024
693c688
feat : 3번 메시지에 대한 협력 관계 구현
nonaninona Oct 4, 2024
84f2efe
feat : 2번 메시지에 대한 협력 관계 구현
nonaninona Oct 4, 2024
3f9d2dc
fix : 삭제된 Drawer 인터페이스 import문 제거
nonaninona Oct 4, 2024
309bef6
feat : 메시지 1 구현 중 수정 -> 포함관계는 리턴을 하는 게 아니고 생성자로 리턴이 없도록 구성하는 게 맞는 듯
nonaninona Oct 4, 2024
ad8cbca
feat : 3번 메시지 구현
nonaninona Oct 4, 2024
5c88c6a
feat : 도메인 모델 수정(ladder - row - line 형태), 인터페이스 재 작성
nonaninona Oct 4, 2024
429c216
feat : 3번 메시지 재구현
nonaninona Oct 4, 2024
1fbef3a
feat : 2번 메시지 재구현
nonaninona Oct 4, 2024
e398bef
feat : 4번 메시지 인터페이스 추가 + 구현
nonaninona Oct 4, 2024
ba7105b
feat : 5번 메시지 인터페이스 추가 + 구현
nonaninona Oct 4, 2024
52ae1a9
file : 폴더 추가 및 위치 변경
nonaninona Oct 4, 2024
5287f20
file : 상태의 접근 제한자 private으로 변경
nonaninona Oct 4, 2024
898fe83
refact : ladder의 사다리 생성 책임을 ladder Creator로 분리
nonaninona Oct 4, 2024
2798425
refact : LadderCreator를 Ladder에서 분리
nonaninona Oct 8, 2024
9c7244b
refact : 랜덤 생성 시 특정 개수만큼 선을 긋도록 보장
nonaninona Oct 8, 2024
7d395f4
refact : makeLadder 메소드를 static으로 변경
nonaninona Oct 8, 2024
0f6044e
refact : LadderCreator 인터페이스 추가 및 Game이 DI 받도록 수정
nonaninona Oct 8, 2024
3e45cb3
feat : main 내용 변경
nonaninona Oct 8, 2024
b4034e0
style : random creator 로그 제거
nonaninona Oct 8, 2024
5465960
refact : 정적 팩토리 메서드 패턴 사용
nonaninona Oct 8, 2024
ac35524
fix : LadderCreator 접근 제한자 변경
nonaninona Oct 8, 2024
4c49d7c
refact : LadderGameFactory -> GameFactory로 이름 변경, User와 Game 연관관계 표현
nonaninona Oct 8, 2024
78b00de
style : interface는 기본 제한자가 public
nonaninona Oct 8, 2024
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
8 changes: 0 additions & 8 deletions 이현희/.idea/.gitignore

This file was deleted.

6 changes: 0 additions & 6 deletions 이현희/.idea/misc.xml

This file was deleted.

8 changes: 0 additions & 8 deletions 이현희/.idea/modules.xml

This file was deleted.

6 changes: 0 additions & 6 deletions 이현희/.idea/vcs.xml

This file was deleted.

11 changes: 0 additions & 11 deletions 이현희/.idea/이현희.iml

This file was deleted.

44 changes: 0 additions & 44 deletions 이현희/LadderPractice/.idea/workspace.xml

This file was deleted.

17 changes: 16 additions & 1 deletion 이현희/untitled/src/main/java/org/example/Main.java
Original file line number Diff line number Diff line change
@@ -1,7 +1,22 @@
package org.example;

import org.example.ver2.*;

public class Main {
public static void main(String[] args) {
System.out.println("Hello world!");
User user = new User(GameFactory.createBasicLadderGame());

user.makeLadder(3, 3);
user.drawHorizontalLine(1, 1);
user.print();
System.out.println("startColumn : 1");
System.out.println(user.runGame(1));
System.out.println();

user.setGame(GameFactory.createRandomLadderGame());
user.makeLadder(5, 5);
user.print();
System.out.println("startColumn : 1");
System.out.println(user.runGame(1));
}
}
Original file line number Diff line number Diff line change
@@ -1,6 +1,5 @@
package org.example.ladder;

import org.example.Drawer;
import org.example.row.Row;

public class LadderDrawer {
Expand Down
21 changes: 21 additions & 0 deletions 이현희/untitled/src/main/java/org/example/ver2/Game.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,21 @@
package org.example.ver2;

public class Game {
private Ladder ladder;
private LadderCreator ladderCreator;
public Game(LadderCreator ladderCreator) {
this.ladderCreator = ladderCreator;
}
public void makeLadder(int width, int height) {
ladder = ladderCreator.makeLadder(width, height);
}
public boolean drawHorizontalLine(int row, int column) {
return ladder.drawHorizontalLine(row, column);
}
public int runGame(int startColumn) {
return ladder.calcResult(startColumn);
}
public void printLadder(){
ladder.print();
}
}
10 changes: 10 additions & 0 deletions 이현희/untitled/src/main/java/org/example/ver2/GameFactory.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
package org.example.ver2;

public class GameFactory {
public static Game createRandomLadderGame() {
return new Game(new LadderRandomCreator());
}
public static Game createBasicLadderGame() {
return new Game(new LadderBasicCreator());
}
}
25 changes: 25 additions & 0 deletions 이현희/untitled/src/main/java/org/example/ver2/Ladder.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,25 @@
package org.example.ver2;

import java.util.Random;

public class Ladder {
private Row[] rows;
public Ladder(Row[] rows) {
this.rows = rows;
}
public boolean drawHorizontalLine(int row, int column) {
return rows[row-1].drawLine(column);
}
public int calcResult(int startColumn) {
int result = startColumn;
for (int i = 0; i < rows.length; i++) {
result = rows[i].calcResult(result);
}
return result;
}
public void print() {
for (int i = 0; i < rows.length; i++) {
rows[i].print();
}
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
package org.example.ver2;

public class LadderBasicCreator implements LadderCreator{
public Ladder makeLadder(int width, int height) {
Row[] rows = new Row[height];
for (int i = 0; i < height; i++) {
rows[i] = new Row(width);
}

return new Ladder(rows);
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
package org.example.ver2;

import java.util.Random;

public interface LadderCreator {

Ladder makeLadder(int width, int height);
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,27 @@
package org.example.ver2;

import java.util.Random;

public class LadderRandomCreator implements LadderCreator{
public Ladder makeLadder(int width, int height) {
Row[] rows = new Row[height];
for (int i = 0; i < height; i++) {
rows[i] = new Row(width);
}
Random random = new Random();
System.out.println(width*height*0.3);
for(int i=0;i<width*height*0.3-1;i++) {
int row = random.nextInt(1, height);
int column = random.nextInt(1, width);
if(!drawHorizontalLine(rows, row, column)) {
i--;
continue;
}
}

return new Ladder(rows);
}
private static boolean drawHorizontalLine(Row[] rows, int row, int column) {
return rows[row-1].drawLine(column);
}
}
25 changes: 25 additions & 0 deletions 이현희/untitled/src/main/java/org/example/ver2/Line.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,25 @@
package org.example.ver2;

public class Line {
private boolean isLineDrawed;
public Line() {
isLineDrawed = false;
}
public boolean drawLine() {
if(isLineDrawed) {
return false;
} else {
isLineDrawed = true;
return true;
}
}
public boolean checkIsLineDrawed() {
return isLineDrawed;
}
public void print() {
if(isLineDrawed)
System.out.print("-");
else
System.out.print(" ");
}
}
34 changes: 34 additions & 0 deletions 이현희/untitled/src/main/java/org/example/ver2/Row.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,34 @@
package org.example.ver2;

public class Row {
private Line[] lines;
public Row(int width) {
lines = new Line[width];
for (int i = 0; i < width; i++) {
lines[i] = new Line();
}
}
public boolean drawLine(int column) {
if(column - 2 >= 0 && lines[column-2].checkIsLineDrawed())
return false;
if(column <= lines.length -1 && lines[column].checkIsLineDrawed())
return false;
return lines[column-1].drawLine();
}
public int calcResult(int startColumn) {
if(startColumn - 2 >= 0 && lines[startColumn-2].checkIsLineDrawed())
return startColumn - 1;
if(lines[startColumn - 1].checkIsLineDrawed())
return startColumn + 1;
return startColumn;
}
public void print() {
for (int i = 0; i < 2 * lines.length - 1; i++) {
if(i%2==0)
System.out.print("|");
else
lines[(i-1)/2].print();
}
System.out.println();
}
}
23 changes: 23 additions & 0 deletions 이현희/untitled/src/main/java/org/example/ver2/User.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,23 @@
package org.example.ver2;

public class User {
private Game game;
public User(Game game) {
this.game = game;
}
public void setGame(Game game) {
this.game = game;
}
public void makeLadder(int width, int height) {
game.makeLadder(width, height);
}
public boolean drawHorizontalLine(int row, int column) {
return game.drawHorizontalLine(row, column);
}
public int runGame(int startColumn) {
return game.runGame(startColumn);
}
public void print() {
game.printLadder();
}
}