- 콘솔 UI에서 체스 게임을 할 수 있는 기능을 구현한다.
- piece 구현
- 퀸, 비숍, 킹, 나이트, 룩, 폰
- 색
- 1단계는 체스 게임을 할 수 있는 체스판을 초기화한다.
- 체스판에서 말의 위치 값은 가로 위치는 왼쪽부터 a ~ h이고, 세로는 아래부터 위로 1 ~ 8로 구현한다.
- 체스 말 이동 기능
- 각 말마다 행마법 다름
- 행마법에 따라 보드에서 움직임 기능
- 게임 종료 & 점수 확인
- 왕이 죽으면 게임 끝
- queen은 9점, rook은 5점, bishop은 3점, knight는 2.5점이고 pawn의 기본 점수는 1점이다.
하지만 같은 세로줄에 같은 색의 폰이 있는 경우 1점이 아닌 0.5점을 준다. - 점수 보여주기 기능
- 콘솔 UI 기능
- 체스말, 빈칸 표시
- white는 소문자, black은 대문자, 빈칸은 .으로 출력
- 게임 제어
- 게임 시작 : start
- 게임 종료 : end
- 기물 이동 : move source위치 target위치 - 예. move b2 b3
- 점수 현황 : status
- 예외 처리
-
명령어 검증
- start -> move, end, status 명령어 순서를 지켰는 지
- 유효한 명령어를 입력했는 지
-
move 명령어 검증(source, target 검증)
- source나 target이 보드 범위를 벗어나는지
- 턴 검증
- 유효한 source, target 이름인지 (예 move aa b123)
- source, target 누락되지 않았는 지 (예 move a1 )
-
보드 인덱스 범위 벗어나는 지 -
moveStrategy 에러메세지 출력 추가 -
start 안하고 바로 move 명령어가 실행되는 경우 -
move만 입력했을 때
-
- 함수형 인터페이스 적용 (CommandType) (뭔가 별로)
- 인터페이스 적용 (CommandType2 - Command, PieceType - MoveStrategy)
- File, Rank wrapper 해야하는가? (기본형 int 사용)
- Move 전략 다른 방법은 어떤게 있을까?
- command 전략 다른 방법은 어떤게 있을까?
- static이 많이 사용되었는데 좋은 코드일까? 사용하지 않고 어떻게?