Partilhar via


Etapa 3: Atribuir um ícone aleatório para cada rótulo

Se o Game sempre ocultar os ícones mesmos nos mesmos locais, não é difícil. Você precisa atribuir os ícones aleatoriamente para os controles de Rótulo no formulário. Para fazer isso, você Adicionar um **AssignIconsToSquares()**método.

Para atribuir um ícone aleatório a cada Rótulo

  1. Antes de Adicionando o código a seguir, considere como o método funciona. Não há uma nova palavra-chave: foreachno Visual c# eFor Eachin Visual Basic. (Uma das linhas é comentada proposital, que é explicado no participante deste procedimento.)

    ''' <summary>
    ''' Assign each icon from the list of icons to a random square
    ''' </summary>
    ''' <remarks></remarks>
    Private Sub AssignIconsToSquares()
    
        ' The TableLayoutPanel has 16 labels,
        ' and the icon list has 16 icons,
        ' so an icon is pulled at random from the list
        ' and added to each label
        For Each control In TableLayoutPanel1.Controls
            Dim iconLabel As Label = TryCast(control, Label)
            If iconLabel IsNot Nothing Then
                Dim randomNumber As Integer = random.Next(icons.Count)
                iconLabel.Text = icons.ElementAt(randomNumber)
                ' iconLabel.ForeColor = iconLabel.BackColor
                icons.RemoveAt(randomNumber)
            End If
        Next
    
    End Sub
    
    /// <summary>
    /// Assign each icon from the list of icons to a random square
    /// </summary>
    private void AssignIconsToSquares()
    {
        // The TableLayoutPanel has 16 labels,
        // and the icon list has 16 icons,
        // so an icon is pulled at random from the list
        // and added to each label
        foreach (Control control in tableLayoutPanel1.Controls)
        {
            Label iconLabel = control as Label;
            if (iconLabel != null)
            {
                int randomNumber = random.Next(icons.Count);
                iconLabel.Text = icons[randomNumber];
                // iconLabel.ForeColor = iconLabel.BackColor;
                icons.RemoveAt(randomNumber);
            }
        }
    } 
    
  2. Adicione o **AssignIconsToSquares()**método sistema autônomo mostrado na etapa anterior. Você pode colocá-lo logo abaixo do código você Adicionado em Etapa 2: Adicionar um objeto de Aleatório e uma lista de ícones.

    Há algo Nova no seu **AssignIconsToSquares()**método: um foreachloop no Visual c# e For Eachem Visual Basic. Você usa um foreachloop a a qualquer hora que você deseja fazer a mesma ação repetidamente. Nesse caso, você deseja executar sistema autônomo instruções a mesmas para cada Rótulo em seu TableLayoutPanel, conforme explicado pelo código a seguir.

    For Each control In TableLayoutPanel1.Controls
        ' The statements you want to execute 
        ' for each label go here
        ' The statements use iconLabel to access 
        ' each label's properties and methods
    Next
    
    foreach (Control control in tableLayoutPanel1.Controls)
    {
        // The statements you want to execute 
        // for each label go here
        // The statements use iconLabel to access 
        // each label's properties and methods
    }
    
    ObservaçãoObservação

    Os nomes iconLabel e controle são usados porque eles são descritivos. Você poderia substituir esses nomes com qualquer nome e ele funcionaria exatamente da mesma (sistema autônomo longa sistema autônomo você alterou o nome de cada Declaração entre chaves).

    O **AssignIconsToSquares()**método percorre cada do rótulo de TableLayoutPanel de controle e executa as mesmas instruções para cada um deles. Essas instruções extrair um ícone aleatório na lista que você adicionou no Etapa 2: Adicionar um objeto de Aleatório e uma lista de ícones. (É por isso que incluídas Dois de cada ícone na lista, portanto, seria um emparelhar de ícones Atribuído a controles de Rótulo aleatório .)

  3. Você precisa chamar o **AssignIconsToSquares()**método sistema autônomo logo sistema autônomo o programa seja iniciado. Se escrever o código do Visual c#, Adicionar uma Declaração logo abaixo da chamada para o **InitializeComponent()**método no Form1construtor, para que seu formulário chama o Nova método para configurar-se antes que ele é mostrado.

    public Form1()
    {
        InitializeComponent();
    
        AssignIconsToSquares();
    }
    

    Para Visual Basic, primeiro adicione o construtor e, em seguida, adicione a chamada do método para o construtor. Antes do **AssignIconsToSquares()**método recém-Criado em em, comece Digitação o código Public Sub New(). Quando você pressiona a tecla Inserir para ir para a próxima linha, IntelliSense verifique o código Próximo são exibidos Concluído o construtor.

    Public Sub New()
        ' This call is required by Windows Form Designer
        InitializeComponent()
        ' Add any initialization after the InitializeComponent() call
    End Sub
    

    Adicione o **AssignIconsToSquares()**chamada de método para que seu construtor a aparência a seguir.

    Public Sub New()
        ' This call is required by Windows Form Designer
        InitializeComponent()
        ' Add any initialization after the InitializeComponent() call
        AssignIconsToSquares()
    End Sub
    
  4. salvar o seu programa e Executar-lo. Ele deve exibir um formulário com ícones aleatórios Atribuído a cada Rótulo.

  5. Feche o programa e, em seguida Executar-lo novamente. Agora, ícones Diferente são Atribuído a cada Rótulo, sistema autônomo msistema autônomotrado no exemplo a seguir Imagem.

    Jogo da memória com ícones aleatórios

    Jogo da memória com ícones aleatórios

  6. Agora, pare o programa e Descomente a linha de código dentro de foreachloop.

    iconLabel.ForeColor = iconLabel.BackColor
    
    iconLabel.ForeColor = iconLabel.BackColor;
    
  7. Clicar no Botão da Barra de Ferramentas Salvar Tudo para salvar o seu programa e, em seguida, executá-lo. Os ícones que aparentemente desapareceram — apenas um Segundo plano azul é exibida. No entanto, os ícones são atribuídos aleatoriamente e ainda estão lá. sistema autônomo sistema autônomo ícones são a mesma cor do Segundo plano, eles estão invisíveis.

Para continuar ou revisar