
Nesta terceira parte, já vamos avançar para a parte prática. O foco desta série não é ensinar programação C#, nem Windows Forms. Portanto, vou partir do princÃpio que quem me acompanha aqui já possui conhecimento básico sobre estas tecnologias. Para quem quer aprender um pouco, aqui tem um tutorial básico da Microsoft sobre Windows Forms. Aqui tem mais coisas.
Para começarmos, será necessário criar um novo projeto do tipo Windows Application no Visual Studio 2008. Ao criar um novo projeto, cria-se uma Solution que abriga este projeto.
Uma solução recém criada já apresenta um formulário chamado Form1. Podemos utilizar ele mesmo.
Com o XNA 3.1 devidamente instalado, vamos importar a DLL Microsoft.XNA.Framework e Microsoft.XNA.Framework.Game.
Para isso, clique com o botão direito na pasta References no menu Solution Explorer e selecione Add Reference. Aguarde a janela aparecer (demora!) e na aba .Net, selecione as DLLs Microsoft.XNA.Framework e Microsoft.XNA.Framework.Game nas versões 3.1.0.0.
Abra o ToolBox (CTRL + W + X) e, na entrada All Windows Forms, procure e arraste para o formulário o controle chamado PictureBox e outro chamado Timer.
Selecione o PictureBox e na aba Properties (F4), mude a propriedade Size para 32;32. Na propriedade BackgroundImage, clique e em Local Resource, navegue nos diretórios e selecione uma imagem qualquer. Sugiro salvar e usar esta aqui:
![]()
Agora vamos mexer no Timer. Selecione lá embaixo o timer1, que foi criado ao arrastar o Timer. Em Properties (F4), mude o Interval para 20 (50Hz). Mude também o Enabled para true;
Agora vamos implementar o evento Timer.Tick. Ainda em Properties, no topo da aba existe uma figurinha em forma de raio. Clique nela. Aqui temos os eventos disponÃveis para o Timer. O único disponÃvel é o Tick. Clique duas vezes na célula vazia e o Visual Studio vai criar o evento e a função associada ao evento (event handler), chamada timer1_Tick().
Todo o código fica neste arquivo.
Vamos escrever algumas coisas por aqui. Primeiramente, vamos criar um objeto do tipo KeyboardState. Logo acima da linha public Form1(), escreva:
Agora, dentro do bloco timer1_Tick(), escreva:
O que estou fazendo acima é a cada 20 milisegundos:
1 - Capturar o estado do teclado (teclas pressionadas);
2 - Verificar se a tecla pressionda é a Seta Para Cima;
2.1 - Se sim, a localização do pictureBox1 muda para um novo ponto cartesiano, onde o eixo X mantém o mesmo valor, e o Y é decrescido de um pixel.
O problema desses controles é que a posição é definida por um objeto Point que une o X e o Y. Então eu não posso simplesmente decrementar diretamente o Y, e sim recriar o Point, repassando o X e o Y do jeito que eu quero.
O interessante é que quanto mais para cima, menor é o Y. Ou seja, o ponto X=0 e Y=0 é o canto superior esquerdo do formulário. Isso vale para qualquer aplicação baseada em pixels na tela. Até o paint.
Agora vamos rodar o programa. Pressione F5 para compilar e rodar. Se tudo deu certo, o formulario e a figura aparecerão na tela. E ainda se moverá para cima enquanto a tecla Seta Para Cima estiver pressionada.
Podemos fechar a janela e continuar o programa.
Ainda dentro do timer1_Tick(), vamos aplicar todas as direções.
Basta escrever o restante:
Agora rode novamente e experimente mover a bola para todas as direções.
Por enquanto é isso. No proximo post, vamos aplicar aceleração e outras coisas a mais.
Tags: C#, Desenvolvimento, Jogos, Windows Forms, WinForms Lander
Categorias: Desenvolvimento | No Comments »