quarta-feira, 8 de abril de 2009

Visual C++ 2008 Express Edition [#3]

CAPITULO 2: CLICK RACE GAME

Dando continuidade aos primeiros passos no form do visual, vamos aprender mais algumas coisas sobre propriedades e começar com a lógica da coisa. O game da vez é tão fácil quanto ode antes; você terá que ver quantos cliques consegue dar rm um botão em um determinado tempo. Para dificultar teremos dois botões. Nossa tela final será assim:



O funcionamento é o seguinte: Abre o jogo, os dois botões de clicar estão desabilitados. Ao clicar em "Começar" desabilita um botão e ao clicá-lo, ele irá habilitar novamente e desabilitar o outro e assim por diante. Em cima é um contador de cliques.

Comece clicando em Toolbox (), adicione 4 Botões (), 1 Label () e 1 Textbox (). Disponha-os de acordo com a figura acima. Adicione um componente novo, chamado Timer (), que servirá para contar o tempo em que você pode clicar.

Agora vamos mudar as propriedades do nosso game. Clique em Propriedades () e mude:

#Form:
- Text para "CLICK RACE GAME".

# Layer:
- Text para "NÚMERO DE CLICKS:".
- Fonte para tamanho "12".

# Textbox:
- Textalign para "Center"
- ReadOnly para "True"

Feito isso seu form estará igual ao meu, acima citado. Então vamos para a lógica:

0) Adicione uma variável global inteira, para contar os cliques:

private:
///
/// Required designer variable.
///

int click;


1) Duplo clique no form (em qualquer local cinza da janela):

private: System::Void Form1_Load(System::Object^ sender, System::EventArgs^ e) {
click = 0; //Zera contador de click
button1->Enabled = false; //Congela botão de clicar 1
button2->Enabled = false; //Congela botão de clicar 2;
}

2) Duplo clique no botão "Começar":

private: System::Void button3_Click(System::Object^ sender, System::EventArgs^ e) {
button1->Enabled = true; //Descongela botão de clicar 1
button2->Enabled = false; //Congela botão de clicar 2
button3->Enabled = false; //Congela botão de Começar
timer1->Interval = 30000; //Conta de 30 em 30 segundos
timer1->Enabled = true; //Habilita o timer
}

3) Duplo clique em "Timer":

private: System::Void timer1_Tick(System::Object^ sender, System::EventArgs^ e) {
timer1->Enabled = false; //Desliga timer
button1->Enabled = false; //Congela botão de clicar 1
button2->Enabled = false; //Congela botão de clicar 2
}

4) Duplo click no primeiro botão de clicar (esquerda):

private: System::Void button1_Click(System::Object^ sender, System::EventArgs^ e) {
click++; //Incrementa um click
button1->Enabled = false; //Congela botão de clicar 1
button2->Enabled = true; //Descongela botão de clicar 2
textBox1->Text = click.ToString(); //Escreve o número de clicks
}

5) Duplo click no segundo botão de licar (direita):

private: System::Void button2_Click(System::Object^ sender, System::EventArgs^ e) {
click++; //Incrementa um click
button1->Enabled = true; //Descongela botão de clicar 1
button2->Enabled = false; //Congela botão de clicar 2
textBox1->Text = click.ToString(); //Escreve o número de clicks
}

5) Duplo clique em "Sair":

private: System::Void button4_Click(System::Object^ sender, System::EventArgs^ e) {
Close(); //Sair do programa
}


No final, seu código deverá ficar assim:



Feito isso, compile (F7) e rode o programa (F5). Se tudo tiver corrido bem, ele não terá erros:

------ Build started: Project: Programa_2, Configuration: Debug Win32 ------
Compiling...
Programa_2.cpp
Linking...
Embedding manifest...
Build log was saved at "file://c:...\Visual Studio 2008\Projects\Programa_2\Programa_2\Debug\BuildLog.htm"
Programa_2 - 0 error(s), 0 warning(s)
========== Build: 1 succeeded, 0 failed, 0 up-to-date, 0 skipped ==========


Por hoje é só.
Desafio: Adicione outro Textbox () mostrando o tempo em ordem decrescente até congelar o programa. Qualquer dúvida, mail-me.

O aprendizado é a automatização do exercício.

Related Articles

0 comentários:

About us