示例#1
0
 public GameBoard(int x, string playerInitials, string difficulty)
 {
     InitializeComponent();
     this.FormClosing += GameBoard_FormClosing;
     //Generate board size based on size passed in from StartScreen.
     if (x == 10)
     {
         this.Width  = 225;
         this.Height = 278;
         board       = new MinesweeperGame(this, x, x, playerInitials, difficulty);
     }
     else if (x == 15)
     {
         this.Width  = 330;
         this.Height = 383;
         board       = new MinesweeperGame(this, x, x, playerInitials, difficulty);
     }
     else if (x == 20)
     {
         this.Width  = 435;
         this.Height = 488;
         board       = new MinesweeperGame(this, x, x, playerInitials, difficulty);
     }
     //Prevent resizing of form
     this.FormBorderStyle = FormBorderStyle.FixedSingle;
     this.MaximizeBox     = false;
 }
示例#2
0
        // Metodo eseguito quando l'utente ha stabilito la configurazione di gioco
        private void AcquireConfiguration(object sender, EventArgs e)
        {
            if (_settingsMemento == null)
            {
                // CASO A - Non è stata acquisita alcuna configurazione di gioco
                // si acquisisce la configurazione di gioco stabilita dall'utente
                _minefieldCreator = _settingsController.GetGameConfiguration(out _length, out _height,
                                                                             out _mines, out _modality);

                // si crea un campo minato e una partita opportunamente configurate con le scelte dell'utente
                _minefield       = _minefieldCreator.CreateMinefield(_length, _height, _mines);
                _minesweeperGame = new MinesweeperGame(_minefield, _modality);
                // si crea un gestore eventi per la scoperta di una zona del campo minato
                _minesweeperGame.ZoneUncovered += UpdateInteractableZone;
                // si configurano le zone interagibili e i controlli del form di gioco
                _mainForm.SetInteractableMinefieldSize(_length, _height);
                _interactableZoneUncovered = false;
                SetFormControls();
                // si memorizza lo stato attuale del form delle impostazioni
                _settingsMemento = _settingsController.SaveState();
            }
            else
            {
                // CASO B - Almeno una configurazione di gioco è stata acquisita
                // si acquisisce lo stato attuale del form delle impostazioni
                IMemento newMemento = _settingsController.SaveState();

                // si configura una nuova partita se almeno una zona interagibile è stata scoperta
                // oppure se il vecchio e il nuovo memento delle impostazioni differiscono tra loro
                if (_interactableZoneUncovered || !_settingsMemento.Equals(newMemento))
                {
                    // si acquisisce e si analizza la configurazione di gioco più recente
                    AcquireNewConfiguration();
                    // si configurano le zone interagibili e i controlli del form di gioco
                    _mainForm.SetInteractableMinefieldSize(_length, _height);
                    _interactableZoneUncovered = false;
                    SetFormControls();
                    // si memorizza lo stato attuale del form delle impostazioni
                    _settingsMemento = newMemento;
                }
            }
        }
        // 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 *";
            }
        }