Etapa 6: Adicionar um timer.
Em seguida, você Adicionar um timer ao Game correspondente.
Para adicionar um timer
Ir para a caixa de ferramentas no Designer de Formulários do Janelas. Clicar Duplo Timer (in theComponentesCateIrria) e adicionar um timer ao formulário, com o ícone que aparece em uma caixa cinza abaixo do formulário, sistema autônomo mostrado na figura a seguir.
Timer
Clicar no ícone de timer1 para Selecione o timer. Conjunto na propriedade intervalo para 750, mas Deixar a propriedade Enabled do Conjunto de Falso. A propriedade do intervalo de informa o timer de tempo de Aguardar entre pulsos, portanto, isso indica que o timer de três quartos do segundo (750 milissegundos) de Aguardar antes que ele é disparado seu primeiro evento Tick. Você não deseja que o timer para iniciar quando o programa for iniciado. Em vez disso, você pode usar o **Start()**método para iniciar o timer quando o player clica no segundo rótulo.
Duas vezes no ícone de controle Timer no Designer de Formulários do Janelas para adicionar as marcas de escala manipulador de Evento, 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; }
As marcas de escala manipulador de Evento faz três coisas: Em primeiro lugar, ele interrompe o timer, chamando o **Stop()**método. Em seguida, ele usa a referência de duas variáveis, firstClickede secondClickedpara tirar os dois rótulos, o player é clicado e tornar invisíveis os ícones novamente. Por fim, ele passará o firstClickede secondClickedvariáveis de referência para nullno Visual c# e Nothingno Visual Basic. Isso é importante porque é que como o programa redefine propriamente dito. Agora ele é não manter o controle de Rótulo controles e está pronto para Primeiro, Clicar do player novamente.
Observação Um Timerobjeto tem um Start()método que inicia o timer e um Stop()método que pára de proprietário. Quando você Conjunto do temporizador propriedade ativado de True na janela de Propriedades, ele é iniciado acionamento assim que o programa começa. Mas quando você deixa ele definido como de Falso, ela não for iniciado ticking até o seu Start()é chamado de método.
Observação Normalmente, um timer é acionado Desligado seu evento Tick repetidamente, usando a propriedade do intervalo de para determinar quantos milissegundos a aguardar entre pulsos. Você deve ter notado como, Stop()método for chamado no evento Tick. do temporizador Que coloca o cronômetro em um modo abreviadode , então, que, quando o o Start()método for chamado, ele aguardará o intervalo e dispara um evento Tick Simples.
Para ver o timer de Nova em ação, Ir para o editor de códigos e adicione o seguinte código à Cima e Parte Parte inferior do **label_Click()**manipulador de Evento método. (Você está adicionando um ifDeclaração para o início e três instruções para baixo; 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 = True) Then Return End If Dim clickedLabel As Label = 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 Return End If ' 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 Return 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 Cima do método verifica se o temporizador foi iniciado, consultando a propriedade do habilitado . Dessa forma, se player clicar os controles de de primeiro e segundo rótulo e o timer é iniciado, clicar em um terceiro controle não fará tudo.
O código na parte inferior do método define o secondClickedvariável de referência para que ela mantém controle sobre o segundo controle Label que o player é clicado e define ícone de cor desse rótulo preto para torná-lo visível. Em seguida, ele é iniciado o timer de um modo de tentativa, de modo que ele aguarda 750 milissegundos e, em seguida, dispara o evento Tick. Manipulador de Evento Tick do timer, em seguida, dois ícones de oculta e redefine o firstClickede secondClickedvariáveis de referência para que o formulário está pronto para o player em outro ícone.
salvar e execute o programa. Clicar no ícone e se torna visível.
Clicar outro ícone. Ela aparece rapidamente e, em seguida, desaparecerem a Ambas os ícones. Repita isso várias vezes. O formulário agora controla dos ícones de primeiro e o segundo Clicar e usa o timer para fazer uma Pausar antes de fazer com que os ícones desaparecem.
Para continuar ou revisar
Para ir para o Próximo tutorial passo, consulte Etapa 7: Manter visível a pares.
Para Retorno à etapa anterior tutorial, consulte Etapa 5: Adicionar referências de rótulo.