// Metodo che restituisce una breve descrizione della modalità di gioco specificata public static string DescribeModality(GameModality modality) { // descrizione della modalità di gioco string modalityDescription = null; // si stabilisce quale descrizione restituire switch (modality) { case GameModality.Classica: modalityDescription = "Alla prima mina colpita si perde la partita"; break; case GameModality.Agevolata: modalityDescription = "Dopo aver colpito " + AttemptsAgevolata + " mine si perde la partita"; break; case GameModality.Semplificata: modalityDescription = "Dopo aver colpito più mine si perde la partita"; break; case GameModality.Sicura: modalityDescription = "Le mine colpite non fanno perdere la partita"; break; } return(modalityDescription); }
// Metodo che crea una nuova partita con le impostazioni specificate public void NewGame(Minefield minefield, GameModality modality) { if (minefield == null) { throw new ArgumentNullException ("Riferimento nullo al campo minato!"); } if (!minefield.AreZonesCoveredAndUnflagged()) { throw new ArgumentException ("Il campo minato ha uno stato iniziale invalido: sono presenti zone scoperte e/o contrassegnate!"); } // acquisizione del campo minato e della modalità di gioco _minefield = minefield; _modality = modality; // creazione di una nuova partita NewGame(); }
// Metodo che determina il numero di tentativi disponibili per la partita private int?SetAttempts(GameModality modality) { // numero totale di tentativi disponibili per la partita int?totalAttempts; // a seconda della modalità scelta si determina il numero totale di tentativi disponibili if (modality == GameModality.Classica) { totalAttempts = AttemptsClassica; } else if (modality == GameModality.Agevolata) { totalAttempts = AttemptsAgevolata; } else if (modality == GameModality.Semplificata) { totalAttempts = (int)(_minefield.Mines * AttemptsRatioSemplificata); // se il numero di tentativi appena calcolato è inferiore al numero di tentativi associato alla // modalità 'agevolata' allora si utilizza quest'ultimo numero per i tentativi disponibili if (totalAttempts < AttemptsAgevolata) { totalAttempts = AttemptsAgevolata; } } else if (modality == GameModality.Sicura) { totalAttempts = null; } else { throw new ArgumentOutOfRangeException ("Selezionata modalità di gioco sconosciuta!"); } return(totalAttempts); }
// Costruttore che genera una partita rispetto al campo minato fornito e alla modalità di gioco scelta public MinesweeperGame(Minefield minefield, GameModality modality) { NewGame(minefield, modality); }