/java-chess

체스 게임 구현을 위한 저장소

Primary LanguageJava

java-chess

체스 게임 구현을 위한 저장소

기능 요구 사항

  1. 체스판 만들기

    • 체스판에서 말의 위치 값
      • 가로: 왼쪽 -> 오른쪽 a ~ h
      • 세로: 아래 -> 위 1 ~ 8
  2. 체스판에서 각 진영은 검은색(대문자)과 흰색(소문자)편으로 구분

  3. 콘솔 UI에서 체스 게임을 할 수 있는 기능을 구현

    • 체스 말의 이동 규칙을 찾아보고 체스 말이 이동할 수 있도록 구현한다.
    • move source위치 target위치을 실행해 이동한다.
    • 체스판의 위치 값은 가로 위치는 왼쪽부터 a ~ h이고, 세로는 아래부터 위로 1 ~ 8로 구현한다.
  4. 결과 계산

    • 체스 게임은 상대편 King이 잡히는 경우 게임에서 진다.
    • King이 잡혔을 때 게임을 종료해야 한다.
    • 체스 게임은 현재 남아 있는 말에 대한 점수를 구할 수 있어야 한다.
    • "status" 명령을 입력하면 각 진영의 점수를 출력하고 어느 진영이 이겼는지 결과를 볼 수 있어야 한다.

구현 기능 목록

  1. 말 생성
    • 폰 8개
    • 룩 2개
    • 나이트 2개
    • 비숍 2개
    • 킹 1개
    • 퀸 1개
  2. 체스판 생성
    • 말을 초기 위치에 배치
  3. 게임 진행을 위한 start, end 입력 받기
    • start, end 외 입력 시 예외 처리
    • start 입력 시 초기 체스판 출력
    • end 입력 시 게임 종료
  4. move 입력 받기
    • 움직일 말과 현재 턴이 일치하는지 검증
    • sourcePosition 검증
    • targetPosition 검증
      • 현재 말의 이동 전략에 따라 이동할 수 있는 위치인지 확인
  5. move 혹은 catch
    • 잡을 수 있는 말이 없다면 move
    • 잡을 수 있는 말이 있다면 catch
  6. status 입력 받기
    • 팀 별로 점수를 계산
    • 점수 계산 규칙
      • 체스 프로그램에서 현재까지 남아 있는 말에 따라 점수를 계산할 수 있어야 한다.
      • 각 말의 점수는 queen은 9점, rook은 5점, bishop은 3점, knight는 2.5점이다.
      • pawn의 기본 점수는 1점이다. 하지만 같은 세로줄에 같은 색의 폰이 있는 경우 1점이 아닌 0.5점을 준다.
      • king은 잡히는 경우 경기가 끝나기 때문에 점수가 없다.
      • 한 번에 한 쪽의 점수만을 계산해야 한다.