Share via


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

  1. 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.

  2. 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

    Juego que creará en este tutorial

Para continuar o revisar