Etapa 8: Adicionar um método para verificar se o Player ganha
Você criou um divertido jogo, mas ele precisa de um item adicional.O jogo deve terminar quando o player wins, portanto, você precisará adicionar uma CheckForWinner() método para verificar se o player ganha.
Para adicionar um método para verificar se o player ganha
Adicionar um CheckForWinner() método para seu formulário, conforme mostrado no código a seguir.
''' <summary> ''' Check every icon to see if it is matched, by ''' comparing its foreground color to its background color. ''' If all of the icons are matched, the player wins ''' </summary> Private Sub CheckForWinner() ' Go through all of the labels in the TableLayoutPanel, ' checking each one to see if its icon is matched For Each control In TableLayoutPanel1.Controls Dim iconLabel = TryCast(control, Label) If iconLabel IsNot Nothing AndAlso iconLabel.ForeColor = iconLabel.BackColor Then Exit Sub Next ' If the loop didn't return, it didn't find ' any unmatched icons ' That means the user won. Show a message and close the form MessageBox.Show("You matched all the icons!", "Congratulations") Close() End Sub
/// <summary> /// Check every icon to see if it is matched, by /// comparing its foreground color to its background color. /// If all of the icons are matched, the player wins /// </summary> private void CheckForWinner() { // Go through all of the labels in the TableLayoutPanel, // checking each one to see if its icon is matched foreach (Control control in tableLayoutPanel1.Controls) { Label iconLabel = control as Label; if (iconLabel != null) { if (iconLabel.ForeColor == iconLabel.BackColor) return; } } // If the loop didn’t return, it didn't find // any unmatched icons // That means the user won. Show a message and close the form MessageBox.Show("You matched all the icons!", "Congratulations"); Close(); }
O método usa outro foreach loop no Visual C# ou For Each loop no Visual Basic passar por cada rótulo o TableLayoutPanel.Ele usa o operador de igualdade (== no Visual C# e = em Visual Basic) para verificar a cor do ícone do cada rótulo para verificar se ela coincide com o plano de fundo.Se as cores coincidirem, o ícone permanece invisível e o player ainda não corresponde a todos os ícones restantes.Nesse caso, o programa usa um return a instrução para ignorar o restante do método.Se obtém o loop por todos os rótulos sem executar o return instrução, o que significa que todos os ícones foram atendidos.O programa mostra uma MessageBox e, em seguida, chama o formulário Close() método para encerrar o jogo.
Em seguida, ter clique no rótulo manipulador de eventos, chamar a nova CheckForWinner() método.Certifique-se de que seu programa verifica uma vencedora após o segundo ícone mostra que o player clica.Procure a linha onde você definir a cor do ícone clicados segundo e, em seguida, chame o CheckForWinner() método direito depois disso, conforme mostrado no código a seguir.
' 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 ' Check to see if the player won CheckForWinner() ' 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 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; // Check to see if the player won CheckForWinner(); // 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; }
Salve e execute o programa.O jogo e combinar todos os ícones.Quando você a vencer, o programa exibe um MessageBox (conforme mostrado na figura a seguir) e, em seguida, fecha a caixa.
Jogo da memória com MessageBox
Para continuar ou revisar
Para ir para a próxima etapa do tutorial, consulte Etapa 9: Tente outros recursos.
Para retornar para a etapa anterior do tutorial, consulte Etapa 7: Manter os pares visíveis.