// Metodo che restituisce le configurazioni di gioco impostate dall'utente public IMinefieldCreator GetGameConfiguration(out int length, out int height, out int mines, out MinesweeperGame.GameModality modality) { // si acquisiscono le caratteristiche del campo minato dal form delle impostazioni length = (int)_settings.MinefieldLength.Value; height = (int)_settings.MinefieldHeight.Value; mines = (int)_settings.MinefieldMines.Value; // si acquisisce la modalità di gioco dal form delle impostazioni string stringModality = _settings.ModalityComboBox.Text; object objectModality = Enum.Parse(typeof(MinesweeperGame.GameModality), stringModality); modality = (MinesweeperGame.GameModality)objectModality; // viene restituito l'opportuno creatore di campi minati return(_helper.GetMinefieldCreator(_settings.MinefieldComboBox.Text)); }
// Metodo che aggiorna la descrizione della modalità di gioco selezionata dall'utente private void UpdateModalityInfo(object sender, EventArgs e) { // si acquisisce la modalità di gioco selezionata dall'utente string stringModality = _settings.ModalityComboBox.Text; Object objectModality = Enum.Parse(typeof(MinesweeperGame.GameModality), stringModality); MinesweeperGame.GameModality selectedModality = (MinesweeperGame.GameModality)objectModality; // si acquisisce la descrizione della modalità di gioco selezionata string modalityInfo = MinesweeperGame.DescribeModality(selectedModality); // si aggiorna l'etichetta informativa che descrive la modalità di gioco selezionata if (modalityInfo != null) { _settings.ModalityInfo = modalityInfo; } else { _settings.ModalityInfo = "* Descrizione non disponibile *"; } }
// Metodo che acquisisce e analizza la configurazione di gioco più recente stabilita dall'utente private void AcquireNewConfiguration() { // si memorizzano a parte il vecchio creatore di campo minato e la vecchia modalità di gioco IMinefieldCreator oldMinefieldCreator = _minefieldCreator; MinesweeperGame.GameModality oldModality = _modality; // si acquisisce la nuova configurazione di gioco stabilita dall'utente _minefieldCreator = _settingsController.GetGameConfiguration(out _length, out _height, out _mines, out _modality); // CASO A - se si ha acquisito una nuova tipologia di campo minato oppure una nuova // modalità di gioco allora si crea una nuova partita con nuove impostazioni if (oldMinefieldCreator.GetMinefieldName() != _minefieldCreator.GetMinefieldName() || oldModality != _modality) { // si determina se creare un nuovo campo minato dello stesso tipo oppure di tipo diverso if (oldMinefieldCreator.GetMinefieldName() != _minefieldCreator.GetMinefieldName()) { _minefield = _minefieldCreator.CreateMinefield(_length, _height, _mines); } else { _minefield.CreateNewMinefield(_length, _height, _mines); } // si crea una nuova partita con nuove impostazioni _minesweeperGame.NewGame(_minefield, _modality); } else { // CASO B - se si ha acquisito la stessa tipologia di campo minato e la stessa // modalità di gioco allora si crea una nuova partita con le medesime impostazioni _minefield.CreateNewMinefield(_length, _height, _mines); _minesweeperGame.NewGame(); } }