Partilhar via


Etapa 7: Manter os pares visíveis

O jogo funciona bem, desde que o jogador escolha apenas pares de ícones que não correspondam.Porém, considere o que deve acontecer quando o jogador escolher um par correspondente.Em vez de fazer os ícones desaparecerem ativando o temporizador (usando o método Start()), o jogo deve redefinir a si próprio para que ele não acompanhe mais nenhum rótulo usando as variáveis de referência firstClicked e secondClicked, sem redefinir as cores dos dois rótulos que foram escolhidos.

Para manter os pares visíveis

  1. Adicione a instrução if a seguir ao método do manipulador de eventos label_Click(), próximo do fim do código, logo acima da instrução onde você inicia o temporizador.Observe mais detalhadamente o código enquanto o adiciona ao programa.Leve em consideração como o código 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();
        }
    }
    

    A primeira linha da instrução if que você acabou de adicionar verifica se o ícone no primeiro rótulo que o jogador escolhe é igual ao ícone no segundo rótulo.Se os ícones forem idênticos, o programa executará as três instruções entre as chaves no C# ou as três instruções na instrução if do Visual Basic.As primeiras duas instruções redefinem as variáveis de referência firstClicked e secondClicked para que elas não acompanhem mais nenhum dos rótulos. (Você pode reconhecer essas duas instruções do manipulador de eventos Tick do temporizador.) A terceira instrução é uma instrução return, que orienta o programa a pular o restante das instruções no método sem executá-las.

    Se estiver programando no Visual C#, você deve ter percebido que alguns dos códigos usam um único sinal de igual (=), enquanto outras instruções usam dois sinais de igual (==).Leve em consideração por que = é usado em alguns locais, mas == é usado em outros.

    Esse é um bom exemplo que mostra a diferença.Observe atentamente o código entre os parênteses na instrução if.

    firstClicked.Text = secondClicked.Text
    
    firstClicked.Text == secondClicked.Text
    

    Em seguida, observe atentamente a primeira instrução no bloco de código após a instrução if.

    firstClicked = Nothing
    
    firstClicked = null;
    

    A primeira dessas duas instruções verifica se dois ícones são iguais.Como dois valores estão sendo comparados, o programa Visual C# usa o operador de igualdade ==.A segunda instrução realmente altera o valor (chamado atribuição), definindo a variável de referência firstClicked igual a null para redefini-la.Por esse motivo, ela usa o operador de atribuição = no lugar.O Visual C# usa = para definir valores e == para compará-los.O Visual Basic usa = para atribuição de variável e comparação.

  2. Salve e execute o programa e, em seguida, comece a escolher os ícones no formulário.Se você escolher um par que não corresponda, o evento Tick do temporizador é disparado e ambos os ícones desaparecem.Se você escolher um par correspondente, a nova instrução if será executada e a instrução de retorno fará com que o método pule o código que inicia o temporizador, de modo que o ícone permanece visível, conforme mostrado na imagem a seguir.

    Jogo da memória com pares de ícone visíveis

    Jogo que você cria neste tutorial

Para continuar ou revisar