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
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.
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
Para continuar ou revisar
Para ir para a próxima etapa do tutorial, consulte Etapa 8: Adicionar um método para verificar se o jogador ganhou.
Para retornar à etapa anterior do tutorial, consulte Etapa 6: Adicionar um temporizador.