체스 봇 개발 일지 4일차
2023 09 18
지난번에는 캐슬링이라는 특수 규칙을 만들었다. 이번에는 승진이라는 기능을 구현 할 것이다.
1. 승진이란
체스에서 승진이란 간단하다. 폰이 앞으로 전진하다가 8번째 행에 도달했거나 상대기물을 잡으면서 8번째 행에 도달한 경우 퀸/룩/비숍/나이트로 승진을 할 수 있다는 규칙이다. 단 폰으로 그대로 남는것은 불가능하다.
2. 구현
int promote() {
printf("1. 퀸 2. 비숍 3. 나이트 4. 룩");
int c = _getch();
if (c == 224)
c = _getch();
switch (c) {
case ONE:
return 1;
case TWO:
return 2;
case THREE:
return 3;
case FOUR:
return 4;
}
}
키보드의 입력을 스위치 문으로 나누어 리턴을 해주었다.
_move(ax, ay, bx, by, _pBoard);
if (by == 8) {
int res = promote();
if (res == 1) _pBoard[by][bx].type = 5;
else if (res == 2) _pBoard[by][bx].type = 4;
else if (res == 3) _pBoard[by][bx].type = 3;
else if (res == 4) _pBoard[by][bx].type = 2;
}
_move(ax, ay, bx, by, _pBoard);
if (by == 1) {
int res = promote();
if (res == 1) _pBoard[by][bx].type = 5;
else if (res == 2) _pBoard[by][bx].type = 4;
else if (res == 3) _pBoard[by][bx].type = 3;
else if (res == 4) _pBoard[by][bx].type = 2;
}
위 코드는 검은색 폰일때 코드이다.
3. 마치며
이번에는 두번째 추가 기능인 승진을 만들었다. 생각보다 룰 자체가 복잡하거나 조건이 많지 않아서 간단하게 만들었다. 다음에는 체크 기능을 만들것이다.