Etapa 6: Adicionar um Timer
Em seguida, você deve adicionar um timer ao jogo correspondente.
Para adicionar um timer.
Vá para a caixa de ferramentas no Windows Forms Designer.Clique duas vezes em Timer (na componentes categoria) e adicione um timer ao formulário, com seu ícone que aparece em uma caixa cinza abaixo do formulário, conforme mostrado na figura a seguir.
Timer
Clique no timer1 ícone para selecionar o timer.Definir o intervalo propriedade 750, mas deixe o Enabled propriedade definida como False.O intervalo propriedade instrui o timer de tempo de espera entre pulsos, para que isso faz com que o temporizador de espera de três quartos do segundo (750 milissegundos) antes de ele aciona seu primeiro evento Tick.Você não deseja que o timer para iniciar quando o programa é iniciado.Nesse caso, use o Start() método para iniciar o cronômetro quando o player clica no segundo rótulo.
Clique duas vezes o Timer o ícone de controle no Windows Forms Designer para adicionar o manipulador de eventos Tick, conforme mostrado no código a seguir.
''' <summary> ''' This timer is started when the player clicks ''' two icons that don't match, ''' so it counts three quarters of a second ''' and then turns itself off and hides both icons ''' </summary> ''' <remarks></remarks> Private Sub Timer1_Tick() Handles Timer1.Tick ' Stop the timer Timer1.Stop() ' Hide both icons firstClicked.ForeColor = firstClicked.BackColor secondClicked.ForeColor = secondClicked.BackColor ' Reset firstClicked and secondClicked ' so the next time a label is ' clicked, the program knows it's the first click firstClicked = Nothing secondClicked = Nothing End Sub
/// <summary> /// This timer is started when the player clicks /// two icons that don't match, /// so it counts three quarters of a second /// and then turns itself off and hides both icons /// </summary> /// <param name="sender"></param> /// <param name="e"></param> private void timer1_Tick(object sender, EventArgs e) { // Stop the timer timer1.Stop(); // Hide both icons firstClicked.ForeColor = firstClicked.BackColor; secondClicked.ForeColor = secondClicked.BackColor; // Reset firstClicked and secondClicked // so the next time a label is // clicked, the program knows it's the first click firstClicked = null; secondClicked = null; }
O manipulador de eventos Tick faz três coisas: primeiro, ele interrompe o timer, chamando o Stop() método.Em seguida, ele usa as duas variáveis de referência, firstClicked e secondClicked, para levar os dois rótulos que o player é clicado e tornar seus ícones invisível novamente.Finalmente, ele redefine a firstClicked e secondClicked fazer referência a variáveis para null no Visual C# e Nothing em Visual Basic.Isso é importante, pois é como o programa redefine ele mesmo.Agora ele é não o acompanhamento de qualquer rótulo controles e ele á pronto para o primeiro de clique do player de novamente.
Observação A Timer o objeto tem um Start() método que inicia o timer, e um Stop() método que interrompe a ele.Quando você configura o temporizador Enabled propriedade para True na Propriedades janela, ele inicia o acionamento assim que o programa começa.Mas quando você abandona define-o como False, ele não é iniciado um tique-taque até sua Start() método é chamado.
Observação Normalmente, um timer dispara seu evento Tick repetidamente, usando o intervalo propriedade para determinar quantos milissegundos de espera entre as escalas.Você deve ter notado como o temporizador Stop() método é chamado dentro do evento Tick.Que coloca o timer em um modo de instantâneo, de modo que quando o Start() método é chamado, ele aguarda o seu intervalo e dispara um único evento Tick.
Para ver o novo temporizador em ação, vá para o editor de código e adicione o seguinte código na parte superior e inferior da label_Click() método manipulador de eventos.(Você está adicionando um if à parte superior e três instruções para a parte inferior; o restante do método permanece o mesmo.)
''' <summary> ''' Every label's Click event is handled by this event handler ''' </summary> ''' <param name="sender">The label that was clicked</param> ''' <param name="e"></param> ''' <remarks></remarks> Private Sub label_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Label9.Click, Label8.Click, Label7.Click, Label6.Click, Label5.Click, Label4.Click, Label3.Click, Label2.Click, Label16.Click, Label15.Click, Label14.Click, Label13.Click, Label12.Click, Label11.Click, Label10.Click, Label1.Click ' The timer is only on after two non-matching ' icons have been shown to the player, ' so ignore any clicks if the timer is running If Timer1.Enabled Then Exit Sub Dim clickedLabel = TryCast(sender, Label) If clickedLabel IsNot Nothing Then ' If the clicked label is black, the player clicked ' an icon that's already been revealed -- ' ignore the click If clickedLabel.ForeColor = Color.Black Then Exit Sub ' If firstClicked is Nothing, this is the first icon ' in the pair that the player clicked, ' so set firstClicked to the label that the player ' clicked, change its color to black, and return If firstClicked Is Nothing Then firstClicked = clickedLabel firstClicked.ForeColor = Color.Black Exit Sub End If ' 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 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
/// <summary> /// Every label's Click event is handled by this event handler /// </summary> /// <param name="sender">The label that was clicked</param> /// <param name="e"></param> private void label_Click(object sender, EventArgs e) { // The timer is only on after two non-matching // icons have been shown to the player, // so ignore any clicks if the timer is running if (timer1.Enabled == true) return; Label clickedLabel = sender as Label; if (clickedLabel != null) { // If the clicked label is black, the player clicked // an icon that's already been revealed -- // ignore the click if (clickedLabel.ForeColor == Color.Black) return; // If firstClicked is null, this is the first icon // in the pair that the player clicked, // so set firstClicked to the label that the player // clicked, change its color to black, and return if (firstClicked == null) { firstClicked = clickedLabel; firstClicked.ForeColor = Color.Black; return; } // 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 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(); } }
O código na parte superior do método verifica se o temporizador foi iniciado, verificando a Enabled propriedade.Dessa forma, se o player clicar na primeira e segunda rótulo controles e o timer é iniciado, clicar em um terceiro controle não fará nada.
O código na parte inferior dos conjuntos de método de secondClicked fazer referência a variável para que ele mantém rastro de segunda rótulo que o player é clicado, e ele define a cor do ícone do rótulo que preto para torná-lo visível do controle.Em seguida, ele inicia o timer no modo de um instantâneo, para que ele aguarda 750 milissegundos e dispara o evento Tick.Manipulador de eventos Tick do timer oculta os dois ícones e redefine o firstClicked e secondClicked variáveis de referência para que o formulário está pronto para o player em outro ícone.
Salve e execute o programa.Clique em um ícone, e se torna visível.
Clique em outro ícone.Ele aparece rapidamente, e ambos os ícones desaparecem.Repita isso várias vezes.O formulário agora mantém o controle dos ícones de primeiro e segundo que você clicar e usa o timer para fazer uma pausa antes de fazer com que os ícones desaparecem.
Para continuar ou revisar
Para ir para a próxima etapa do tutorial, consulte Etapa 7: Manter os pares visíveis.
Para retornar para a etapa anterior do tutorial, consulte Etapa 5: Adicionar referências de rótulo.