Skip to content

Commit 68a37bb

Browse files
threepebblesljhee92
andauthoredMar 24, 2025
[1단계 - 장기] 헤일러(민서현) 미션 제출합니다. (#10)
* docs: 프로그램 실행 흐름 기능 작성 * feat(Point): 좌표 클래스 추가 * feat(Direction): 방향을 의미하는 상수 추가 * feat(Node, Edge): 노드, 엣지 클래스 추가 * feat(BoardInitializer): 노드와 엣지 정보 초기화 * feat(SangMaOrderCommand): 상마 순서를 의미하는 enum 추가 * feat: 팀을 구분하기 위한 enum 추가 * feat(Piece): 기물 역할 클래스 추가 * feat(BoardInitializer): 초나라 기물 배치 초기화 기능 추가 * feat(BoardInitializer): 상마 순서에 따른 기물 배치 초기화 기능 추가 * refactor: BoardInitializer 리팩터링 * refactor: 패키지 이동 * feat: 특정 좌표에 기물 존재 여부 확인 기능 추가 * feat(Piece): 각 기물의 종류를 구분하는 기능 추가 * feat(OutputView): 장기판 출력 기능 추가 * feat(OutputView): 팀 색깔 구분 기능 추가 * refactor: 기물이 가진 팀을 묻도록 리팩터링 * feat(Wang): 왕의 이동 가능 여부 확인 기능 추가 * feat(Sa): 사의 이동 가능 여부 확인 기능 추가 * fix: 노드 엣지 초기화 기능 수정 * feat(Byeong): 병의 이동 가능 여부 확인 기능 추가 * feat(Cha): 차의 이동 가능 여부 확인 기능 추가 * feat(Ma): 마의 이동 가능 여부 확인 기능 추가 * feat(Sang): 상의 이동 가능 여부 확인 기능 추가 * refactor: 변수명 개선, 인덴트 깊이 개선 * refactor: 가독성 개선 * fix: 테스트 코드 컴파일 에러 수정 * feat(Po): 포의 이동 가능 여부 확인 기능 추가 * feat: 상마 순서 입력 기능 추가 * feat: 이동할 기물의 위치 입력 기능 추가 * refactor(Board): 중복 메서드 제거, 네이밍 개선 * feat(OutputView): 승패 결과 출력 기능 추가 * feat(JanggiManager): 말을 움직이는 기능 추가 * feat: 순서대로 장기 게임을 진행하는 기능 추가 * feat(ErrorHandler): 메서드 실행 중 예외 발생 시 재실행하는 기능 추가 * refactor(Board): 특정 위치의 놓인 기물의 종류를 확인하는 기능 추가 * test: Board 테스트 추가 * fix: 특정 위치의 기물의 종류를 파악하는 기능 수정 * fix: 턴에 맞는 기물을 움직일 수 있게 수정 * refactor: 용어 수정(노드 -> 위치) * test: Node 테스트 추가 * refactor: 네이밍 개선, 메서드 분리 * refactor: 패키지 이동 * refactor: 네이밍 개선, 네이밍 컨벤션에 맞게 수정 * refactor(Turn): 내부 static 클래스로 전환 * refactor: 네이밍 개선 * refactor(Node): edges() 제거 * refactor: 메서드 내 변수 상수화 * refactor: 변수명 변경 * refactor: 상수 final 처리, ERROR prefix 추가 * remove: .gitkeep 삭제 * refactor(FixedMovePattern): 마와 상 움직임 패턴을 enum 클래스로 분리 * refactor(Board): Map<Node, Piece> 타입을 Map<Point, Piece> 타입으로 변경 및 적용 * refactor: 상수 위치 이동 * refactor: 상수명 개선 * refactor(Board): Board가 스스로 게임의 종료 여부를 알도록 수정 * refactor: 클래스명 개선 * fix(Board): 게임 종료 조건 수정 * refactor: 네이밍 개선 * refactor(Piece): canMove에서 파라미터 타입을 Node가 아닌 Point를 받아서 기능을 수행하도록 수정 * refactor: 클래스명 개선 * test: board가 아니라 각 piece 객체가 canMove()를 수행하도록 수정 * refactor(Path): Path 클래스 enum 상수화 * refactor(Piece): 파라미터로 팀을 확인하는 기능 hasTeam() 제거, 팀 enum을 반환하는 기능 team() 추가 * test(NodeTest): 노드 테스트 추가 * refactor: exist -> exists 용어 통일 * refactor: 패키지 이동 * refactor(Direction): 상하좌우 방향 리스트(VERTICALS) 상수화 * fix: 상수에 final 키워드 추가 * refactor: 상마 순서 예외 메시지 개선 * refactor: 게임 종료 시 승리한 팀을 찾는 기능 옮김(JanggiManager -> Board) * feat(PointNodeMapperFactory): PointNodeMapper의 생성 책임을 클래스로 분리 * refactor: 메서드 파라미터에 final 키워드 추가 * refactor: 입출력 메시지 개선 * refactor(Node): 불필요한 필드(Point) 제거 * test(NodeTest): 출발 노드로부터 간선이 있는 방향은 true, 없는 방향은 false를 반환하는 기능 테스트 추가 * refactor: 동일한 로직 메서드 분리(DRY 원칙) * refactor: 파라미터에 final 키워드 추가 * refactor: 메서드명 개선 * refactor: 변수 네이밍 일관되게 수정(board -> pieceByPoint) * refactor: 가독성을 위해 메서드 분리 * refactor: 가독성 개선을 위해 에러 메시지에 줄바꿈 추가 * fix: 기물을 움직일 수 없는 경우에 턴이 바뀌지 않도록 수정 * refactor: 보드판 출력 시기 수정 --------- Co-authored-by: ljhee92 <weilainib7@gmail.com>
1 parent ac169a5 commit 68a37bb

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

43 files changed

+2865
-1
lines changed
 

‎README.md

+90-1
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,92 @@
11
# java-janggi
22

3-
장기 미션 저장소
3+
## 프로그램 실행 흐름
4+
5+
### 게임 시작
6+
7+
- 게임 시작 안내 메시지를 출력한다.
8+
9+
```
10+
장기 게임에 오신 것을 환영합니다.
11+
```
12+
13+
### 상마 순서 입력
14+
15+
- 상마 순서 결정을 위한 입력을 받는다.
16+
17+
```
18+
한나라 상마 순서를 입력해주세요. (예: 3)
19+
1. 상마상마
20+
2. 상마마상
21+
3. 마상상마
22+
4. 마상마상
23+
1
24+
25+
초나라 상마 순서를 입력해주세요. (예: 3)
26+
1. 상마상마
27+
2. 상마마상
28+
3. 마상상마
29+
4. 마상마상
30+
2
31+
```
32+
33+
- 예외
34+
- 올바르지 않은 입력이 들어온 경우 에러 메시지를 출력한다.
35+
36+
```
37+
초나라 상마 순서를 입력해주세요. (예: 3)
38+
1. 상마상마
39+
2. 상마마상
40+
3. 마상상마
41+
4. 마상마상
42+
6
43+
[ERROR] 올바른 상마 순서 번호를 입력해주세요. (예: 3)
44+
```
45+
46+
### 기물 위치 초기화
47+
48+
- 입력한 상마 순서에 따라 기물 위치를 초기화한다.
49+
50+
### 이동 커맨드 입력
51+
52+
- move src dst 양식으로 입력해야 한다.
53+
- src에 있는 내 기물을 dst로 이동한다.
54+
55+
```
56+
현재 턴 : 초나라
57+
이동할 기물의 현재 위치와 이동할 위치를 입력해주세요. (예: move 1,1 2,1)
58+
move 1,1 2,1
59+
```
60+
61+
- 예외
62+
- src가 빈 칸인 경우 예외가 발생한다.
63+
- src에 상대 기물이 있는 경우 예외가 발생한다.
64+
- src에서 dst로 이동할 수 없는 경우 예외가 발생한다.
65+
66+
### 보드 출력
67+
68+
- 현재 장기판 상태를 출력한다.
69+
- 팀은 색깔로 구분한다.
70+
- 초나라 : 초록색
71+
- 한나라 : 빨간색
72+
73+
```
74+
차 상 마 사 ㅁ 사 상 마 차
75+
ㅁ ㅁ ㅁ ㅁ 왕 ㅁ ㅁ ㅁ ㅁ
76+
ㅁ 포 ㅁ ㅁ ㅁ ㅁ ㅁ 포 ㅁ
77+
병 ㅁ 병 ㅁ 병 ㅁ 병 ㅁ 병
78+
ㅁ ㅁ ㅁ ㅁ ㅁ ㅁ ㅁ ㅁ ㅁ
79+
ㅁ ㅁ ㅁ ㅁ ㅁ ㅁ ㅁ ㅁ ㅁ
80+
병 ㅁ 병 ㅁ 병 ㅁ 병 ㅁ 병
81+
ㅁ 포 ㅁ ㅁ ㅁ ㅁ ㅁ 포 ㅁ
82+
ㅁ ㅁ ㅁ ㅁ 왕 ㅁ ㅁ ㅁ ㅁ
83+
차 상 마 사 ㅁ 사 마 상 차
84+
```
85+
86+
### 승패 결과 출력
87+
88+
- 이동 중간에 왕이 죽으면 승패 결과를 출력한다.
89+
90+
```
91+
초나라의 승리입니다.
92+
```

‎src/main/java/.gitkeep

Whitespace-only changes.

0 commit comments

Comments
 (0)
Please sign in to comment.