---
# System prepended metadata

title: 1주차 요구사항 (체스게임)

---

# 1주차 요구사항 (체스게임)
- 모델 
    보드
    피스
        폰 
        나이트
        ...
    게임
    커맨드
    프린터 (현황 출력, 스코어, 플레이어 턴- black, white)
    
    
- 로직 (게임 룰)


프로젝트는 iOS APP으로 생성을 하고, 처음에는 테스트 코드를 통해 명령어를 입력 받도록 한다.

구현사항
- 8x8 보드 만들기
    - 가로는 A-H 세로는 1-8 값을 가진다. 
- 명령어 입력
    - "현재 위치 -> 이동 위치" 형태로 입력한다. (A1->A2) -> 1주차
    - 터치 받는다거나? -> 2주차 UI 구현?
- 피스 생성
    - 폰
        - 폰은 앞으로 한칸만 전진만 가능하다.
        - 폰은 첫 턴에는 두칸 전진이 가능하다.


        - 폰은 말을 잡을 때 대각선 앞으로만 이동이 가능하다.
        - 폰 특수룰 -> 3주차
            - 앙파상
            - 프로모션
    - 킹
        - 킹은 모든 방향으로 한 칸만 이동이 가능하다.
        - 킹이 잡히거나 구조 불가능한 상태가 되면(체크메이트) 게임 오버 -> 2주차
        - 킹 특수룰 -> 3주차
            - 캐슬링
    - 나이트
    -----------
    - 비숍
    - 룩
    - 퀸
- 게임 룰 
    - 플레이어는 피스를 이동하면 턴을 체인지 한다.
    - 자신의 피스가 상대 피스를 모두 잡으면 게임이 종료된다. 1주차
        - 킹만 잡거나 체크메이트로 끝나는 걸로 수정 (2주차)
    - 턴이 변경될 때마다 현재 체스보드 상황을 커맨드창에 출력한다. 1주차
        - UI에 표시되게 변경 (2주차)
- UI 관련 (2주차)
    - 피스를 선택하면 이동 가능한 위치를 표시
    - 이동 가능한 위치를 선택하면 이동 및 피스를 잡는 것까지
    - 이동 불가능한 위치를 선택하면 피스 선택 캔슬
    - 피스 선택 중 다른 피스를 선택하면 피스 선택 변경

1주차: 보드 및 일부 피스 생성(이동 룰) // 플레이어 턴 바꾼다. 
2주차: 남은 피스 생성(이동 룰) + UI 구현(명령어 -> 테스트에서 UI 터치 이벤트)
3주차: 특수 룰
