예제 #1
0
        private void PlayRound(int i_size)
        {
            m_Board = new Board(i_size);
            GameInterface.ShowStartTurnMessage(m_Board, m_PlayerOne);
            m_CurrentPlayerTurn = m_PlayerOne;
            m_NextPlayerTurn    = m_PlayerTwo;
            this.playTurn();
            switch (m_GameStatus)
            {
            case eGameStatus.Win:
                this.updateScore();
                GameInterface.PrintEndOfRoundWin(m_GameStatus, m_NextPlayerTurn, m_CurrentPlayerTurn);
                break;

            case eGameStatus.Draw:
                GameInterface.PrintEndOfRoundDraw(m_GameStatus, m_PlayerOne, m_PlayerTwo);
                break;
            }
        }
예제 #2
0
        private void playTurn()
        {
            bool   isValidMove;
            bool   isLegalWithdraw   = false;
            string currentMoveString = string.Empty;
            Turn   currentTurn       = new Turn(m_Board, m_CurrentPlayerTurn);

            if (!checkForEndRound(currentTurn))
            {
                if (currentTurn.SwitchTurn)
                {
                    currentTurn = new Turn(m_Board, m_CurrentPlayerTurn);
                }

                switch (m_CurrentPlayerTurn.Type())
                {
                case eType.User:
                {
                    currentMoveString = GameInterface.getMove(m_Board.Size);
                    isValidMove       = currentTurn.isValidMove(currentMoveString);
                    isLegalWithdraw   = GameInterface.IsLegalWithdraw(currentMoveString, currentTurn);
                    while (!isValidMove && !isLegalWithdraw)
                    {
                        currentMoveString = GameInterface.InvalidMove(m_Board.Size);
                        isValidMove       = currentTurn.isValidMove(currentMoveString);
                        isLegalWithdraw   = GameInterface.IsLegalWithdraw(currentMoveString, currentTurn);
                    }

                    break;
                }

                case eType.Bot:
                {
                    currentMoveString = currentTurn.PlayBotTurn();
                    isLegalWithdraw   = false;
                    break;
                }
                }

                if (!isLegalWithdraw)
                {
                    currentTurn.PlayTurn();
                    if (currentTurn.JustAte)
                    {
                        currentTurn.SwitchTurn = true;
                    }

                    m_Board = currentTurn.getBoard;

                    if (currentTurn.SwitchTurn)
                    {
                        GameInterface.ShowRoundDetails(m_Board, m_CurrentPlayerTurn, m_NextPlayerTurn, currentMoveString);
                        switchPlayers();
                    }
                    else
                    {
                        GameInterface.ShowRoundDetails(m_Board, m_CurrentPlayerTurn, m_CurrentPlayerTurn, currentMoveString);
                    }

                    this.playTurn();
                }
                else
                {
                    m_GameStatus = eGameStatus.Win;
                }
            }
        }