예제 #1
0
 public static bool TryAutoMove(this MCTS <GameNode> root, out MCTS <GameNode> newRoot)
 {
     if (root.Node.Game.IsAutoMovePossible)
     {
         int move = root.Node.Game.GetAutoMoveIndex();
         newRoot = root.GetChildByMove(move);
         return(true);
     }
     else
     {
         newRoot = root;
         return(false);
     }
 }
예제 #2
0
 public static bool TryMove(this MCTS <GameNode> root, int iterations, out MCTS <GameNode> newRoot, bool preferAutoMove = true)
 {
     if (preferAutoMove && root.TryAutoMove(out newRoot))
     {
         return(true);
     }
     else
     {
         root.Execute(iterations);
         if (root.GetBestMove() < 0)
         {
             newRoot = root;
             return(false);
         }
         else
         {
             newRoot = root.GetChildByMove(root.GetBestMove());
             return(true);
         }
     }
 }