void PerftTest(int depth, S_BOARD *pos) { S_MOVELIST list[1]; int move; int MoveNum = 0; int start = GetTimeMs(); long cumnodes, oldnodes; ASSERT(CheckBoard(pos)); PrintBoard(pos); printf("\nStarting Test To Depth:%d\n", depth); leafNodes = 0; GenerateAllMoves(pos, list); for(MoveNum = 0; MoveNum < list->count; ++MoveNum) { move = list->moves[MoveNum].move; if(!MakeMove(pos, move)) continue; cumnodes = leafNodes; Perft(depth - 1, pos); TakeMove(pos); oldnodes = leafNodes - cumnodes; printf("move %d : %s : %ld\n", MoveNum + 1, PrMove(move), oldnodes); } printf("\nTest Complete : %ld nodes visited in %dms\n", leafNodes, GetTimeMs() - start); }
void PrintMoveList(const MOVELIST *list) { int index = 0; int score = 0; int move = 0; printf("MoveList:\n"); for (index = 0; index < list->count; ++index) { move = list->moves[index].move; score = list->moves[index].score; printf("Move:%d > %s (score:%d)\n", index + 1, PrMove(move), score); } printf("MoveList Total %d Moves:\n\n", list->count); }