SlideShare una empresa de Scribd logo
Uso del teclado y el mouse
Mecanismos de interacción
y control de colisiones
Juan Carlos Zuluaga
Introducción
 Los Mecanismos de Interacción (comúnmente llamados
Controles) permiten al usuario interactuar con nuestro
Juego. Veremos como interactuar con Teclado y el
Mouse. También podemos usar el control del XBOX o el
Kinect.
Uso del teclado
Proyecto #4 – Parte #1
Usando el Teclado
 El método tradicional para cualquier juego es
utilizando al menos una o dos teclas en el Teclado.
Cabe destacar que XNA tiene soporte para múltiples
jugadores en una misma computadora, ya que
podemos detectar múltiples teclas presionadas en
un mismo instante.
 El lugar correcto para poner nuestra lógica de input
es en el método Update. Al detectar una o más
teclas presionadas podremos modificar valores en
nuestro juego para ver reflejado en acciones el
input del usuario
 Cree un proyecto XNA
 Agregue estos atributos a la clase Game1:
Rectangle cuadrado;
Texture2D textura;
int width;
int height;
 En el constructor de la clase Game1, agregue las siguientes líneas:
// change windows size
width = 1100;
height = 600;
graphics.PreferredBackBufferWidth = width;
graphics.PreferredBackBufferHeight = height;
 En el Initialize creamos un rectángulo rojo en el centro de la pantalla de 100
x 100 pixeles
cuadrado = new Rectangle((width - 100) / 2, (height - 100) / 2, 100, 100);
textura = new Texture2D(graphics.GraphicsDevice, 1, 1);
textura.SetData(new Color[] { Color.Red });
 En el Draw, dibujamos el rectángulo:
spriteBatch.Begin();
spriteBatch.Draw(textura, cuadrado, Color.White);
spriteBatch.End();
 Probemos lo que llevamos hasta el momento
 En el método Update, identificamos si el usuario, nos presiono alguna de las
fechas del teclado
var teclado = Keyboard.GetState();
if (teclado.IsKeyDown(Keys.Right)) cuadrado.X += 10;
if (teclado.IsKeyDown(Keys.Left)) cuadrado.X -= 10;
if (teclado.IsKeyDown(Keys.Up)) cuadrado.Y -= 10;
if (teclado.IsKeyDown(Keys.Down)) cuadrado.Y += 10;
 Ya podemos probar el movimiento del cuadro rojo
 Para validar que el cuadro no se salga de la pantalla, vamos a agregar las
siguientes líneas al método Update
cuadrado.X = (int)MathHelper.Clamp(cuadrado.X, 0, width - cuadrado.Width);
cuadrado.Y = (int)MathHelper.Clamp(cuadrado.Y, 0, height - cuadrado.Height);
 Ya podemos probar el movimiento del cuadro rojo, sin permitir que salga del
área del juego
Utilización del mouse
Proyecto #4 – Parte #2
Usando el Mouse
 El segundo método de entrada tradicional es el
Mouse (o Ratón). Para detectarlo es necesario hacer
uso de la clase Mouse y, al igual que hicimos con el
teclado, obtener el estado actual. Cabe destacar
que para que el mouse sea visible en un juego XNA
debemos correr sobre plataforma PC e indicar al
momento de inicializar el juego que queremos
tener el cursor visible. En esta ocasión utilizaremos
la posición del cursor y el click. En futuros niveles
de la carrera aprenderemos a utilizar comandos
avanzados como la Rueda de Scroll, el botón
Derecho, etc.
 El ejemplo a continuación dibuja un cuadrado en
pantalla y lo mueve a la posición exacta en donde
hacemos clic con el Mouse.
 En el constructor de la clase Game1, agregue la siguiente línea:
this.IsMouseVisible = true;
 Ahora en el método Update antes de las línea del MathHelper, agreguar las
siguientes líneas:
var mouse = Mouse.GetState();
if (mouse.LeftButton == ButtonState.Pressed)
{
cuadrado.X = mouse.X;
cuadrado.Y = mouse.Y;
}
 Probemos lo que llevamos hasta el momento
Control de colisiones
Proyecto #4 – Parte #3
Control de colisiones
 Es fundamental para nuestros juegos identificar el control de colisiones.
Cuando un proyectil disparado por un objeto, impacta otro objeto. Cuando
una patada o puño alcanza un oponente, cuando un carro choca contra un
obstáculo, son características presentes en casi todos los juegos. XNA nos
provee herramientas para hacer nuestro trabajo más fácil y divertido.
 Vamos a desativar el mouse para este concepto. En el constructor de la clase
Game1, comentaree la siguiente línea:
//this.IsMouseVisible = true;
 Ahora en el método Update antes de las línea del MathHelper, comentariar las
siguientes líneas:
var mouse = Mouse.GetState();
if (mouse.LeftButton == ButtonState.Pressed)
{
cuadrado.X = mouse.X;
cuadrado.Y = mouse.Y;
}
 Agregar los siguientes atributos
List<Rectangle> recObstaculos;
Texture2D textura;
 Para agrugar los obstáculos, agreguemos las siguientes líneas antes del
base.Initialize();
// Obstaculos
recObstaculos = new List<Rectangle>();
recObstaculos.Add(new Rectangle(150, 0, 10, height - 150));
recObstaculos.Add(new Rectangle(300, 150, 10, height));
recObstaculos.Add(new Rectangle(450, 0, 10, height - 150));
recObstaculos.Add(new Rectangle(600, 150, 10, height));
recObstaculos.Add(new Rectangle(750, 0, 10, height - 150));
obstaculo = new Texture2D(graphics.GraphicsDevice, 1, 1);
recObstaculos.Add(new Rectangle(900, 150, 10, height));
obstaculo.SetData(new Color[] { Color.Green });
 Cambiemos la posición inicial del cuadro con la siguiente línea:
cuadrado = new Rectangle(10, 10, 100, 100);
 En el método Draw, pintemos los obstáculos, con las siguientes líneas:
foreach(Rectangle recObstaculo in recObstaculos)
{
spriteBatch.Draw(obstaculo, recObstaculo, Color.White);
}
robemos lo que llevamos
 Ahora controlemos las colisiones en el método Update. El método Update queda:
var teclado = Keyboard.GetState();
int antX = cuadrado.X;
int antY = cuadrado.Y;
if (teclado.IsKeyDown(Keys.Right)) cuadrado.X += 10;
if (teclado.IsKeyDown(Keys.Left)) cuadrado.X -= 10;
if (teclado.IsKeyDown(Keys.Up)) cuadrado.Y -= 10;
if (teclado.IsKeyDown(Keys.Down)) cuadrado.Y += 10;
foreach (Rectangle recObstaculo in recObstaculos)
{
if (recObstaculo.Intersects(cuadrado))
{
cuadrado.X = antX;
cuadrado.Y = antY;
}
}
cuadrado.X = (int)MathHelper.Clamp(cuadrado.X, 0, width - cuadrado.Width);
cuadrado.Y = (int)MathHelper.Clamp(cuadrado.Y, 0, height - cuadrado.Height);
base.Update(gameTime);
Taller #3
 Realizar un juego donde aparezcan los cuadrados de 100 x 100, uno rojo y
otro verde. Ambos cuadros se pueden mover por pantalla. El rojo con las
teclas W, S, A, D (arriba, abajo, izquierda, derecha) y el verde con las flechas
arriba, abajo, izquierda, derecha. Se debe controlar que ambos cuadros no se
puedan cruzar.

Más contenido relacionado

PPTX
Xna game studio presentación 06
PPTX
Xna game studio presentación 07
PPTX
Xna game studio presentación 05
PPT
busquedas con adversarios
PPTX
Busqueda entre adversarios
PPTX
Busqueda Entre Adversarios
PDF
Guía de programacion de videojuegos II
PPT
Tutorial Game Maker segunda parte
Xna game studio presentación 06
Xna game studio presentación 07
Xna game studio presentación 05
busquedas con adversarios
Busqueda entre adversarios
Busqueda Entre Adversarios
Guía de programacion de videojuegos II
Tutorial Game Maker segunda parte

La actualidad más candente (20)

PDF
Proyecto tres en_raya_f_inal_mathias_y_grupo
PDF
Creando juegos con game maker 8
PDF
Tutorial game maker
PPT
Game Maker Primera parte
PDF
Actividades sencillas 1
PDF
Java AWT Tres en Raya
PDF
DOCX
Proyecto
PDF
Creacion de tablas geograficas en postgres
PPT
Presentación3d
PDF
Sudoku
DOC
Acmar trucos de visual basic(2)
DOCX
Practicas derive 6
PPTX
Numeros aleatorios
PPT
Presentacion del proyecto
DOCX
Manual de practicas de Open GL
PDF
Programación de Videojuegos con Python y Pilas (VIII)
DOCX
Manual de App
DOCX
Girar plano en layout y configuracion de guardado
Proyecto tres en_raya_f_inal_mathias_y_grupo
Creando juegos con game maker 8
Tutorial game maker
Game Maker Primera parte
Actividades sencillas 1
Java AWT Tres en Raya
Proyecto
Creacion de tablas geograficas en postgres
Presentación3d
Sudoku
Acmar trucos de visual basic(2)
Practicas derive 6
Numeros aleatorios
Presentacion del proyecto
Manual de practicas de Open GL
Programación de Videojuegos con Python y Pilas (VIII)
Manual de App
Girar plano en layout y configuracion de guardado
Publicidad

Destacado (20)

PDF
1728517760.1. portafolio estudiantil
PDF
07. Data Structures
PPTX
Desarrollo De Videojuegos Con Xna
PPTX
Teoría xna
PPTX
[Code Camp 2009] Desarrollo de videojuegos multiplataforma en la nueva genera...
PDF
Hébergement web professionnel - plaquette commerciale
PPS
Slides fotos pinturas la obsesion de van gogh e millet
PDF
Conceptualizacion
DOCX
Carte de voeux
PPS
PPT
PPTX
Competencias 2
PPS
Les cares divertides de les abelles
PDF
Uniad inforamcion recomencaciones
PPS
26687 changer roue9
PDF
Chiffres-clés de la sinistralité au travail selon le sexe
PPS
Bonsais en fleurs
PDF
Mina kouk
PDF
Mini miss relance le d sur l'hypersexualisation
PDF
Les rimes
1728517760.1. portafolio estudiantil
07. Data Structures
Desarrollo De Videojuegos Con Xna
Teoría xna
[Code Camp 2009] Desarrollo de videojuegos multiplataforma en la nueva genera...
Hébergement web professionnel - plaquette commerciale
Slides fotos pinturas la obsesion de van gogh e millet
Conceptualizacion
Carte de voeux
Competencias 2
Les cares divertides de les abelles
Uniad inforamcion recomencaciones
26687 changer roue9
Chiffres-clés de la sinistralité au travail selon le sexe
Bonsais en fleurs
Mina kouk
Mini miss relance le d sur l'hypersexualisation
Les rimes
Publicidad

Similar a Xna game studio presentación 04 (20)

PDF
Guía de programación de videojuegos i
PDF
Ejercicio7_8Graf_Imp (1).pdf,,,,,,,,,,,,,,,,,,,,
DOCX
Jueves Part2
PDF
Herramienta de construcción recursos y scripts en second life
PPTX
Casillas y botones con GeoGebra
PPTX
Xna game studio presentación 03
PPTX
Xna game studio presentación 02
PPTX
Getting started book response
PPTX
Presentacion proyecto
PPTX
Presentacion proyecto
PDF
Manual3 d studiomax
PDF
Tkinter para python (curso de interfaces gráficas)
PPTX
COMANDOS BASICOS EN AUTOCAD
PDF
Manual práctico de edición de Renders (1).pdf
DOCX
DOCX
Botones pulsantes
DOCX
Codigo Explicado Rompe Bloques.docx
PDF
Tutorial de Scratch
PDF
Cuadernillo de-ejercicios-parte-1
PDF
Cuadernillodeejercicios parte1-160324160448
Guía de programación de videojuegos i
Ejercicio7_8Graf_Imp (1).pdf,,,,,,,,,,,,,,,,,,,,
Jueves Part2
Herramienta de construcción recursos y scripts en second life
Casillas y botones con GeoGebra
Xna game studio presentación 03
Xna game studio presentación 02
Getting started book response
Presentacion proyecto
Presentacion proyecto
Manual3 d studiomax
Tkinter para python (curso de interfaces gráficas)
COMANDOS BASICOS EN AUTOCAD
Manual práctico de edición de Renders (1).pdf
Botones pulsantes
Codigo Explicado Rompe Bloques.docx
Tutorial de Scratch
Cuadernillo de-ejercicios-parte-1
Cuadernillodeejercicios parte1-160324160448

Más de Juan Cardona (8)

PPTX
Xna game studio presentación 01
PPTX
Diplomado edumatica sesión #2
PPTX
Diplomado edumatica sesión #1
PPTX
Taller de programación clase #5
PPTX
Taller de programación clase #4
PPTX
Taller de programación clase #3
PPTX
Taller de programación clase #2
PPTX
Taller de programación clase #1
Xna game studio presentación 01
Diplomado edumatica sesión #2
Diplomado edumatica sesión #1
Taller de programación clase #5
Taller de programación clase #4
Taller de programación clase #3
Taller de programación clase #2
Taller de programación clase #1

Último (20)

PDF
Influencia-del-uso-de-redes-sociales.pdf
PDF
TRABAJO DE TECNOLOGIA.pdf...........................
PDF
Ronmy José Cañas Zambrano - Potenciando la tecnología en Venezuela.pdf
PDF
Estrategia de Apoyo de Daylin Castaño (5).pdf
PDF
Documental Beyond the Code (Dossier Presentación - 2.0)
PPTX
modulo seguimiento 1 para iniciantes del
PDF
Maste clas de estructura metálica y arquitectura
PDF
clase auditoria informatica 2025.........
PDF
Instrucciones simples, respuestas poderosas. La fórmula del prompt perfecto.
DOCX
Zarate Quispe Alex aldayir aplicaciones de internet .docx
PDF
Tips de Seguridad para evitar clonar sus claves del portal bancario.pdf
PPTX
Presentación de Redes de Datos modelo osi
PPTX
la-historia-de-la-medicina Edna Silva.pptx
PDF
MANUAL de recursos humanos para ODOO.pdf
PPTX
ANCASH-CRITERIOS DE EVALUACIÓN-FORMA-10-10 (2).pptx
PPTX
Presentacion de Alba Curso Auditores Internos ISO 19011
PDF
CyberOps Associate - Cisco Networking Academy
PPTX
Curso de generación de energía mediante sistemas solares
PDF
PRESENTACIÓN GENERAL MIPIG - MODELO INTEGRADO DE PLANEACIÓN
DOCX
Contenido Fundamentos de comunicaciones Fibra Optica (1).docx
Influencia-del-uso-de-redes-sociales.pdf
TRABAJO DE TECNOLOGIA.pdf...........................
Ronmy José Cañas Zambrano - Potenciando la tecnología en Venezuela.pdf
Estrategia de Apoyo de Daylin Castaño (5).pdf
Documental Beyond the Code (Dossier Presentación - 2.0)
modulo seguimiento 1 para iniciantes del
Maste clas de estructura metálica y arquitectura
clase auditoria informatica 2025.........
Instrucciones simples, respuestas poderosas. La fórmula del prompt perfecto.
Zarate Quispe Alex aldayir aplicaciones de internet .docx
Tips de Seguridad para evitar clonar sus claves del portal bancario.pdf
Presentación de Redes de Datos modelo osi
la-historia-de-la-medicina Edna Silva.pptx
MANUAL de recursos humanos para ODOO.pdf
ANCASH-CRITERIOS DE EVALUACIÓN-FORMA-10-10 (2).pptx
Presentacion de Alba Curso Auditores Internos ISO 19011
CyberOps Associate - Cisco Networking Academy
Curso de generación de energía mediante sistemas solares
PRESENTACIÓN GENERAL MIPIG - MODELO INTEGRADO DE PLANEACIÓN
Contenido Fundamentos de comunicaciones Fibra Optica (1).docx

Xna game studio presentación 04

  • 1. Uso del teclado y el mouse Mecanismos de interacción y control de colisiones Juan Carlos Zuluaga
  • 2. Introducción  Los Mecanismos de Interacción (comúnmente llamados Controles) permiten al usuario interactuar con nuestro Juego. Veremos como interactuar con Teclado y el Mouse. También podemos usar el control del XBOX o el Kinect.
  • 3. Uso del teclado Proyecto #4 – Parte #1
  • 4. Usando el Teclado  El método tradicional para cualquier juego es utilizando al menos una o dos teclas en el Teclado. Cabe destacar que XNA tiene soporte para múltiples jugadores en una misma computadora, ya que podemos detectar múltiples teclas presionadas en un mismo instante.  El lugar correcto para poner nuestra lógica de input es en el método Update. Al detectar una o más teclas presionadas podremos modificar valores en nuestro juego para ver reflejado en acciones el input del usuario
  • 5.  Cree un proyecto XNA  Agregue estos atributos a la clase Game1: Rectangle cuadrado; Texture2D textura; int width; int height;  En el constructor de la clase Game1, agregue las siguientes líneas: // change windows size width = 1100; height = 600; graphics.PreferredBackBufferWidth = width; graphics.PreferredBackBufferHeight = height;  En el Initialize creamos un rectángulo rojo en el centro de la pantalla de 100 x 100 pixeles cuadrado = new Rectangle((width - 100) / 2, (height - 100) / 2, 100, 100); textura = new Texture2D(graphics.GraphicsDevice, 1, 1); textura.SetData(new Color[] { Color.Red });  En el Draw, dibujamos el rectángulo: spriteBatch.Begin(); spriteBatch.Draw(textura, cuadrado, Color.White); spriteBatch.End();  Probemos lo que llevamos hasta el momento
  • 6.  En el método Update, identificamos si el usuario, nos presiono alguna de las fechas del teclado var teclado = Keyboard.GetState(); if (teclado.IsKeyDown(Keys.Right)) cuadrado.X += 10; if (teclado.IsKeyDown(Keys.Left)) cuadrado.X -= 10; if (teclado.IsKeyDown(Keys.Up)) cuadrado.Y -= 10; if (teclado.IsKeyDown(Keys.Down)) cuadrado.Y += 10;  Ya podemos probar el movimiento del cuadro rojo  Para validar que el cuadro no se salga de la pantalla, vamos a agregar las siguientes líneas al método Update cuadrado.X = (int)MathHelper.Clamp(cuadrado.X, 0, width - cuadrado.Width); cuadrado.Y = (int)MathHelper.Clamp(cuadrado.Y, 0, height - cuadrado.Height);  Ya podemos probar el movimiento del cuadro rojo, sin permitir que salga del área del juego
  • 8. Usando el Mouse  El segundo método de entrada tradicional es el Mouse (o Ratón). Para detectarlo es necesario hacer uso de la clase Mouse y, al igual que hicimos con el teclado, obtener el estado actual. Cabe destacar que para que el mouse sea visible en un juego XNA debemos correr sobre plataforma PC e indicar al momento de inicializar el juego que queremos tener el cursor visible. En esta ocasión utilizaremos la posición del cursor y el click. En futuros niveles de la carrera aprenderemos a utilizar comandos avanzados como la Rueda de Scroll, el botón Derecho, etc.  El ejemplo a continuación dibuja un cuadrado en pantalla y lo mueve a la posición exacta en donde hacemos clic con el Mouse.
  • 9.  En el constructor de la clase Game1, agregue la siguiente línea: this.IsMouseVisible = true;  Ahora en el método Update antes de las línea del MathHelper, agreguar las siguientes líneas: var mouse = Mouse.GetState(); if (mouse.LeftButton == ButtonState.Pressed) { cuadrado.X = mouse.X; cuadrado.Y = mouse.Y; }  Probemos lo que llevamos hasta el momento
  • 11. Control de colisiones  Es fundamental para nuestros juegos identificar el control de colisiones. Cuando un proyectil disparado por un objeto, impacta otro objeto. Cuando una patada o puño alcanza un oponente, cuando un carro choca contra un obstáculo, son características presentes en casi todos los juegos. XNA nos provee herramientas para hacer nuestro trabajo más fácil y divertido.
  • 12.  Vamos a desativar el mouse para este concepto. En el constructor de la clase Game1, comentaree la siguiente línea: //this.IsMouseVisible = true;  Ahora en el método Update antes de las línea del MathHelper, comentariar las siguientes líneas: var mouse = Mouse.GetState(); if (mouse.LeftButton == ButtonState.Pressed) { cuadrado.X = mouse.X; cuadrado.Y = mouse.Y; }  Agregar los siguientes atributos List<Rectangle> recObstaculos; Texture2D textura;  Para agrugar los obstáculos, agreguemos las siguientes líneas antes del base.Initialize(); // Obstaculos recObstaculos = new List<Rectangle>(); recObstaculos.Add(new Rectangle(150, 0, 10, height - 150)); recObstaculos.Add(new Rectangle(300, 150, 10, height)); recObstaculos.Add(new Rectangle(450, 0, 10, height - 150)); recObstaculos.Add(new Rectangle(600, 150, 10, height)); recObstaculos.Add(new Rectangle(750, 0, 10, height - 150)); obstaculo = new Texture2D(graphics.GraphicsDevice, 1, 1); recObstaculos.Add(new Rectangle(900, 150, 10, height)); obstaculo.SetData(new Color[] { Color.Green });
  • 13.  Cambiemos la posición inicial del cuadro con la siguiente línea: cuadrado = new Rectangle(10, 10, 100, 100);  En el método Draw, pintemos los obstáculos, con las siguientes líneas: foreach(Rectangle recObstaculo in recObstaculos) { spriteBatch.Draw(obstaculo, recObstaculo, Color.White); } robemos lo que llevamos  Ahora controlemos las colisiones en el método Update. El método Update queda: var teclado = Keyboard.GetState(); int antX = cuadrado.X; int antY = cuadrado.Y; if (teclado.IsKeyDown(Keys.Right)) cuadrado.X += 10; if (teclado.IsKeyDown(Keys.Left)) cuadrado.X -= 10; if (teclado.IsKeyDown(Keys.Up)) cuadrado.Y -= 10; if (teclado.IsKeyDown(Keys.Down)) cuadrado.Y += 10; foreach (Rectangle recObstaculo in recObstaculos) { if (recObstaculo.Intersects(cuadrado)) { cuadrado.X = antX; cuadrado.Y = antY; } } cuadrado.X = (int)MathHelper.Clamp(cuadrado.X, 0, width - cuadrado.Width); cuadrado.Y = (int)MathHelper.Clamp(cuadrado.Y, 0, height - cuadrado.Height); base.Update(gameTime);
  • 14. Taller #3  Realizar un juego donde aparezcan los cuadrados de 100 x 100, uno rojo y otro verde. Ambos cuadros se pueden mover por pantalla. El rojo con las teclas W, S, A, D (arriba, abajo, izquierda, derecha) y el verde con las flechas arriba, abajo, izquierda, derecha. Se debe controlar que ambos cuadros no se puedan cruzar.