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(); } }
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); } }