// Metodo che aggiorna opportunamente il form principale di gioco in caso di partita persa private void GameLost() { // si acquisiscono le coordinate di posizione delle mine List <Tuple <int, int> > minesCoordinates = _minefield.GetMinesCoordinates(); // si visualizzano le mine non individuate e le zone erroneamente contrassegnate come minate for (int y = 0; y < _height; y++) { for (int x = 0; x < _length; x++) { if (minesCoordinates.Contains(new Tuple <int, int>(x, y))) { // se le coordinate analizzate fanno riferimento a una zona minata ma la corrispondente // zona interagibile non è stata contrassegnata allora lo stato della zona interagibile // viene modificato per indicare una zona minata non individuata if (_mainForm.GetInteractableZoneState(x, y) == InteractableZone.ZoneState.Covered) { _mainForm.SetInteractableZoneState(x, y, InteractableZone.ZoneState.Mined); } } else { // se le coordinate analizzate non fanno riferimento a una zona minata ma la // corrispondente zona interagibile è stata contrassegnata allora lo stato della zona // interagibile viene modificato per indicare una zona erroneamente contrassegnata if (_mainForm.GetInteractableZoneState(x, y) == InteractableZone.ZoneState.Flagged) { _mainForm.SetInteractableZoneState(x, y, InteractableZone.ZoneState.IncorrectlyFlagged); } } } } // numero di mine non contrassegnate come minate al termine della partita int minesNotFlagged = 0; // si conteggiano tutte le zone minate che non sono state contrassegnate al termine della partita for (int y = 0; y < _height; y++) { for (int x = 0; x < _length; x++) { if (_mainForm.GetInteractableZoneState(x, y) == InteractableZone.ZoneState.Mined || _mainForm.GetInteractableZoneState(x, y) == InteractableZone.ZoneState.Exploded) { minesNotFlagged++; } } } // si aggiorna l'etichetta-contatore per indicare la quantità totale di mine non individuate UpdateMinesCounterLabel(minesNotFlagged); // si modifica l'immagine associata al bottone della partita per indicare la sconfitta _mainForm.SetGameButtonImage(Properties.Resources.DefeatButton); }