Developers BR

Um Blog sobre XNA, SilverLight e CIA.

[Guia do Iniciante Dia #7] Movendo a imagem (A classe Keyboard)

leave a comment »


Olá! Hoje nós vamos avançar um pouco mais. Iremos mover uma imagem usando um teclado! Prepare o Visual Studio e vamos nessa!

Antes de começar, queria pedir para participarem da enquete ai ao lado, seria muito bom ter a sua opinião.

Vamos usar uma imagem pequena para testes. Salve a seguinte imagem:

kakashinho

Agora você deve adicionar a imagem na pasta Content. (Você já deve saber fazer isso. Se ainda não sabe, veja o seguinte tutorial: Clique! )

Após ter adicionado a imagem acima. Nós devemos criar o que já foi abordado no ultimo tutorial.

Ou seja, após criar um novo projeto, devemos criar uma variavel Vector2 (Posição) e Texture2D (Imagem) e por ultimo uma coisa nova, uma váriavel KeyboardState.

O que é KeyBoardState?

Esta é a classe que irá permitir pegar o estado do teclado toda vez que precisarmos!

Então nosso topo da classe (antes do construtor) ficará assim:

public class Game1 : Microsoft.Xna.Framework.Game
{
GraphicsDeviceManager graphics;
SpriteBatch spriteBatch;

Vector2 Posicao;
Texture2D Textura;
KeyboardState estadoTeclado
;

public Game1()
{

A parte em negrito é o que você deverá adicionar, o que não está em negrito é só para você se localizar =D

Ok, vamos carregar a imagem e inicializar as posições no método LoadContent().

protected override void LoadContent()
{
// Create a new SpriteBatch, which can be used to draw textures.
spriteBatch = new SpriteBatch(GraphicsDevice);

Textura = Content.Load<Texture2D>(“kakashinho”);
Posicao = new Vector2(100, 100);


// TODO: use this.Content to load your game content here
}

Lembrando que o que está em negrito é o que deve ser digitado, o resto é só para se localizar.

Agora a novidade vem no método Update(). Não há segredos! Faremos o personagem se mover para a direita – esquerda E cima – baixo.

Antes vou passar a lógica para você, confira:

-> Pega o ultimo estado do teclado

-> Se o botão para a Direita estiver sendo pressionado

— Adiciona 2 pixels na posição do personagem em X

-> Mas se o botão para a Esquerda estiver sendo pressionado

— Diminui 2 pixels da posição do personagem em X

-> Se o botão para Cima estiver sendo pressionado

— Diminui 2 pixels da posição do personagem em Y

-> Mas se o botão para Baixo estiver sendo pressionado

— Aumenta 2 pixels na posição do personagem em Y

Agora vamos passa isso para o código. No método Update() digite o seguinte:

protected override void Update(GameTime gameTime)
{
estadoTeclado = Keyboard.GetState();

if (estadoTeclado.IsKeyDown(Keys.Right) == true)
{
Posicao.X += 2;
}
else if (estadoTeclado.IsKeyDown(Keys.Left) == true)
{
Posicao.X -= 2;
}

if (estadoTeclado.IsKeyDown(Keys.Up) == true)
{
Posicao.Y -= 2;
}
else if (estadoTeclado.IsKeyDown(Keys.Down) == true)
{
Posicao.Y += 2;
}

base.Update(gameTime);
}

É muito simples, para pegar o estado Atual do teclado você deve usar o seguinte método:

estadoTeclado = Keyboard.GetState();

Ele irá retornar um Array com as teclas que estão sendo pressionadas e então passará o Array para “estadoTeclado” no nosso caso.

Tendo isso em mãos é só usar if’s e else’s para fazer as verificações.

Veja os métodos de uma váriavel KeyboardState e um exemplo de cada:

Método

O que faz

IsKeyDown(Keys k)

Verifica se k, no caso, está pressionado.

IsKeyUp(Keys k)

Verifica se k, no caso, NÃO está sendo pressionado.

OBS: Ambas as funções retornam true ou false, então é fácil usa-las nos IF’s e ELSE’s.

Exemplo IsKeyDown:

if (estadoTeclado.IsKeyDown(Keys.Up) == true)

// Verifica se a tecla está pressionada

Exemplo IsKeyUp:

if(estadoTeclado.IsKeyUp(Keys.Up) == true)

// Verifica se não está sendo pressionada

Voltando…

Agora voltando ao exemplo … Só falta o código para desenhar na tela. Digite o seguinte no método Draw().

protected override void Draw(GameTime gameTime)
{
GraphicsDevice.Clear(Color.White);

spriteBatch.Begin();

spriteBatch.Draw(Textura, Posicao, Color.White);

spriteBatch.End();

base.Draw(gameTime);
}

Teste o programa (F5) e confira os resultados!

Controles: Setas para Direita, Esquerda, Cima e Baixo.

Irei tratar das teclas possiveis em um próximo tutorial, mas você pode explorar as possibilidades substituindo Keys.Up por Keys.A ou Keys.B. Acho que você já captou a mensagem =D

Até a próxima! Abraços.

Anúncios

Written by rafaelangeline

setembro 4, 2009 às 3:31 pm

Publicado em Tutoriais, XNA

Deixe um comentário

Preencha os seus dados abaixo ou clique em um ícone para log in:

Logotipo do WordPress.com

Você está comentando utilizando sua conta WordPress.com. Sair / Alterar )

Imagem do Twitter

Você está comentando utilizando sua conta Twitter. Sair / Alterar )

Foto do Facebook

Você está comentando utilizando sua conta Facebook. Sair / Alterar )

Foto do Google+

Você está comentando utilizando sua conta Google+. Sair / Alterar )

Conectando a %s

%d blogueiros gostam disto: