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
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); } } }
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çã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 .)
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
salvar o seu programa e Executar-lo. Ele deve exibir um formulário com ícones aleatórios Atribuído a cada Rótulo.
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
Agora, pare o programa e Descomente a linha de código dentro de foreachloop.
iconLabel.ForeColor = iconLabel.BackColor
iconLabel.ForeColor = iconLabel.BackColor;
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
Para ir para o Próximo tutorial passo, consulte Etapa 4: Adicionar um clique manipulador de Evento a cada etiqueta.
Para Retorno à etapa anterior tutorial, consulte Etapa 2: Adicionar um objeto de Aleatório e uma lista de ícones.