Usar o Teclado como Input em XNA Game Studio 4.0

No seguimento dos posts anteriores sobre a Minhas experiências com XNA Game Studio 4.0 venho hoje mostrar os meus avanços no que toca a programação usando esta framework e a linguagem de programação C#.
Em qualquer jogo tem que haver uma forma de input de dados de modo a o utilizador poder interagir com o jogo, e geralmente isso é feito através do rato e do teclado, sendo estes utilizados para movimentar o objecto dentro do jogo.
o código que usei nesta experiência foi:
Program.cs
using System; namespace First_Move { #if WINDOWS || XBOX static class Program { static void Main(string[] args) { using (Game1 game = new Game1()) { game.Run(); } } } #endif } |
Game1.cs
using Microsoft.Xna.Framework; using Microsoft.Xna.Framework.Audio; using Microsoft.Xna.Framework.Content; using Microsoft.Xna.Framework.GamerServices; using Microsoft.Xna.Framework.Graphics; using Microsoft.Xna.Framework.Input; using Microsoft.Xna.Framework.Media; namespace First_Move { public class Game1 : Microsoft.Xna.Framework.Game { GraphicsDeviceManager graphics; SpriteBatch spriteBatch; // Textura que vai ser desenhada na ecrã Texture2D Bot; // Posicao da textura na tela. x = 100, y = 100 Vector2 position = new Vector2(100, 100); // Teclado a ser usado KeyboardState keysboardState; // A velocidade do movimento da textura float speed = 5.0f; public Game1() { graphics = new GraphicsDeviceManager(this); Content.RootDirectory = "Content"; } protected override void Initialize() { base.Initialize(); } protected override void LoadContent() { spriteBatch = new SpriteBatch(GraphicsDevice); // Carregar a textura do Bot .PNG Bot = Content.Load("Idle"); } protected override void UnloadContent() { } protected override void Update(GameTime gameTime) { // Declaramos o teclado keysboardState = Keyboard.GetState(); // Tecla para cima if (keysboardState.IsKeyDown(Keys.Up)) { position.Y -= speed; } // Tecla para baixo if (keysboardState.IsKeyDown(Keys.Down)) { position.Y += speed; } // Tecla para esquerda if (keysboardState.IsKeyDown(Keys.Left)) { position.X -= speed; } // Tecla para direita if (keysboardState.IsKeyDown(Keys.Right)) { position.X += speed; } base.Update(gameTime); } protected override void Draw(GameTime gameTime) { GraphicsDevice.Clear(Color.CornflowerBlue); GraphicsDevice.Clear(Color.CornflowerBlue); spriteBatch.Begin(); spriteBatch.Draw(Bot, position, Color.White); spriteBatch.End(); base.Draw(gameTime); base.Draw(gameTime); } } } |
É de salientar que é necessário carregar a imagem para para o Content() previamente de modo a que esta possa ser apresentada no ecrã.
Apesar de esta experiência ainda ser muito básica e rudimentar já me está a aguçar a curiosidade sobre a plataforma.
O próximo passo é delimitar as extremidades do ecrã para que o pequeno boneco não ultrapasse esses limites e deixe de ser visível.
Share


