Exemplo n.º 1
0
        private void UserTurn(ref Player io_User, ref List <CellMatrix> io_UserPossibleMove)
        {
            int  row = 0, col = 0;
            bool isInputOK = false;

            PrintCurrentScreen();
            if (r_GameMode == k_GameAgainstFriend)
            {
                UI.ShowWhoIsTurn(io_User);
            }

            UI.GetMoveFromUser(ref row, ref col, m_Board);

            if (row == k_QuitProgram && col == k_QuitProgram)
            {
                UI.QuitGame();
                Environment.Exit(0);
            }

            if (io_UserPossibleMove.Count != k_NoPossibleMoves)
            {
                do
                {
                    if (CheckIfMoveIsInList(io_UserPossibleMove, row, col) == true)
                    {
                        m_Board.SetCellValue(io_User.Symbol, row, col);
                        CheckAndUpdateBoard(row, col, io_User.Symbol, true);
                        isInputOK = true;
                    }
                    else
                    {
                        UI.SelectSquareAgain();
                        UI.GetMoveFromUser(ref row, ref col, m_Board);
                    }
                }while (!isInputOK);
            }
            else
            {
                UI.TurnPassed();
            }
        }
Exemplo n.º 2
0
        private void GameRunning()
        {
            Ex02.ConsoleUtils.Screen.Clear();
            ScanAndUpdatePossiblMovesList(m_User1.Symbol, ref m_User1PossibleMove);
            ScanAndUpdatePossiblMovesList(m_User2.Symbol, ref m_User2PossibleMove);

            while (m_User1PossibleMove.Count != k_NoPossibleMoves || m_User2PossibleMove.Count != k_NoPossibleMoves)
            {
                if (m_User1PossibleMove.Count != k_NoPossibleMoves)
                {
                    UserTurn(ref m_User1, ref m_User1PossibleMove);
                }

                m_User2PossibleMove.Clear();
                ScanAndUpdatePossiblMovesList(m_User2.Symbol, ref m_User2PossibleMove);

                if (m_User2PossibleMove.Count != k_NoPossibleMoves)
                {
                    if (r_GameMode == k_GameAgainstComputer)
                    {
                        int randomCell = RandomMove(m_User2PossibleMove);
                        m_Board.SetCellValue(m_User2.Symbol, m_User2PossibleMove[randomCell].Row, m_User2PossibleMove[randomCell].Col);
                        CheckAndUpdateBoard(m_User2PossibleMove[randomCell].Row, m_User2PossibleMove[randomCell].Col, m_User2.Symbol, true);
                    }
                    else
                    {
                        UserTurn(ref m_User2, ref m_User2PossibleMove);
                    }
                }
                else
                {
                    UI.TurnPassed();
                }

                m_User1PossibleMove.Clear();
                ScanAndUpdatePossiblMovesList(m_User1.Symbol, ref m_User1PossibleMove);
                m_User2PossibleMove.Clear();
                ScanAndUpdatePossiblMovesList(m_User2.Symbol, ref m_User2PossibleMove);
            }
        }