Beispiel #1
0
    /// <summary>
    /// 电脑落子
    /// </summary>
    void computerPlacePiece()
    {
        MCTS mcts = new MCTS(gameState, N_SIMULATION_TIMES);
        GobangMove nextMove;
        MCTSGameMove MCTSMove = mcts.decideMove();
        if (MCTSMove is GobangMove)
        {
            nextMove = (GobangMove) MCTSMove;
            GobangPoint point = nextMove.point;
            if (gameState.boardState[point.coord[0], point.coord[1]].pieceType != PieceType.Unplaced)
                Debug.LogWarning("Selected a point already had a piece.");
            point.pieceType = PieceType.Computer;
            gameState.placePiece(new GobangMove(point));
            paintCube(point.coord, computerColor);
            GameResult result = gameState.judgeLastMove();
            if (result != GameResult.NoOutcome)
            {
                gameRunning = false;
                reminder.GetComponent<CanvasGroup>().alpha = 1;
                if (result == GameResult.ComputerWon) showReminder("胜败乃兵家常事\n大侠请重新来过");
                else if (result == GameResult.Draw) showReminder("平局");
            }

            if (gameRunning) hideReminder();
            playersTurn = true;
        }
        else
        {
            Debug.LogError("Cannot convert variable nextMove to type GobangMove.");
        }
    }