public void StartGame() { OutputGenerator.FirstUserPrompt(); while (_gameData.GetTurn() < _gameData.GetTurnLimit()) { var currentUserInput = Console.ReadLine(); if (currentUserInput == null) { continue; } var errorCode = InputValidator.CheckInputForErrors(currentUserInput.ToLower().Trim(), _gameData.GetColoursPicked()); if (errorCode == "valid") { var currentGuess = InputFormatter(currentUserInput, _gameData.GetColoursPicked()); _gameData.SetCurrentColourList(currentGuess); var result = CalculateResult(); if (ConvertStringArrayToString(result).Equals(ConvertStringArrayToString(_winningOutput))) { OutputGenerator.GenerateWin(); return; } _turnCounter++; _gameData.SetTurn(_turnCounter); OutputGenerator.PromptUser(result, _gameData.GetTurn()); } else { OutputGenerator.PromptUser(errorCode, _gameData.GetTurn()); } } OutputGenerator.GenerateLoss(_gameData.GetTurnLimit()); }