/// <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."); } }