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.
In questa serie di quattro esercitazioni, si crea un gioco di abbinamento in cui il giocatore abbina coppie di icone nascoste.
Il programma del Gioco di Abbinamento deve tenere traccia dei controlli Label che il giocatore sceglie. Dopo che un giocatore sceglie la prima etichetta, il programma dovrebbe visualizzare l'icona. Dopo aver scelto la seconda etichetta, il programma dovrebbe visualizzare entrambe le icone per un breve periodo di tempo. Nasconde quindi entrambe le icone.
Il programma tiene traccia dell'etichetta che scegli per prima e per seconda usando le variabili di riferimento . Un timer nasconde le icone e controlla per quanto tempo visualizzare le icone
- Aggiungere riferimenti alle etichette.
- Aggiungere un timer.
Prerequisiti
Questa esercitazione si basa sulle esercitazioni precedenti, Creare un'applicazione di gioco corrispondente e Aggiungere icone al gioco corrispondente. Completare prima queste esercitazioni.
Aggiungere riferimenti alle etichette
In questa sezione si aggiungeranno due variabili di riferimento al codice. Mantengono traccia o fanno riferimento agli oggetti Label.
Aggiungete riferimenti alle etichette nel vostro modulo utilizzando il seguente codice in
Form1.cs
oForm1.vb
.public 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;
Se usi C#, inserisci il codice dopo la parentesi graffa di apertura e subito dopo la dichiarazione di classe (public partial class Form1 : Form
). Se si usa Visual Basic, inserire il codice subito dopo la dichiarazione di classe (Public Class Form1
).
Queste istruzioni non causano la visualizzazione dei controlli Label nel form perché non è presente alcuna parola chiave new
.
All'avvio del programma, sia firstClicked
che secondClicked
sono impostati su null
per C# o Nothing
per Visual Basic.
Modificare il gestore eventi Click in
Form1.cs
oForm1.vb
per usare la nuova variabile di riferimentofirstClicked
. Rimuovere l'ultima istruzione nel metodo del gestore eventilabel1_Click()
(clickedLabel.ForeColor = Color.Black;
) e sostituirla con l'istruzioneif
come indicato di seguito./// <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 label1_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 e la sua icona appare. Scegliere il controllo etichetta successivo e notare che non accade nulla.
Viene visualizzata solo la prima icona scelta. Le altre icone sono invisibili.
Il programma sta già tenendo traccia della prima etichetta scelta dal giocatore.
Il firstClicked
di riferimento non è null
in C# o Nothing
in Visual Basic.
Quando l'istruzione if
rileva che firstClicked
non è uguale a null
o Nothing
, esegue le istruzioni .
Aggiungere un timer
L'app Matching Game usa un controllo Timer. Un timer attende e quindi genera un evento, denominato tick . Un timer può avviare un'azione o ripetere regolarmente un'azione.
Nel programma il timer consente a un giocatore di scegliere due icone. Se le icone non corrispondono, nasconde nuovamente le due icone dopo un breve periodo di tempo.
Selezionare la scheda Toolbox nella categoria Componenti, fare doppio clic o trascinare il componente Timer nel modulo. L'icona del timer, denominata timer1, viene visualizzata in uno spazio sotto il form.
Selezionare l'icona Timer1 per selezionare il timer. Nella finestra Proprietà selezionare il pulsante Proprietà per visualizzare le proprietà.
Impostare la proprietà Interval su 750, ovvero 750 millisecondi.
La proprietà Interval indica al timer il tempo di attesa tra un tick e l'altro, quando viene attivato l'evento Tick. Il programma chiama il metodo Start() per avviare il timer dopo che il giocatore sceglie la seconda etichetta.
Scegliere l'icona del controllo timer e quindi premere INVIOoppure fare doppio clic sul timer. L'IDE aggiunge un gestore eventi Tick vuoto a
Form1.cs
oForm1.vb
. Sostituire il codice con il codice seguente./// <summary> /// This timer is started when the player clicks /// two icons that don't match, /// so it counts three quarters of a second /// and then turns itself off and hides both icons /// </summary> /// <param name="sender"></param> /// <param name="e"></param> private void timer1_Tick(object sender, EventArgs e) { // Stop the timer timer1.Stop(); // Hide both icons firstClicked.ForeColor = firstClicked.BackColor; secondClicked.ForeColor = secondClicked.BackColor; // Reset firstClicked and secondClicked // so the next time a label is // clicked, the program knows it's the first click firstClicked = null; secondClicked = null; }
Il gestore eventi Tick esegue tre operazioni:
- Verifica che il timer non sia in esecuzione chiamando il metodo Stop().
- Usa due variabili di riferimento,
firstClicked
esecondClicked
, per rendere le icone delle due etichette che il giocatore ha scelto di nuovo invisibile. - Reimposta le variabili di riferimento
firstClicked
esecondClicked
sunull
in C# eNothing
in Visual Basic.
Passare all'editor di codice e aggiungere codice all'inizio e alla fine del metodo del gestore eventi
label1_Click()
inForm1.cs
oForm1.vb
. Questo codice verificherà se il timer è abilitato, imposta la variabile di riferimentosecondClicked
e avvia il timer. Il metodo del gestore eventilabel1_Click()
ora è simile al seguente:/// <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 label1_Click(object sender, EventArgs e) { // The timer is only on after two non-matching // icons have been shown to the player, // so ignore any clicks if the timer is running if (timer1.Enabled == true) return; 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; } // If the player gets this far, the timer isn't // running and firstClicked isn't null, // so this must be the second icon the player clicked // Set its color to black secondClicked = clickedLabel; secondClicked.ForeColor = Color.Black; // If the player gets this far, the player // clicked two different icons, so start the // timer (which will wait three quarters of // a second, and then hide the icons) timer1.Start(); } }
- Il codice nella parte superiore del metodo controlla se il timer è stato avviato controllando il valore della proprietà Enabled. Se il giocatore sceglie i primi due controlli 'Label' e il timer viene avviato, selezionare un terzo controllo 'Label' non farà nulla.
- Il codice nella parte inferiore del metodo imposta la variabile di riferimento
secondClicked
per tenere traccia del secondo controllo Label. Imposta quindi il colore dell'icona dell'etichetta su nero per renderlo visibile. Avvia quindi il timer in modalità singola, in modo che attenda 750 millisecondi e quindi attiva un singolo tick. Il gestore eventi Tick del timer nasconde le due icone e reimposta le variabili di riferimentofirstClicked
esecondClicked
. Il modulo è pronto per consentire al giocatore di scegliere un'altra coppia di icone.
Nota
Se si copia e incolla il blocco di codice label1_Click()
anziché immetterlo manualmente, assicurarsi di sostituire il codice label1_Click()
esistente.
In caso contrario, si otterrà un blocco di codice duplicato.
- Salvare ed eseguire il programma. Selezionare un quadrato e l'icona diventa visibile. Scegli un altro quadrato. L'icona viene visualizzata brevemente e quindi entrambe le icone scompaiono.
Il programma ora tiene traccia delle prime e delle seconde icone scelte. Usa il timer per sospendere prima di far scomparire le icone.
Passaggi successivi
Avanza al tutorial successivo per imparare come completare il Matching Game.