本文整理汇总了C++中Moves::GetNumber方法的典型用法代码示例。如果您正苦于以下问题:C++ Moves::GetNumber方法的具体用法?C++ Moves::GetNumber怎么用?C++ Moves::GetNumber使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类Moves
的用法示例。
在下文中一共展示了Moves::GetNumber方法的2个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: GenerateTacticalMoves
void Shogi::GenerateTacticalMoves( Moves& moves ){
/************************************************
戦略的な手を列挙する。
Capture, Promote, (King)
************************************************/
GEN_INFO info;
// 生成する指し手の種類
SetGenInfo( info, MOVE_CAPTURE | MOVE_PROMOTE );
// ピン
SetGenInfoPin( info );
if( !info.check ){
// 盤上
GenerateMovesOnBoard( moves, info );
}
else if( info.check != DOUBLE_CHECK ){
GenerateCapEvasion( moves, info );
GenerateNoCapEvasion( moves, info );
}
if( moves.GetNumber() == 0 ){
// 玉を動かす手
info.flag |= MOVE_KING;
GenerateMovesOu( moves, info );
}
}
示例2: GetMoveAll
int Book::GetMoveAll( Shogi* pshogi, Moves& moves, TYPE type ){
/************************************************
定跡手を列挙する。
************************************************/
int i;
int flag;
list<BLIST>::iterator ib;
list<MLIST>::iterator im;
list<MLIST>* pmlist;
uint64 hash = pshogi->GetHash();
MOVE mtemp;
i = (int)( hash & BOOK_HASH_MASK );
// 局面が既にあるか調べる。
flag = 0;
for( ib = blist[i].begin() ; ib != blist[i].end() ; ++ib ){
if( (*ib).hash == hash ){
flag = 1;
break;
}
}
if( flag == 0 )
return 0;
// 指し手を列挙
pmlist = &(*ib).mlist;
for( im = pmlist->begin() ; im != pmlist->end() ; ++im ){
mtemp.Import( (*im).mv );
if( pshogi->IsLegalMove( mtemp ) ){
switch( type ){
// 評価値を用いる場合
case TYPE_EVAL:
mtemp.value = (*im).val;
break;
// 出現頻度を用いる場合
case TYPE_FREQ:
default:
mtemp.value = (*im).cnt * 100 / (*ib).cnt;
break;
}
moves.Add( mtemp );
}
}
moves.Sort();
return moves.GetNumber();
}