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; }
// 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 *"; } }