Commit 1c610560 authored by Alessia-0802's avatar Alessia-0802
Browse files

V.04: Aggiunto commenti nella classe cs

parent f09467f6
Loading
Loading
Loading
Loading
+20 −20
Original line number Diff line number Diff line
@@ -16,9 +16,13 @@ namespace LettereRandom
    /// </summary>
    public partial class MainWindow : Window
    {
        // Random per generare lettere casuali
        private Random rnd = new Random();

        // Per controllare il ciclo asincrono
        private bool inizioCasualitàLettere = true;

        // Parola corrente e lunghezza massima impostate all'inizio del programma
        private string parolaCorrente = string.Empty;
        private int lunghezzaMassima = 0;

@@ -26,9 +30,11 @@ namespace LettereRandom
        {
            InitializeComponent();

            // Avvia il ciclo asincrono
            InizioLoopLetere();
        }

        // Ciclo asincrono per generare lettere casuali 
        private async void InizioLoopLetere()
        {
            while (inizioCasualitàLettere)
@@ -37,12 +43,14 @@ namespace LettereRandom
                char letteraCasuale = (char)rnd.Next('A', 'Z' + 1); // +1 perché il secondo parametro è escluso
                lblLettera.Content = letteraCasuale.ToString();

                await Task.Delay(100);
                await Task.Delay(100); // 100ms di attesa prima di generare la prossima lettera
            }
        }

        // Aggiunge la lettera alla parola
        private void Button_Click(object sender, RoutedEventArgs e)
        {
            // Controllo input
            if (!int.TryParse(txtLunghezza.Text, out lunghezzaMassima) || lunghezzaMassima <=0)
            {
                MessageBox.Show("La lunghezza massima della parola deve essere maggiore di 0", "Errore", 
@@ -53,39 +61,31 @@ namespace LettereRandom
                return;
            }

            // Aggiunge la lettera alla parola corrente
            parolaCorrente += lblLettera.Content.ToString();
            lbloParola.Content = parolaCorrente;

            AggiornaStatoTextBox();
            txtLunghezza.IsEnabled = false; // Disabilita la TextBox

            // Se ha raggiunto la lughezza impostata...
            if (parolaCorrente.Length == lunghezzaMassima)
            {
                lstParole.Items.Add(parolaCorrente);
                lstParole.Items.Add(parolaCorrente); // aggiunge la parola alla lista
                
                parolaCorrente = string.Empty; // Resetta la parola corrente
                lbloParola.Content = string.Empty; // Resetta il label della parola corrente
                parolaCorrente = string.Empty;  // e resetta la parola corrente
                lbloParola.Content = string.Empty;
                
                AggiornaStatoTextBox(); // Aggiorna lo stato della TextBox
                txtLunghezza.IsEnabled = true; // Riabilita la TextBox
            }
        }

        // Metodo per indicare che la textBox è modificabile solo se parolaCorrente è vuota
        private void AggiornaStatoTextBox()
        {
            if (parolaCorrente == string.Empty)
            {
                txtLunghezza.IsEnabled = true; // Abilita la TextBox 
            }
            else
            {
                txtLunghezza.IsEnabled = false; // Disabilita la TextBox
            }
        }

        // Evitare che il loop continui dopo la chiusura della finestra (genererebbe eccezioni)
        // Metodo per evitare che il loop continui dopo la chiusura della finestra
        // può essere chiamato solo da dentro la stessa classe
        protected override void OnClosed(EventArgs e)
        {
            inizioCasualitàLettere = false; // Ferma il loop quando la finestra viene chiusa

            // Chiama il metodo base (dalla classe Window) per assicurarsi che tutte le risorse vengano liberate correttamente
            base.OnClosed(e);
        }
    }