- 체스판을 초기화한다.
- 말의 위치 값은 가로 위치는 왼쪽부터 a ~ h이고, 세로는 아래부터 위로 1 ~ 8로 구현한다.
- 각 진영은 검은색(대문자)과 흰색(소문자) 편으로 구분한다.
RNBQKBNR 8 (rank 8)
PPPPPPPP 7
........ 6
........ 5
........ 4
........ 3
pppppppp 2
rnbqkbnr 1 (rank 1)
abcdefgh
-
빈 판을 생성한다.
- 체스말들을 생성한다.
- 체스말들을 초기 위치에 놓는다.
- 콘솔 출력
-
체스 말이 이동할 수 있도록 구현한다.
-
move source위치 target위치
을 실행해 이동한다. - King
- 전방향 1칸 이동
- start와 target의 (x좌표 끼리의 차이)^2와 (y좌표 끼리의 차이)^2의 합이 2 이하
- Queen
- 전방향 무제한 이동
- Rook or Bishop
- Rook
- 상하좌우 무제한 이동
- start와 target의 x좌표 끼리의 차이 또는 y좌표 끼리의 차이 중하나가 0
- Bishop
- 대각선 무제한 이동
- start와 target의 x좌표 끼리의 차이와 y좌표 끼리의 차이 절대값이 같음
- Knight
- 상하좌우 1칸 + 대각선 1칸 이동
- 다른 말 건너뛰기 가능
- start와 target의 (x좌표 끼리의 차이)^2와 (y좌표 끼리의 차이)^2의 합이 5
- Pawn
- 전방 1칸 이동
- target의 y좌표 - start의 y좌표가 WHITE면 1, BLACK이면 -1
- 초기 위치에 있을 시에만 2칸 이동 가능
-
-
King이 잡혔을 때 게임을 종료해야 한다.
-
"status" 명령을 입력하면 각 진영의 점수를 출력하고 어느 진영이 이겼는지 결과를 볼 수 있어야 한다.
- 각 말의 점수는 queen은 9점, rook은 5점, bishop은 3점, knight는 2.5점이다.
- pawn의 기본 점수는 1점이다. 세로줄에 같은 색의 폰이 있는 경우 1점이 아닌 0.5점을 준다.
- king은 잡히는 경우 경기가 끝나기 때문에 점수가 없다.
- 한 번에 한 쪽의 점수만을 계산해야 한다.