-
Notifications
You must be signed in to change notification settings - Fork 166
🚀 사이클1 - 미션 (보드 초기화 + 기물 이동) 밍구 미션 제출합니다. #240
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
base: koomingu
Are you sure you want to change the base?
Changes from all commits
dbc4008
5a2c009
9d73439
426ad7f
0932e8f
95e0e56
8601545
a135b2c
5fcf6be
de86e24
8112d42
228870e
ddde159
ddb05a6
cc341de
5522e54
d889e9c
00ddedd
02914c1
55557b7
9979b4b
dfa00b1
d32648d
76b68ab
6489109
70b6da2
a64c952
201fc2e
83fe29b
fb2f492
de02ec9
ec53683
0e1ec00
58baa25
c67f4f3
004fcf5
562a9ce
3952208
71ec004
7675b63
b15a267
d08cb7f
13ed308
6f30824
ac7c8b4
aca2d42
633b898
f3cca02
e910f04
782a1da
173a6ea
0d01534
9778e6e
dd5d85c
8ce5db4
33c47f1
9f54724
0b1fc34
64ecbd9
5574554
bec8227
c03350e
1e86296
ed1ebfd
6511015
9299635
File filter
Filter by extension
Conversations
Jump to
Diff view
Diff view
There are no files selected for viewing
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -1,3 +1,157 @@ | ||
| # java-janggi | ||
|
|
||
| 장기 미션 저장소 | ||
| # 기능 명세서 | ||
|
|
||
| --- | ||
|
|
||
| ## 기능 | ||
|
|
||
| ### 게임 초기화 | ||
|
|
||
| - [x] 한나라가 위, 초나라를 아래로 위치시켜 보드를 초기화한다. | ||
|
|
||
| ### 게임 진행 | ||
|
|
||
| - [x] 초나라 선, 한나라 후로 게임이 반복적으로 진행된다. | ||
| - [x] 입력을 받은 좌표와 기물 규칙에 따라 기물을 이동시킨다. | ||
| - [ ] 궁을 잡는 수를 두면 장군이다. | ||
| - [ ] 장군을 피하는 수를 두면 멍군이다. | ||
| - [ ] 빅장일 때 게임을 종료하기 싫으면 빅장을 깨뜨리는 수를 둘 수 있다. | ||
|
|
||
| ### 기물 이동 규칙 | ||
|
|
||
| | **기물** | **기본 이동 방식** | **궁성(3x3) 내 특수 규칙** | **특징 (구현 시 고려사항)** | | ||
| | --- |----------------------------------| --- |----------------------------------------------------------| | ||
| | **궁(將/楚)** | 상하좌우 1칸 | 대각선 선을 따라 1칸 이동 가능 | 궁성 밖으로 절대 나갈 수 없음 | | ||
| | **사(士)** | 상하좌우 1칸 | 대각선 선을 따라 1칸 이동 가능 | 궁성 밖으로 절대 나갈 수 없음 | | ||
| | **차(車)** | 상하좌우 직선으로 거리 제한 없이 이동 | 대각선 선을 따라 이동 가능 | 경로에 다른 기물이 있으면 못 지나감 | | ||
| | **포(包)** | 상하좌우로 다른 기물 하나를 뛰어넘어 거리 제한 없이 이동 | 대각선 선을 따라 기물 하나를 넘어서 이동 | 포끼리는 서로 넘을 수 없음<br>포끼리는 잡을 수 없음<br>넘을 기물이 반드시 1개 있어야 함 | | ||
| | **마(馬)** | 상하좌우 직선 1칸 + 이동한 방향으로 대각선 1칸 | 해당 없음 | 멱(길목)이 막혀 있으면 못 감 | | ||
| | **상(象)** | 상하좌우 직선 1칸 + 이동한 방향으로 대각선 2칸 | 해당 없음 | 멱(길목)이 막혀 있으면 못 감 | | ||
| | **졸/병(卒/兵)** | 앞 또는 옆으로 1칸 | 적군 궁성 내에서 대각선 앞으로 1칸 이동 가능 | 진영에 따라 '앞'의 방향이 다름<br>뒤로는 못감 | | ||
|
|
||
| ### 게임 종료 | ||
|
|
||
| - [ ] 외통수이면 승리한다. | ||
| - [ ] 빅장이면 점수를 계산해 승패를 결정한다. | ||
| - [ ] 한나라에 1.5점을 더해서 점수를 계산한다. | ||
|
|
||
| ## 입력 | ||
|
|
||
| - [x] 초나라가 기물을 선택하고 행마를 입력한다. | ||
|
|
||
| ```java | ||
| 초나라 턴입니다. 이동할 기물의 좌표와 도착할 좌표를 입력하세요. (예 : (1, 2), (3, 3)) | ||
| ``` | ||
|
|
||
| - [x] 한나라가 기물을 선택하고 행마를 입력한다. | ||
|
|
||
| ```java | ||
| 한나라 턴입니다. 이동할 기물의 좌표와 도착할 좌표를 입력하세요. (예 : (1, 2), (3, 3)) | ||
| ``` | ||
|
|
||
|
|
||
| ## 출력 | ||
|
|
||
| - [x] 게임 시작 멘트를 출력한다. | ||
|
|
||
| ```java | ||
| 게임을 시작하겠습니다. | ||
| ``` | ||
|
|
||
| - [x] 보드판을 출력한다. | ||
|
|
||
| ```java | ||
| 0 1 2 3 4 5 6 7 8 | ||
|
|
||
| 0 [車]-------[馬]-------[象]-------[士]-------[ ]-------[士]-------[象]-------[馬]-------[車] | ||
| ㅣ ㅣ ㅣ ㅣ \ ㅣ / ㅣ ㅣ ㅣ ㅣ | ||
| ㅣ ㅣ ㅣ ㅣ \ ㅣ / ㅣ ㅣ ㅣ ㅣ | ||
| ㅣ ㅣ ㅣ ㅣ \ ㅣ / ㅣ ㅣ ㅣ ㅣ | ||
| 1 [ ]-------[ ]-------[ ]-------[ ]-------[漢]-------[ ]-------[ ]-------[ ]-------[ ] | ||
| ㅣ ㅣ ㅣ ㅣ / ㅣ \ ㅣ ㅣ ㅣ ㅣ | ||
| ㅣ ㅣ ㅣ ㅣ / ㅣ \ ㅣ ㅣ ㅣ ㅣ | ||
| ㅣ ㅣ ㅣ ㅣ / ㅣ \ ㅣ ㅣ ㅣ ㅣ | ||
| 2 [ ]-------[包]-------[ ]-------[ ]-------[ ]-------[ ]-------[ ]-------[包]-------[ ] | ||
| ㅣ ㅣ ㅣ ㅣ ㅣ ㅣ ㅣ ㅣ ㅣ | ||
| ㅣ ㅣ ㅣ ㅣ ㅣ ㅣ ㅣ ㅣ ㅣ | ||
| ㅣ ㅣ ㅣ ㅣ ㅣ ㅣ ㅣ ㅣ ㅣ | ||
| 3 [兵]-------[ ]-------[兵]-------[ ]-------[兵]-------[ ]-------[兵]-------[ ]-------[兵] | ||
| ㅣ ㅣ ㅣ ㅣ ㅣ ㅣ ㅣ ㅣ ㅣ | ||
| ㅣ ㅣ ㅣ ㅣ ㅣ ㅣ ㅣ ㅣ ㅣ | ||
| ㅣ ㅣ ㅣ ㅣ ㅣ ㅣ ㅣ ㅣ ㅣ | ||
| 4 [ ]-------[ ]-------[ ]-------[ ]-------[ ]-------[ ]-------[ ]-------[ ]-------[ ] | ||
| ㅣ ㅣ ㅣ ㅣ ㅣ ㅣ ㅣ ㅣ ㅣ | ||
| ㅣ ㅣ ㅣ ㅣ ㅣ ㅣ ㅣ ㅣ ㅣ | ||
| ㅣ ㅣ ㅣ ㅣ ㅣ ㅣ ㅣ ㅣ ㅣ | ||
| 5 [ ]-------[ ]-------[ ]-------[ ]-------[ ]-------[ ]-------[ ]-------[ ]-------[ ] | ||
| ㅣ ㅣ ㅣ ㅣ ㅣ ㅣ ㅣ ㅣ ㅣ | ||
| ㅣ ㅣ ㅣ ㅣ ㅣ ㅣ ㅣ ㅣ ㅣ | ||
| ㅣ ㅣ ㅣ ㅣ ㅣ ㅣ ㅣ ㅣ ㅣ | ||
| 6 [卒]-------[ ]-------[卒]-------[ ]-------[卒]-------[ ]-------[卒]-------[ ]-------[卒] | ||
| ㅣ ㅣ ㅣ ㅣ ㅣ ㅣ ㅣ ㅣ ㅣ | ||
| ㅣ ㅣ ㅣ ㅣ ㅣ ㅣ ㅣ ㅣ ㅣ | ||
| ㅣ ㅣ ㅣ ㅣ ㅣ ㅣ ㅣ ㅣ ㅣ | ||
| 7 [ ]-------[包]-------[ ]-------[ ]-------[ ]-------[ ]-------[ ]-------[包]-------[ ] | ||
| ㅣ ㅣ ㅣ ㅣ \ ㅣ / ㅣ ㅣ ㅣ ㅣ | ||
| ㅣ ㅣ ㅣ ㅣ \ ㅣ / ㅣ ㅣ ㅣ ㅣ | ||
| ㅣ ㅣ ㅣ ㅣ \ ㅣ / ㅣ ㅣ ㅣ ㅣ | ||
| 8 [ ]-------[ ]-------[ ]-------[ ]-------[楚]-------[ ]-------[ ]-------[ ]-------[ ] | ||
| ㅣ ㅣ ㅣ ㅣ / ㅣ \ ㅣ ㅣ ㅣ ㅣ | ||
| ㅣ ㅣ ㅣ ㅣ / ㅣ \ ㅣ ㅣ ㅣ ㅣ | ||
| ㅣ ㅣ ㅣ ㅣ / ㅣ \ ㅣ ㅣ ㅣ ㅣ | ||
| 9 [車]-------[馬]-------[象]-------[士]-------[ ]-------[士]-------[象]-------[馬]-------[車] | ||
| ``` | ||
|
|
||
| - [ ] 장군이면 장군을 출력한다. | ||
|
|
||
| ```java | ||
| 장군입니다! 기물을 움직여 궁을 살리세요. | ||
| ``` | ||
|
|
||
| - [ ] 외통이면 게임 종료를 출력한다. | ||
|
|
||
| ```java | ||
| 외통입니다. 초나라/한나라의 승리입니다. | ||
| ``` | ||
|
|
||
| - [ ] 빅장이면 상대방이 선택할 수 있게 조건을 출력한다. | ||
|
|
||
| ```java | ||
| 빅장입니다. 게임을 종료하기 싫으면 왕 앞에 기물을 놔두세요! | ||
| ``` | ||
|
|
||
| - [ ] 빅장으로 게임이 종료되면 점수를 출력한다. | ||
|
|
||
| ```java | ||
| 빅장입니다. | ||
|
|
||
| 초나라 점수 : | ||
| 한나라 점수 : | ||
|
|
||
| 결과 : 초나라/한나라의 승리입니다. | ||
| ``` | ||
|
|
||
|
|
||
| ## 유효성 | ||
|
|
||
| ### Position | ||
|
|
||
| - [x] 장기판 범위를 벗어난 경우 | ||
| ```java | ||
| [ERROR] 장기판 범위를 벗어난 좌표입니다. | ||
| ``` | ||
|
|
||
| ### Piece | ||
|
|
||
| - [x] 기물이 이동할 수 없을 경우 | ||
| ``` | ||
| [ERROR] 유효하지 않는 행마입니다. | ||
| ``` | ||
|
|
||
| ### Board | ||
|
|
||
| - [x] 출발지에 이동할 기물이 없는 경우 | ||
| ``` | ||
| [ERROR] 출발지에 이동할 기물이 없습니다. | ||
| ``` |
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,16 @@ | ||
| package janggi; | ||
|
|
||
| import janggi.controller.Controller; | ||
| import janggi.view.InputView; | ||
| import janggi.view.OutputView; | ||
|
|
||
| public class Application { | ||
| public static void main(String[] args) { | ||
|
|
||
| InputView inputView = new InputView(); | ||
| OutputView outputView = new OutputView(); | ||
| Controller controller = new Controller(inputView, outputView); | ||
|
|
||
| controller.run(); | ||
| } | ||
| } |
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,53 @@ | ||
| package janggi.controller; | ||
|
|
||
| import janggi.domain.Board; | ||
| import janggi.domain.BoardFactory; | ||
| import janggi.domain.Column; | ||
| import janggi.domain.Position; | ||
| import janggi.domain.Row; | ||
| import janggi.domain.Team; | ||
| import janggi.dto.BoardDto; | ||
| import janggi.exception.BusinessException; | ||
| import janggi.view.InputView; | ||
| import janggi.view.OutputView; | ||
|
|
||
| import java.util.List; | ||
|
|
||
| public class Controller { | ||
| private final InputView inputView; | ||
| private final OutputView outputView; | ||
|
|
||
| public Controller(InputView inputView, OutputView outputView) { | ||
| this.inputView = inputView; | ||
| this.outputView = outputView; | ||
| } | ||
|
|
||
| public void run() { | ||
| outputView.printStartMessage(); | ||
| Board board = new Board(BoardFactory.generate()); | ||
| outputView.printBoard(BoardDto.from(board)); | ||
|
|
||
| outputView.printStartMessage(); | ||
|
|
||
| Team currentTeam = Team.CHO; | ||
|
|
||
| for (int i = 0; i < 10; i++) { | ||
| while (true) { | ||
| try { | ||
| List<Integer> positions = inputView.playTurn(currentTeam.getTeam()); | ||
| Position from = Position.of(Row.of(positions.get(0)), Column.of(positions.get(1))); | ||
| Position to = Position.of(Row.of(positions.get(2)), Column.of(positions.get(3))); | ||
|
Comment on lines
+38
to
+39
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. controller에서 input의 형식을 알고있습니다. input에서 몇번째가 누구의 입력인지를 파악해서 추출하는게 controller의 책임일까요? |
||
|
|
||
| board.move(from, to); | ||
|
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. 팀에 대한 정보는 보드를 옮길때 넘겨주지 않습니다. 선택한 기물이 어떤 팀인지에 판단은 어떤 객체에서 하고있나요? |
||
| outputView.printBoard(BoardDto.from(board)); | ||
|
|
||
| currentTeam = currentTeam.switchTeam(); | ||
|
Comment on lines
+37
to
+44
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. 상대팀 기물을 옮겨도 따로 검사를 하지 않는거 같네요. |
||
| break; | ||
|
|
||
| } catch (BusinessException e) { | ||
| outputView.printErrorMessage(e.getMessage()); | ||
|
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. 사용자가 실수로 잘못된 입력을 한 경우 어플리케이션이 그냥 끝나겠군요. 사용자 입장에서 한참 게임하고있는데 게임이 끝나버리는 경우가 생길거 같습니다. |
||
| } | ||
| } | ||
|
Comment on lines
+34
to
+50
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. 3 depth네요. 1depth를 유지하도록 수정해보시죠! |
||
| } | ||
| } | ||
| } | ||
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,40 @@ | ||
| package janggi.domain; | ||
|
|
||
| import janggi.exception.EmptyPositionException; | ||
|
|
||
| import java.util.HashMap; | ||
| import java.util.Map; | ||
|
|
||
| public class Board implements BoardState{ | ||
| private final Map<Position, Piece> board; | ||
|
|
||
| public Board(Map<Position, Piece> initialPieces) { | ||
| this.board = new HashMap<>(initialPieces); | ||
| } | ||
|
|
||
| @Override | ||
| public boolean hasPieceAt(Position position) { | ||
| return board.containsKey(position); | ||
| } | ||
|
|
||
| @Override | ||
| public Piece getPieceAt(Position position) { | ||
| return board.get(position); | ||
| } | ||
|
|
||
| public void move(Position from, Position to) { | ||
| Piece movingPiece = board.get(from); | ||
|
|
||
| if (movingPiece == null) { | ||
| throw new EmptyPositionException(); | ||
| } | ||
|
|
||
| movingPiece.verifyMove(from, to, this); | ||
| board.remove(from); | ||
| board.put(to, movingPiece); | ||
| } | ||
|
|
||
| public Map<Position, Piece> getBoard() { | ||
| return board; | ||
| } | ||
| } |
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,105 @@ | ||
| package janggi.domain; | ||
|
|
||
| import janggi.domain.movestorage.ChaMoveStorage; | ||
| import janggi.domain.movestorage.GungAndSaMoveStorage; | ||
| import janggi.domain.movestorage.JolMoveStorage; | ||
| import janggi.domain.movestorage.MaMoveStorage; | ||
| import janggi.domain.movestorage.SangMoveStorage; | ||
|
|
||
| import java.util.HashMap; | ||
| import java.util.Map; | ||
|
|
||
| public class BoardFactory { | ||
| public static Map<Position, Piece> generate() { | ||
| Map<Position, Piece> board = new HashMap<>(); | ||
|
|
||
| SetHanPieces(board); | ||
| SetChoPieces(board); | ||
|
|
||
| return board; | ||
| } | ||
|
|
||
| private static void SetHanPieces(Map<Position, Piece> board) { | ||
| // 차 | ||
| board.put(Position.of(Row.of(0), Column.of(0)), | ||
| new Piece(new ChaMoveStorage(), Team.HAN, 13, "車")); | ||
|
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. 위치, 점수, 이름 데이터가 factory에서 관리되고있으니 헷갈릴만한 여지가 많은거 같습니다. 어떻게 하면 성격이 같은 데이터끼리 모아서 관리할 수 있을지 고민해보세요! |
||
| board.put(Position.of(Row.of(8), Column.of(0)), | ||
| new Piece(new ChaMoveStorage(), Team.HAN, 13, "車")); | ||
| // 상 | ||
| board.put(Position.of(Row.of(1), Column.of(0)), | ||
| new Piece(new SangMoveStorage(), Team.HAN, 3, "象")); | ||
| board.put(Position.of(Row.of(6), Column.of(0)), | ||
| new Piece(new SangMoveStorage(), Team.HAN, 3, "象")); | ||
| // 마 | ||
| board.put(Position.of(Row.of(2), Column.of(0)), | ||
| new Piece(new MaMoveStorage(), Team.HAN, 5, "馬")); | ||
| board.put(Position.of(Row.of(7), Column.of(0)), | ||
| new Piece(new MaMoveStorage(), Team.HAN, 5, "馬")); | ||
| // 사 | ||
| board.put(Position.of(Row.of(3), Column.of(0)), | ||
| new Piece(new GungAndSaMoveStorage(), Team.HAN, 3, "士")); | ||
| board.put(Position.of(Row.of(5), Column.of(0)), | ||
| new Piece(new GungAndSaMoveStorage(), Team.HAN, 3, "士")); | ||
| // 궁 | ||
| board.put(Position.of(Row.of(4), Column.of(1)), | ||
| new Piece(new GungAndSaMoveStorage(), Team.HAN, 0, "漢")); | ||
| // 포 | ||
| board.put(Position.of(Row.of(1), Column.of(2)), | ||
| new Piece(new SangMoveStorage(), Team.HAN, 7, "包")); | ||
| board.put(Position.of(Row.of(7), Column.of(2)), | ||
| new Piece(new SangMoveStorage(), Team.HAN, 7, "包")); | ||
|
Comment on lines
+47
to
+50
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. 포가 전부 상의 움직임 규칙으로 초기화 되고있습니다.
Author
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. 포의 움직임으로 초기화되도록 수정하였습니다. |
||
| // 졸 | ||
| board.put(Position.of(Row.of(0), Column.of(3)), | ||
| new Piece(new JolMoveStorage(), Team.HAN, 2, "兵")); | ||
| board.put(Position.of(Row.of(2), Column.of(3)), | ||
| new Piece(new JolMoveStorage(), Team.HAN, 2, "兵")); | ||
| board.put(Position.of(Row.of(4), Column.of(3)), | ||
| new Piece(new JolMoveStorage(), Team.HAN, 2, "兵")); | ||
| board.put(Position.of(Row.of(6), Column.of(3)), | ||
| new Piece(new JolMoveStorage(), Team.HAN, 2, "兵")); | ||
| board.put(Position.of(Row.of(8), Column.of(3)), | ||
| new Piece(new JolMoveStorage(), Team.HAN, 2, "兵")); | ||
| } | ||
|
|
||
| private static void SetChoPieces(Map<Position, Piece> board) { | ||
| // 차 | ||
| board.put(Position.of(Row.of(0), Column.of(9)), | ||
| new Piece(new ChaMoveStorage(), Team.CHO, 13, "車")); | ||
| board.put(Position.of(Row.of(8), Column.of(9)), | ||
| new Piece(new ChaMoveStorage(), Team.CHO, 13, "車")); | ||
| // 상 | ||
| board.put(Position.of(Row.of(1), Column.of(9)), | ||
| new Piece(new SangMoveStorage(), Team.CHO, 3, "象")); | ||
| board.put(Position.of(Row.of(6), Column.of(9)), | ||
| new Piece(new SangMoveStorage(), Team.CHO, 3, "象")); | ||
| // 마 | ||
| board.put(Position.of(Row.of(2), Column.of(9)), | ||
| new Piece(new MaMoveStorage(), Team.CHO, 5, "馬")); | ||
| board.put(Position.of(Row.of(7), Column.of(9)), | ||
| new Piece(new MaMoveStorage(), Team.CHO, 5, "馬")); | ||
| // 사 | ||
| board.put(Position.of(Row.of(3), Column.of(9)), | ||
| new Piece(new GungAndSaMoveStorage(), Team.CHO, 3, "士")); | ||
| board.put(Position.of(Row.of(5), Column.of(9)), | ||
| new Piece(new GungAndSaMoveStorage(), Team.CHO, 3, "士")); | ||
| // 궁 | ||
| board.put(Position.of(Row.of(4), Column.of(8)), | ||
| new Piece(new GungAndSaMoveStorage(), Team.CHO, 0, "楚")); | ||
| // 포 | ||
| board.put(Position.of(Row.of(1), Column.of(7)), | ||
| new Piece(new SangMoveStorage(), Team.CHO, 7, "包")); | ||
| board.put(Position.of(Row.of(7), Column.of(7)), | ||
| new Piece(new SangMoveStorage(), Team.CHO, 7, "包")); | ||
| // 졸 | ||
| board.put(Position.of(Row.of(0), Column.of(6)), | ||
| new Piece(new JolMoveStorage(), Team.CHO, 2, "卒")); | ||
| board.put(Position.of(Row.of(2), Column.of(6)), | ||
| new Piece(new JolMoveStorage(), Team.CHO, 2, "卒")); | ||
| board.put(Position.of(Row.of(4), Column.of(6)), | ||
| new Piece(new JolMoveStorage(), Team.CHO, 2, "卒")); | ||
| board.put(Position.of(Row.of(6), Column.of(6)), | ||
| new Piece(new JolMoveStorage(), Team.CHO, 2, "卒")); | ||
| board.put(Position.of(Row.of(8), Column.of(6)), | ||
| new Piece(new JolMoveStorage(), Team.CHO, 2, "卒")); | ||
| } | ||
| } | ||
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,6 @@ | ||
| package janggi.domain; | ||
|
|
||
| public interface BoardState { | ||
| boolean hasPieceAt(Position position); | ||
| Piece getPieceAt(Position position); | ||
| } |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
턴이 10번 지나가면 반드시 끝나네요. phase1이라도 어플리케이션은 지속적으로 동작해야합니다.