Paso 7: Mantener visibles los pares
El juego funciona bien siempre y cuando el jugador haga clic solo en los pares de iconos que no coinciden.Sin embargo, piense qué sucedería si el jugador hace clic en una pareja coincidente.En lugar de hacer que los iconos desaparezcan activando el temporizador (con el método Start()), el juego se debería restablecer automáticamente para dejar de realizar el seguimiento de cualquier etiqueta mediante las variables de referencia firstClicked y secondClicked, sin restablecer los colores de las dos etiquetas en las que se hizo clic.
Para mantener las parejas visibles
Agregue la siguiente instrucción if al método de control de eventos label_Click(), casi al final, justo encima de la instrucción donde se inicia el temporizador.Observe el código minuciosamente mientras lo agrega al programa.Observe cómo funciona.
' If the player gets this far, the timer isn't ' running and firstClicked isn't Nothing, ' so this must be the second icon the player clicked ' Set its color to black secondClicked = clickedLabel secondClicked.ForeColor = Color.Black ' If the player clicked two matching icons, keep them ' black and reset firstClicked and secondClicked ' so the player can click another icon If firstClicked.Text = secondClicked.Text Then firstClicked = Nothing secondClicked = Nothing Exit Sub End If ' 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() End If End Sub
// 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 clicked two matching icons, keep them // black and reset firstClicked and secondClicked // so the player can click another icon if (firstClicked.Text == secondClicked.Text) { firstClicked = null; secondClicked = null; return; } // 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(); } }
La primera línea de la instrucción if que acaba de agregar comprueba si el icono de la primera etiqueta en la que el jugador hizo clic es igual que el icono de la segunda etiqueta.Si los iconos son iguales, el programa ejecuta las tres instrucciones entre llaves en C# o las tres instrucciones incluidas en la instrucción if en Visual Basic.Las dos primeras instrucciones restablecen las variables de referencia firstClicked y secondClicked para que no realicen el seguimiento de ninguna de las etiquetas.(Quizás reconozca esas dos instrucciones por el controlador de eventos Tick del temporizador). La tercera es una instrucción return, que indica al programa que omita el resto de las instrucciones del método sin ejecutarlas.
Si programa en Visual C#, quizás haya observado que en una parte del código se usa un solo signo de igualdad (=), mientras que otras instrucciones usan dos (==).Piense por qué se usa = en algunos lugares y == en otros.
Aquí tiene un buen ejemplo donde se ve la diferencia.Observe minuciosamente el código que se encuentra entre paréntesis en la instrucción if.
firstClicked.Text = secondClicked.Text
firstClicked.Text == secondClicked.Text
A continuación, examine con detalle la primera instrucción del bloque de código situado después de la instrucción if.
firstClicked = Nothing
firstClicked = null;
La primera de esas dos instrucciones comprueba si dos iconos son iguales.Dado que se comparan dos valores, el programa de Visual C# usa el operador de igualdad ==.La segunda instrucción en realidad cambia el valor (lo que se conoce como asignación), estableciendo la variable de referencia firstClicked en null para restablecerlo.Por eso se usa en este caso el operador de asignación =.Visual C# usa = para establecer los valores y == para compararlos.En Visual Basic se usa = tanto para la asignación como para la comparación.
Guarde y ejecute el programa, y empiece a hacer clic en el formulario.Si hace clic en una pareja que no coincide, se desencadena el evento Tick del temporizador, y ambos iconos desaparecen.Si hace clic en una pareja coincidente, se ejecuta la nueva instrucción if y la instrucción return hace que el método omita el código que inicia el temporizador, de modo que los iconos se mantengan visibles, como se muestra en la siguiente ilustración.
Juego de formar parejas con pares de iconos visibles
Para continuar o revisar
Para ir al siguiente paso del tutorial, vea Paso 8: Agregar un método para comprobar si el jugador ganó.
Para volver al paso anterior del tutorial, vea Paso 6: Agregar un temporizador.