C ++ 체스 엔진을 작성 중이며 Little-Endian Rank-File Mapping 비트 보드에서 슬라이딩 피스의 움직임을 생성 하는 마법의 숫자를 찾고 있습니다.
라이벌 체스 웹 사이트 는 마법의 숫자를 제공하지만 동일한 보드 매핑에는 적용되지 않습니다.
체스 프로그래밍 위키는 지금까지 최고의 매직 넘버를 제공 하지만 철저하지는 않습니다.
결국 나는 네 가지를 찾고 있습니다.
- 각 사각형에 대한 점유 마스크
- 각 사각형의 마법 번호
- 각 사각형의 마법 이동
- 각 사각형에 대한 데이터베이스 배열을 이동합니다
따라서 다음 코드 를 사용하여 C3에서 Rook의 이동을 찾을 수 있습니다 (예 :).
bbBlockers = bbAllPieces & occupancyMaskRook[C3]
databaseIndex = (int)((bbBlockers * magicNumberRook[C3]) >> rookMagicShifts[C3])
bbMoveSquares = magicMovesRook[C3][databaseIndex] & ~bbFriendlyPieces
나는이 질문이 programmers.stackexchange.com 또는 stackoverflow.com 에서 더 적합하고 대답 될 것이라고 믿습니다 .
—
Pavan Nadig
실제로는 아닙니다. 이것은 여전히 여기서 대답 할 수 있습니다. BTW, 프로그래머는 높은 수준의 추상화에 더 집중합니다. stackoverflow.com이 더 좋을 것입니다.
—
SmallChess
@PeteBecker 당신 말이 맞아요, 내가 바꿨어요
—
Romain