// 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 *";
            }
        }
Beispiel #3
0
        // 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();
            }
        }