Code Monkey home page Code Monkey logo

java-chess's Introduction

java-chess

  • 체스판을 초기화한다.
    • 말의 위치 값은 가로 위치는 왼쪽부터 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은 잡히는 경우 경기가 끝나기 때문에 점수가 없다.
    • 한 번에 한 쪽의 점수만을 계산해야 한다.

java-chess's People

Contributors

kimseonggyu1 avatar kimhodol avatar pobiconan avatar young891221 avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.