Exemplo n.º 1
0
 private void AIMoved(MoveMgr.Move move, List <MoveMgr.Move> availableMoves, AIMoveCallback callback)
 {
     try
     {
         Debug.Assert(null != move);
         availableMoves.Remove(move);
         callback(move);
     }
     finally
     {
         // Release to pool
         availableMoves.ForEach(delegate(MoveMgr.Move m)
         {
             m.Dispose();
         });
     }
 }
Exemplo n.º 2
0
    public IEnumerator GetMove(int playerNum, GameState.PlayerType playerType, AIMoveCallback callback)
    {
        MoveMgr.Move        bestMove       = null;
        List <MoveMgr.Move> availableMoves = GetPlayableCells(playerNum);

        yield return(null);

        switch (playerType)
        {
        case GameState.PlayerType.AI_Easy:
        {
            bestMove = WorstMove(playerNum, availableMoves);
            break;
        }

        case GameState.PlayerType.AI_Medium:
        {
            bestMove = RandomMove(playerNum, availableMoves);
            break;
        }

        case GameState.PlayerType.AI_Hard:
        {
            bestMove = BestMove(playerNum, availableMoves);
            break;
        }

        case GameState.PlayerType.AI_Hard_MCTS:
        {
            bestMove = BestMove_MCTS(playerNum, availableMoves);
            break;
        }

        default:
        {
            Debug.LogAssertion("Unhandled AI type: " + playerType.ToString());
            break;
        }
        }

        AIMoved(bestMove, availableMoves, callback);
    }