Nota
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare ad accedere o modificare le directory.
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare a modificare le directory.
Il programma deve tenere traccia dei controlli etichetta scelti dal giocatore.Al momento il programma mostra tutte le etichette scelte dal giocatore,ma è possibile modificare questa impostazione.Una volta scelta la prima etichetta, il programma dovrebbe visualizzarne l'icona.Una volta scelta la seconda etichetta, il programma dovrebbe visualizzare entrambe le icone per un istante, quindi renderle nuovamente invisibili.Il programma terrà ora traccia del controllo etichetta scelto per primo e per secondo utilizzando variabili di riferimento.
Per aggiungere riferimenti alle etichette
Aggiungere i riferimenti alle etichette nel form utilizzando il codice seguente.
Public Class Form1 ' firstClicked points to the first Label control ' that the player clicks, but it will be Nothing ' if the player hasn't clicked a label yet Private firstClicked As Label = Nothing ' secondClicked points to the second Label control ' that the player clicks Private secondClicked As Label = Nothingpublic partial class Form1 : Form { // firstClicked points to the first Label control // that the player clicks, but it will be null // if the player hasn't clicked a label yet Label firstClicked = null; // secondClicked points to the second Label control // that the player clicks Label secondClicked = null;Queste variabili di riferimento sono simili alle istruzioni utilizzate in precedenza per aggiungere oggetti (ad esempio oggetti Timer, List e Random) al form.Tuttavia, tramite queste istruzioni non vengono visualizzati due controlli etichetta aggiuntivi nel form poiché, nessuna delle due istruzioni contiene la parola chiava new.Senza la parola chiave new non viene creato alcun oggetto.Per questo motivo firstClicked e secondClicked sono definiti variabili di riferimento: tengono semplicemente traccia di (o fanno riferimento a) oggetti Label.
Quando una variabile non tiene traccia di un oggetto, viene impostata su un valore riservato: null in Visual C# e Nothing in Visual Basic.Quando il programma viene avviato, quindi, firstClicked e secondClicked vengono impostati su null o Nothing, il che significa che le variabili non tengono traccia di alcun oggetto.
Modificare il gestore degli eventi Click per utilizzare la nuova variabile di riferimento firstClicked.Rimuovere l'ultima istruzione nel metodo del gestore degli eventi label_Click() (clickedLabel.ForeColor = Color.Black;) e sostituirla con l'istruzione if seguente. Assicurarsi di includere il commento e l'intera istruzione if.
''' <summary> ''' Every label's Click event is handled by this event handler ''' </summary> ''' <param name="sender">The label that was clicked</param> ''' <param name="e"></param> ''' <remarks></remarks> Private Sub label_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Label9.Click, Label8.Click, Label7.Click, Label6.Click, Label5.Click, Label4.Click, Label3.Click, Label2.Click, Label16.Click, Label15.Click, Label14.Click, Label13.Click, Label12.Click, Label11.Click, Label10.Click, Label1.Click Dim clickedLabel = TryCast(sender, Label) If clickedLabel IsNot Nothing Then ' If the clicked label is black, the player clicked ' an icon that's already been revealed -- ' ignore the click If clickedLabel.ForeColor = Color.Black Then Exit Sub ' If firstClicked is Nothing, this is the first icon ' in the pair that the player clicked, ' so set firstClicked to the label that the player ' clicked, change its color to black, and return If firstClicked Is Nothing Then firstClicked = clickedLabel firstClicked.ForeColor = Color.Black Exit Sub End If End If End Sub/// <summary> /// Every label's Click event is handled by this event handler /// </summary> /// <param name="sender">The label that was clicked</param> /// <param name="e"></param> private void label_Click(object sender, EventArgs e) { Label clickedLabel = sender as Label; if (clickedLabel != null) { // If the clicked label is black, the player clicked // an icon that's already been revealed -- // ignore the click if (clickedLabel.ForeColor == Color.Black) return; // If firstClicked is null, this is the first icon // in the pair that the player clicked, // so set firstClicked to the label that the player // clicked, change its color to black, and return if (firstClicked == null) { firstClicked = clickedLabel; firstClicked.ForeColor = Color.Black; return; } } }Salvare ed eseguire il programma.Scegliere uno dei controlli etichetta; verrà visualizzata la relativa icona.
Scegliere il controllo etichetta successivo. Non accadrà nulla.Il programma sta già tenendo traccia della prima etichetta scelta dal giocatore, pertanto firstClicked non è uguale a null in Visual C# o Nothing in Visual Basic.Quando l'istruzione if controlla firstClicked per stabilire se sia uguale a null o Nothing, rileva che non lo è e non esegue le istruzioni contenute nell'istruzione if.Per cui soltanto la prima icona scelta diventa nera, mentre le altre icone sono invisibili, come mostrato nell'immagine seguente.
Gioco delle coppie con un'icona visualizzata
.png)
Questa situazione verrà corretta nel passaggio successivo dell'esercitazione aggiungendo un controllo Timer.
Per continuare o rivedere l'esercitazione
Per andare al passaggio successivo dell'esercitazione, vedere Passaggio 6: aggiungere un timer.
Per tornare al passaggio precedente dell'esercitazione, vedere Passaggio 4: aggiungere un gestore degli eventi Click a ogni etichetta.