체스 게임 구현을 위한 저장소
-
체스판 만들기
- 체스판에서 말의 위치 값
- 가로: 왼쪽 -> 오른쪽 a ~ h
- 세로: 아래 -> 위 1 ~ 8
- 체스판에서 말의 위치 값
-
체스판에서 각 진영은 검은색(대문자)과 흰색(소문자)편으로 구분
-
콘솔 UI에서 체스 게임을 할 수 있는 기능을 구현
- 체스 말의 이동 규칙을 찾아보고 체스 말이 이동할 수 있도록 구현한다.
move source위치 target위치
을 실행해 이동한다.- 체스판의 위치 값은 가로 위치는 왼쪽부터 a ~ h이고, 세로는 아래부터 위로 1 ~ 8로 구현한다.
-
결과 계산
- 체스 게임은 상대편 King이 잡히는 경우 게임에서 진다.
- King이 잡혔을 때 게임을 종료해야 한다.
- 체스 게임은 현재 남아 있는 말에 대한 점수를 구할 수 있어야 한다.
"status"
명령을 입력하면 각 진영의 점수를 출력하고 어느 진영이 이겼는지 결과를 볼 수 있어야 한다.
- 말 생성
- 폰 8개
- 룩 2개
- 나이트 2개
- 비숍 2개
- 킹 1개
- 퀸 1개
- 체스판 생성
- 말을 초기 위치에 배치
- 게임 진행을 위한 start, end 입력 받기
- start, end 외 입력 시 예외 처리
- start 입력 시 초기 체스판 출력
- end 입력 시 게임 종료
- move 입력 받기
- 움직일 말과 현재 턴이 일치하는지 검증
- sourcePosition 검증
- targetPosition 검증
- 현재 말의 이동 전략에 따라 이동할 수 있는 위치인지 확인
- move 혹은 catch
- 잡을 수 있는 말이 없다면 move
- 잡을 수 있는 말이 있다면 catch
- status 입력 받기
- 팀 별로 점수를 계산
- 점수 계산 규칙
- 체스 프로그램에서 현재까지 남아 있는 말에 따라 점수를 계산할 수 있어야 한다.
- 각 말의 점수는 queen은 9점, rook은 5점, bishop은 3점, knight는 2.5점이다.
- pawn의 기본 점수는 1점이다. 하지만 같은 세로줄에 같은 색의 폰이 있는 경우 1점이 아닌 0.5점을 준다.
- king은 잡히는 경우 경기가 끝나기 때문에 점수가 없다.
- 한 번에 한 쪽의 점수만을 계산해야 한다.