本文整理汇总了C++中board::undo_move方法的典型用法代码示例。如果您正苦于以下问题:C++ board::undo_move方法的具体用法?C++ board::undo_move怎么用?C++ board::undo_move使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类board
的用法示例。
在下文中一共展示了board::undo_move方法的2个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: eval_and_sort
void eval_and_sort(
const evaluator& e, board& b, piece_colour pc,
move* movelist, int num_moves)
{
for (int i = 0; i < num_moves; i++)
{
move& m = movelist[i];
// TODO have the idea of score at a particular depth
b.do_move(m);
m.score = e.calc_score(b, pc);
b.undo_move();
}
std::sort(movelist, movelist + num_moves, move_sorter());
#ifdef SHOW_SORTED_MOVES_LIST
std::cout << "Sorted moves list: ";
for (int i = 0; i < num_moves; i++)
{
move& m = movelist[i];
std::cout << m << " (" << m.score << ") ";
}
std::cout << "\n";
#endif
}
示例2: mate_test
bool mate_test(board& b, piece_colour pc)
{
move movelist[200];
int n = 0;
gen_moves(b, pc, movelist, n);
piece_colour opp = flip(pc);
for (int i = 0; i < n; i++)
{
const move& m = movelist[i];
b.do_move(m);
bool tk = can_take_opponent_king(b, opp);
b.undo_move();
if (!tk)
return false; // we found a position where king can't be taken
}
// No move found where the opponent cannot take the king: this is
// check mate!
return true;
}