public override void StartGame()
    {
        board.InitBoard();
        mctsPlayer.SetPlayerInd(Connect4Board.players[playerFirst ? 1 : 0]);
        mctsPlayer.ResetPlayer();

        UpdateBoard();
        thisTurn = Connect4PieceType.Yellow;
        aiMoved  = false;

        StartCoroutine("StartGameLater");
    }
 private void UpdateBoard()
 {
     for (int i = 0; i < pieces.Length; i++)
     {
         if (board.states.ContainsKey(i))
         {
             Connect4PieceType pieceType = board.states[i] == Connect4Board.players[0] ? Connect4PieceType.Yellow : Connect4PieceType.Red;
             pieces[i].SetPiece(pieceType);
         }
         else
         {
             pieces[i].SetPiece(Connect4PieceType.White);
         }
     }
 }
Beispiel #3
0
    public void SetPiece(Connect4PieceType type)
    {
        switch (type)
        {
        case Connect4PieceType.White:
            spriteRenderer.color = Color.white;
            break;

        case Connect4PieceType.Yellow:
            spriteRenderer.color = Color.yellow;
            break;

        case Connect4PieceType.Red:
            spriteRenderer.color = Color.red;
            break;
        }
    }
    private void EndThisTurn(int move)
    {
        // 判断是否有胜负
        board.DoMove(move);
        UpdateBoard();
        object[] endResult = board.GameEnd();
        bool     end       = (bool)endResult[0];
        int      winner    = (int)endResult[1];

        if (end)
        {
            EndGame(winner);
            return;
        }

        // 进入下一步
        thisTurn = (thisTurn == Connect4PieceType.Yellow ? Connect4PieceType.Red : Connect4PieceType.Yellow);
    }