/java-chess

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

Primary LanguageJava

java-chess

체스 미션 저장소

우아한테크코스 코드리뷰

체스 요구사항 분석

1. 입력

  • 게임 여부를 입력 받는다.
    • 게임 시작은 start, 게임 종료는 end
  • 게임 시작 시에 게임 방 이름을 입력 받는다.
  • 게임 이동 위치를 입력 받는다.
    • move 뒤에 위치를 입력 받는다.
  • 게임의 현 상황을 출력하기 위한 명령어를 받는다.
    • source를 받는다.
  • 진행 하던 게임을 재시작 하기 위해 게임 방 이름을 입력 받는다.

2. 출력

  • 안내 문구를 출력한다.
  • 체스판을 출력한다.
  • 체스 결과를 출력한다.
  • 체스 점수를 각각 출력한다.

3. 비즈니스

  • 체스판을 생성
    • 8 X 8 크기를 갖는다.
    • 검은색, 하얀색 진영으로 나뉜다.
    • 각 진영은 폰(8개), 퀸(1개), 킹(1개), 나이트(2개), 비숍(2개), 루크(2개) 를 가진다.
  • 말 이동
    • 말은 각각의 방법에 따라 이동한다.
    • 이동하려는 위치가 체스판을 넘을 수 없다.
    • 이동하려는 위치에 같은 진영의 말이 있을 경우 움직을 수 없다.
    • 나이트를 제외한 말은 다른 말을 넘어갈 수 없다.
  • 승패 및 점수
    • 체스 게임은 상대편 King이 잡히는 경우 게임에서 진다. King이 잡혔을 때 게임을 종료해야 한다.
    • 체스 게임은 현재 남아 있는 말에 대한 점수를 구할 수 있어야 한다.
      • 각 말의 점수는 queen은 9점, rook은 5점, bishop은 3점, knight는 2.5점이다.
      • pawn의 기본 점수는 1점이다. 하지만 같은 세로줄에 같은 색의 폰이 있는 경우 1점이 아닌 0.5점을 준다.
      • king은 잡히는 경우 경기가 끝나기 때문에 점수가 없다.
      • 한 번에 한 쪽의 점수만을 계산해야 한다.
  • 진행 중인 게임 저장
    • 게임방 이름으로 진행 중인 게임을 저장한다.
    • 이 전에 진행하던 게임을 다시 불러와서 진행한다.