コード例 #1
0
ファイル: ChessControl.cs プロジェクト: sirfreedom/ChessNet
 //*********************************************************     
 //
 /// <summary>
 /// Find the best move for a player using alpha-beta pruning or minmax search
 /// </summary>
 /// <param name="searchMode">       Search mode</param>
 /// <param name="chessBoard">       Chess board to use. Null to use the base one</param>
 /// <param name="moveBest">         Best move found</param>
 /// <param name="iPermCount">       Total permutation evaluated</param>
 /// <param name="iCacheHit">        Number of moves found in the translation table cache</param>
 /// <param name="iMaxDepth">        Maximum depth evaluated</param>
 /// <returns>
 /// true if a move has been found
 /// </returns>
 //  
 //*********************************************************     
 public bool FindBestMove(SearchEngine.SearchMode searchMode, ChessBoard chessBoard, out ChessBoard.MovePosS moveBest, out int iPermCount, out int iCacheHit, out int iMaxDepth) {
     bool    bRetVal;
     bool    bUseBook;
     
     bUseBook = ((searchMode.m_eOption & SearchEngine.SearchMode.OptionE.UseBook) != 0);
     if (bUseBook && FindBookMove(searchMode, out moveBest)) {
         iPermCount = -1;
         iCacheHit  = -1;
         iMaxDepth  = 0;
         bRetVal    = true;
     } else {
         if (chessBoard == null) {
             chessBoard = m_board;
         }
         m_dateTimeStartSearching = DateTime.Now;
         bRetVal                  = chessBoard.FindBestMove(searchMode, m_board.NextMoveColor, out moveBest, out iPermCount, out iCacheHit, out iMaxDepth);
         m_timeSpanLastSearch     = DateTime.Now - m_dateTimeStartSearching;
     }
     return(bRetVal);
 }