프로젝트/체스 엔진

[체스 엔진] 체스 엔진 개발 일지 - 3 board 클래스 설계 및 구상.

playalone 2026. 2. 25. 16:33

오늘 한일

1. board 클래스: 구상. 클래스 함수 정의,  getBoardPosition관련 함수 구현

2. King 클래스: 생성, getPossibleMovement 구현(캐슬링 구현 안됨)

 

오늘의 커밋

https://github.com/ggace/chess-engine/commits/master/?since=2026-02-25&until=2026-02-25

 

GitHub - ggace/chess-engine

Contribute to ggace/chess-engine development by creating an account on GitHub.

github.com

 

오늘 작성하면서 생각한건, board 클래스에서 game 클래스와 piece 클래스로 체스판 상태를 넘겨주는 방식이다. 

 

사실, 아직 game 클래스로 넘겨주는 방식은 생각하지 않았고, piece 클래스로 넘겨주는건, 어차피 piece는 상대와 나의 기물이 어디있는지이다.

일부, 앙파상이나, 폰의 공격, 캐슬링 판단은 별개의 문제로, 특정 위치에 기물이 있는지, 특정 위치를 상대가 공격중인지 판단하는 것이기 때문에 특정 위치 정보를 기반으로 코드를 작성해야한다.

즉, 기본적인 경우, 단순히 기물의 위치만 알면 된다는 의미이다. 

이때문에, 기본적으로 piece에서 이동 가능 위치를 판단할때에는 64bit long long 자료형을 사용하기만 하면 된다. 

다음과 같이 코드를 짰고, 체크 등의 경우로 인한 강제수 판단은 추후에 추가하는 걸로 하자. 

 

이제 시작이고, 제대로 틀이 잡히지 않아 머리를 많이 쓰고 있는것 같은데, 정확히 틀만 잡히고 나면, 단순히 코드만 작성하면 되는거라 코드 수정보다 설계쪽에 더 많은 시간을 투자하고 있고, 앞으로도 그리 해야한다.