private void run() { bool startNewGame = true; bool firstChance = true; Cell choosenCell; while (startNewGame) { while (m_Board.HasOption()) { firstChance = true; FillUpAndPrintMatrix(); m_CurrentPlayer = (m_CurrentPlayer * -1) + 1; ////switch players 0=>1 ,1=>0 do { if (!checkeOptionsForPlayer()) { m_UserInterface.NoOptionsMessage(m_PlayersNames[m_CurrentPlayer]); break; } choosenCell = getCellFromCureentPlayer(firstChance); firstChance = false; if (choosenCell == new Cell(-1, -1)) { return; } }while (!m_Board.TryUpdateMatrix(choosenCell, m_CurrentPlayer)); } if (IsComputerPlaying()) { startNewGame = m_UserInterface.GameFinished(m_PlayersNames, m_Player1.Score, m_compPlayer.Score); } else { startNewGame = m_UserInterface.GameFinished(m_PlayersNames, m_Player1.Score, m_Player2.Score); } if (startNewGame) { m_UserInterface.InitUI(m_Board.Size); m_Board.Init(m_Board.Size); } } }