Partilhar via


Etapa 8: Adicionar um método para verificar se o Player ganha

Você criou uma diversão Game, mas precisa de um item adicional. O Game deve participante quando o jogador vence, portanto, você precisará adicionar um **CheckForWinner()**método para verificar se o player ganhas.

Para adicionar um método para verificar se player ganha

  1. Adicionar um **CheckForWinner()**método para seu formulário, sistema autônomo mostra o 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 As Label = TryCast(control, Label)
            If iconLabel IsNot Nothing Then
                If (iconLabel.ForeColor = iconLabel.BackColor) Then
                    Return
                End If
            End If
        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 foreachloop no Visual c# ou For Eachloop em Visual Basic passar por cada rótulo no TableLayoutPanel. Ele usa o operador de igualdade ( ==no Visual c# e =no Visual Basic) para Seleção cor do ícone da cada rótulo para Seleção se ele corresponde ao Segundo plano. Se as cores Coincidir, o ícone permanece invisível e o player ainda não Coincidir ed Todas ícones restantes. Nesse caso, o programa usa um returnDeclaração para ignorar o restante do método. Se o loop por todas as Rótulos sem executar o returnDeclaração, o que significa que todos os ícones foram atendidos. O programa mostra uma MessageBox e, em seguida, chama de do formulário **Close()**método de finalizar o Game.

  2. Próximo, ter o rótulo de chamada de manipulador de Evento de Clicar o Nova **CheckForWinner()**método. Certifique-se de que o programa verifica se há uma vencedora Depois o segundo ícone mostra que player clica. Procurar pela linha onde você pode Conjunto Cor do ícone clicados segunda e, em seguida, chamar o **CheckForWinner()**método direito depois disso, sistema autônomo mostra o 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
        Return
    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;
    }
    
  3. salvar e execute o programa. O Game e combinar Todas ícones. Quando você ganhar, o programa exibe um MessageBox (sistema autônomo mostrado na figura a seguir) e, em seguida, fecha a caixa.

    Jogo da memória com MessageBox

    Jogo da memória com MessageBox

Para continuar ou revisar