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

La actualidad más candente

Proyecto tres en_raya_f_inal_mathias_y_grupo
Proyecto tres en_raya_f_inal_mathias_y_grupoProyecto tres en_raya_f_inal_mathias_y_grupo
Proyecto tres en_raya_f_inal_mathias_y_grupoRobertho Mathias
 
Creando juegos con game maker 8
Creando juegos con game maker 8Creando juegos con game maker 8
Creando juegos con game maker 8Henrydarklite
 
Tutorial game maker
Tutorial game makerTutorial game maker
Tutorial game makerJoserichi
 
Java AWT Tres en Raya
Java AWT Tres en RayaJava AWT Tres en Raya
Java AWT Tres en Rayajubacalo
 
Creacion de tablas geograficas en postgres
Creacion de tablas geograficas en postgresCreacion de tablas geograficas en postgres
Creacion de tablas geograficas en postgresJorge Velazquez
 
Practicas derive 6
Practicas derive 6Practicas derive 6
Practicas derive 6Edson Olvera
 
Presentacion del proyecto
Presentacion del proyectoPresentacion del proyecto
Presentacion del proyecto123santi9
 
Manual de practicas de Open GL
Manual de practicas de Open GLManual de practicas de Open GL
Manual de practicas de Open GLAlincita Simon
 
Programación de Videojuegos con Python y Pilas (VIII)
Programación de Videojuegos con Python y Pilas (VIII)Programación de Videojuegos con Python y Pilas (VIII)
Programación de Videojuegos con Python y Pilas (VIII)Fernando Salamero
 
Manual de App
Manual de App Manual de App
Manual de App valeria-lg
 
Girar plano en layout y configuracion de guardado
Girar plano en layout y configuracion de guardado Girar plano en layout y configuracion de guardado
Girar plano en layout y configuracion de guardado Ricardo Altamirano
 

La actualidad más candente (20)

Proyecto tres en_raya_f_inal_mathias_y_grupo
Proyecto tres en_raya_f_inal_mathias_y_grupoProyecto tres en_raya_f_inal_mathias_y_grupo
Proyecto tres en_raya_f_inal_mathias_y_grupo
 
Creando juegos con game maker 8
Creando juegos con game maker 8Creando juegos con game maker 8
Creando juegos con game maker 8
 
Tutorial game maker
Tutorial game makerTutorial game maker
Tutorial game maker
 
Game Maker Primera parte
Game Maker Primera parteGame Maker Primera parte
Game Maker Primera parte
 
Actividades sencillas 1
Actividades sencillas 1Actividades sencillas 1
Actividades sencillas 1
 
Java AWT Tres en Raya
Java AWT Tres en RayaJava AWT Tres en Raya
Java AWT Tres en Raya
 
Aventura
AventuraAventura
Aventura
 
Proyecto
ProyectoProyecto
Proyecto
 
Creacion de tablas geograficas en postgres
Creacion de tablas geograficas en postgresCreacion de tablas geograficas en postgres
Creacion de tablas geograficas en postgres
 
Presentación3d
Presentación3dPresentación3d
Presentación3d
 
Sudoku
SudokuSudoku
Sudoku
 
Acmar trucos de visual basic(2)
Acmar   trucos de visual basic(2)Acmar   trucos de visual basic(2)
Acmar trucos de visual basic(2)
 
Practicas derive 6
Practicas derive 6Practicas derive 6
Practicas derive 6
 
Numeros aleatorios
Numeros aleatoriosNumeros aleatorios
Numeros aleatorios
 
Comandos r
Comandos rComandos r
Comandos r
 
Presentacion del proyecto
Presentacion del proyectoPresentacion del proyecto
Presentacion del proyecto
 
Manual de practicas de Open GL
Manual de practicas de Open GLManual de practicas de Open GL
Manual de practicas de Open GL
 
Programación de Videojuegos con Python y Pilas (VIII)
Programación de Videojuegos con Python y Pilas (VIII)Programación de Videojuegos con Python y Pilas (VIII)
Programación de Videojuegos con Python y Pilas (VIII)
 
Manual de App
Manual de App Manual de App
Manual de App
 
Girar plano en layout y configuracion de guardado
Girar plano en layout y configuracion de guardado Girar plano en layout y configuracion de guardado
Girar plano en layout y configuracion de guardado
 

Destacado

1728517760.1. portafolio estudiantil
1728517760.1. portafolio estudiantil1728517760.1. portafolio estudiantil
1728517760.1. portafolio estudiantilBarbosa Wagner
 
07. Data Structures
07. Data Structures07. Data Structures
07. Data StructuresAmin Babadi
 
Desarrollo De Videojuegos Con Xna
Desarrollo De Videojuegos Con XnaDesarrollo De Videojuegos Con Xna
Desarrollo De Videojuegos Con XnaCésar Reneses
 
Teoría xna
Teoría xnaTeoría xna
Teoría xnaDada3311
 
Hébergement web professionnel - plaquette commerciale
Hébergement web professionnel - plaquette commercialeHébergement web professionnel - plaquette commerciale
Hébergement web professionnel - plaquette commercialePlatine
 
Slides fotos pinturas la obsesion de van gogh e millet
Slides fotos pinturas la obsesion de van gogh e milletSlides fotos pinturas la obsesion de van gogh e millet
Slides fotos pinturas la obsesion de van gogh e milletMarta Cunha
 
Les cares divertides de les abelles
Les cares divertides de les abellesLes cares divertides de les abelles
Les cares divertides de les abellestescoda3
 
Uniad inforamcion recomencaciones
Uniad inforamcion recomencacionesUniad inforamcion recomencaciones
Uniad inforamcion recomencacionesMaria Garcia
 
26687 changer roue9
26687 changer roue926687 changer roue9
26687 changer roue9Sofija J.
 
Chiffres-clés de la sinistralité au travail selon le sexe
Chiffres-clés de la sinistralité au travail selon le sexeChiffres-clés de la sinistralité au travail selon le sexe
Chiffres-clés de la sinistralité au travail selon le sexeAnact
 
Mini miss relance le d sur l'hypersexualisation
Mini miss relance le d sur l'hypersexualisationMini miss relance le d sur l'hypersexualisation
Mini miss relance le d sur l'hypersexualisationpersonalcare
 

Destacado (20)

1728517760.1. portafolio estudiantil
1728517760.1. portafolio estudiantil1728517760.1. portafolio estudiantil
1728517760.1. portafolio estudiantil
 
07. Data Structures
07. Data Structures07. Data Structures
07. Data Structures
 
Desarrollo De Videojuegos Con Xna
Desarrollo De Videojuegos Con XnaDesarrollo De Videojuegos Con Xna
Desarrollo De Videojuegos Con Xna
 
Teoría xna
Teoría xnaTeoría xna
Teoría xna
 
[Code Camp 2009] Desarrollo de videojuegos multiplataforma en la nueva genera...
[Code Camp 2009] Desarrollo de videojuegos multiplataforma en la nueva genera...[Code Camp 2009] Desarrollo de videojuegos multiplataforma en la nueva genera...
[Code Camp 2009] Desarrollo de videojuegos multiplataforma en la nueva genera...
 
Hébergement web professionnel - plaquette commerciale
Hébergement web professionnel - plaquette commercialeHébergement web professionnel - plaquette commerciale
Hébergement web professionnel - plaquette commerciale
 
Slides fotos pinturas la obsesion de van gogh e millet
Slides fotos pinturas la obsesion de van gogh e milletSlides fotos pinturas la obsesion de van gogh e millet
Slides fotos pinturas la obsesion de van gogh e millet
 
Conceptualizacion
ConceptualizacionConceptualizacion
Conceptualizacion
 
Carte de voeux
Carte de voeuxCarte de voeux
Carte de voeux
 
Aborto
AbortoAborto
Aborto
 
Cx pres1
Cx pres1Cx pres1
Cx pres1
 
Competencias 2
Competencias 2Competencias 2
Competencias 2
 
Les cares divertides de les abelles
Les cares divertides de les abellesLes cares divertides de les abelles
Les cares divertides de les abelles
 
Uniad inforamcion recomencaciones
Uniad inforamcion recomencacionesUniad inforamcion recomencaciones
Uniad inforamcion recomencaciones
 
26687 changer roue9
26687 changer roue926687 changer roue9
26687 changer roue9
 
Chiffres-clés de la sinistralité au travail selon le sexe
Chiffres-clés de la sinistralité au travail selon le sexeChiffres-clés de la sinistralité au travail selon le sexe
Chiffres-clés de la sinistralité au travail selon le sexe
 
Bonsais en fleurs
Bonsais en fleurs Bonsais en fleurs
Bonsais en fleurs
 
Mina kouk
Mina koukMina kouk
Mina kouk
 
Mini miss relance le d sur l'hypersexualisation
Mini miss relance le d sur l'hypersexualisationMini miss relance le d sur l'hypersexualisation
Mini miss relance le d sur l'hypersexualisation
 
Les rimes
Les rimesLes rimes
Les rimes
 

Similar a Xna game studio presentación 04

Guía de programación de videojuegos i
Guía de programación de videojuegos iGuía de programación de videojuegos i
Guía de programación de videojuegos iFreelance
 
Jueves Part2
Jueves Part2Jueves Part2
Jueves Part2nera24mx
 
Herramienta de construcción recursos y scripts en second life
Herramienta de construcción  recursos y scripts en second lifeHerramienta de construcción  recursos y scripts en second life
Herramienta de construcción recursos y scripts en second lifeFernando Pascual
 
Casillas y botones con GeoGebra
Casillas y botones con GeoGebraCasillas y botones con GeoGebra
Casillas y botones con GeoGebraJesús Fernández
 
Xna game studio presentación 03
Xna game studio   presentación 03Xna game studio   presentación 03
Xna game studio presentación 03Juan Cardona
 
Xna game studio presentación 02
Xna game studio   presentación 02Xna game studio   presentación 02
Xna game studio presentación 02Juan Cardona
 
Getting started book response
Getting started book   responseGetting started book   response
Getting started book responsepatpatpati
 
Tkinter para python (curso de interfaces gráficas)
Tkinter para python (curso de interfaces gráficas)Tkinter para python (curso de interfaces gráficas)
Tkinter para python (curso de interfaces gráficas)martinezhd1
 
Manual práctico de edición de Renders (1).pdf
Manual práctico de edición de Renders (1).pdfManual práctico de edición de Renders (1).pdf
Manual práctico de edición de Renders (1).pdfoctavio
 
Codigo Explicado Rompe Bloques.docx
Codigo Explicado Rompe Bloques.docxCodigo Explicado Rompe Bloques.docx
Codigo Explicado Rompe Bloques.docxEdwinAntonioSegoviaD
 
Cuadernillo de-ejercicios-parte-1
Cuadernillo de-ejercicios-parte-1Cuadernillo de-ejercicios-parte-1
Cuadernillo de-ejercicios-parte-1Omar Rodriguez
 
Cuadernillodeejercicios parte1-160324160448
Cuadernillodeejercicios parte1-160324160448Cuadernillodeejercicios parte1-160324160448
Cuadernillodeejercicios parte1-160324160448pfabreg4
 
Cuadernillo de-ejercicios-parte-1
Cuadernillo de-ejercicios-parte-1Cuadernillo de-ejercicios-parte-1
Cuadernillo de-ejercicios-parte-1Tecnisistemas
 

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

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

Más de Juan Cardona

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

Más de Juan Cardona (8)

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

Último

Licencias para el Uso y el Desarrollo de Software
Licencias para el Uso y el Desarrollo de SoftwareLicencias para el Uso y el Desarrollo de Software
Licencias para el Uso y el Desarrollo de SoftwareAndres Avila
 
ACTIVIDAD DE TECNOLOGÍA AÑO LECTIVO 2024
ACTIVIDAD DE TECNOLOGÍA AÑO LECTIVO 2024ACTIVIDAD DE TECNOLOGÍA AÑO LECTIVO 2024
ACTIVIDAD DE TECNOLOGÍA AÑO LECTIVO 2024DanielErazoMedina
 
HIGADO Y TRAUMA HEPATICO UDABOL 2024 (3).pdf
HIGADO  Y TRAUMA HEPATICO UDABOL 2024 (3).pdfHIGADO  Y TRAUMA HEPATICO UDABOL 2024 (3).pdf
HIGADO Y TRAUMA HEPATICO UDABOL 2024 (3).pdfIsabelHuairaGarma
 
proyecto invernadero desde el departamento de tecnología para Erasmus
proyecto invernadero desde el departamento de tecnología para Erasmusproyecto invernadero desde el departamento de tecnología para Erasmus
proyecto invernadero desde el departamento de tecnología para Erasmusraquelariza02
 
Sistemas distribuidos de redes de computadores en un entorno virtual de apren...
Sistemas distribuidos de redes de computadores en un entorno virtual de apren...Sistemas distribuidos de redes de computadores en un entorno virtual de apren...
Sistemas distribuidos de redes de computadores en un entorno virtual de apren...Luis Fernando Uribe Villamil
 
Diagrama de flujo soporte técnico 5to semestre
Diagrama de flujo soporte técnico 5to semestreDiagrama de flujo soporte técnico 5to semestre
Diagrama de flujo soporte técnico 5to semestrerafaelsalazar0615
 
Herramientas informáticas. Sara Torres R.
Herramientas informáticas. Sara Torres R.Herramientas informáticas. Sara Torres R.
Herramientas informáticas. Sara Torres R.saravalentinat22
 
Posnarrativas en la era de la IA generativa
Posnarrativas en la era de la IA generativaPosnarrativas en la era de la IA generativa
Posnarrativas en la era de la IA generativaFernando Villares
 
lenguaje algebraico.pptx álgebra, trigonometria
lenguaje algebraico.pptx álgebra, trigonometrialenguaje algebraico.pptx álgebra, trigonometria
lenguaje algebraico.pptx álgebra, trigonometriasofiasonder
 
(PROYECTO) Límites entre el Arte, los Medios de Comunicación y la Informática
(PROYECTO) Límites entre el Arte, los Medios de Comunicación y la Informática(PROYECTO) Límites entre el Arte, los Medios de Comunicación y la Informática
(PROYECTO) Límites entre el Arte, los Medios de Comunicación y la Informáticavazquezgarciajesusma
 
Introducción a la robótica con arduino..pptx
Introducción a la robótica con arduino..pptxIntroducción a la robótica con arduino..pptx
Introducción a la robótica con arduino..pptxJohanna4222
 
Presentacion y Extension de tema para Blogger.pptx
Presentacion y Extension de tema para Blogger.pptxPresentacion y Extension de tema para Blogger.pptx
Presentacion y Extension de tema para Blogger.pptxTaim11
 
leidy fuentes - power point -expocccion -unidad 4 (1).pptx
leidy fuentes - power point -expocccion -unidad 4 (1).pptxleidy fuentes - power point -expocccion -unidad 4 (1).pptx
leidy fuentes - power point -expocccion -unidad 4 (1).pptxLeidyfuentes19
 
HerramientasInformaticas ¿Que es? - ¿Para que sirve? - Recomendaciones - Comp...
HerramientasInformaticas ¿Que es? - ¿Para que sirve? - Recomendaciones - Comp...HerramientasInformaticas ¿Que es? - ¿Para que sirve? - Recomendaciones - Comp...
HerramientasInformaticas ¿Que es? - ¿Para que sirve? - Recomendaciones - Comp...Kevin Serna
 
Unidad 1- Historia y Evolucion de las computadoras.pdf
Unidad 1- Historia y Evolucion de las computadoras.pdfUnidad 1- Historia y Evolucion de las computadoras.pdf
Unidad 1- Historia y Evolucion de las computadoras.pdfMarianneBAyn
 
Trabajo Coding For kids 1 y 2 grado 9-4.pdf
Trabajo Coding For kids 1 y 2 grado 9-4.pdfTrabajo Coding For kids 1 y 2 grado 9-4.pdf
Trabajo Coding For kids 1 y 2 grado 9-4.pdfcj3806354
 
Inteligencia Artificial para usuarios nivel inicial
Inteligencia Artificial para usuarios nivel inicialInteligencia Artificial para usuarios nivel inicial
Inteligencia Artificial para usuarios nivel inicialEducática
 
manual-de-oleohidraulica-industrial-vickers.pdf
manual-de-oleohidraulica-industrial-vickers.pdfmanual-de-oleohidraulica-industrial-vickers.pdf
manual-de-oleohidraulica-industrial-vickers.pdfprofmartinsuarez
 
3°ð_¦_â_¾ï¸_S34 PLAN DARUKEL DIDÃ_CTICA 23-24.docx
3°ð_¦_â_¾ï¸_S34 PLAN DARUKEL DIDÃ_CTICA 23-24.docx3°ð_¦_â_¾ï¸_S34 PLAN DARUKEL DIDÃ_CTICA 23-24.docx
3°ð_¦_â_¾ï¸_S34 PLAN DARUKEL DIDÃ_CTICA 23-24.docxwerito139410
 
Estudio de la geometría analitica. Pptx.
Estudio de la geometría analitica. Pptx.Estudio de la geometría analitica. Pptx.
Estudio de la geometría analitica. Pptx.sofiasonder
 

Último (20)

Licencias para el Uso y el Desarrollo de Software
Licencias para el Uso y el Desarrollo de SoftwareLicencias para el Uso y el Desarrollo de Software
Licencias para el Uso y el Desarrollo de Software
 
ACTIVIDAD DE TECNOLOGÍA AÑO LECTIVO 2024
ACTIVIDAD DE TECNOLOGÍA AÑO LECTIVO 2024ACTIVIDAD DE TECNOLOGÍA AÑO LECTIVO 2024
ACTIVIDAD DE TECNOLOGÍA AÑO LECTIVO 2024
 
HIGADO Y TRAUMA HEPATICO UDABOL 2024 (3).pdf
HIGADO  Y TRAUMA HEPATICO UDABOL 2024 (3).pdfHIGADO  Y TRAUMA HEPATICO UDABOL 2024 (3).pdf
HIGADO Y TRAUMA HEPATICO UDABOL 2024 (3).pdf
 
proyecto invernadero desde el departamento de tecnología para Erasmus
proyecto invernadero desde el departamento de tecnología para Erasmusproyecto invernadero desde el departamento de tecnología para Erasmus
proyecto invernadero desde el departamento de tecnología para Erasmus
 
Sistemas distribuidos de redes de computadores en un entorno virtual de apren...
Sistemas distribuidos de redes de computadores en un entorno virtual de apren...Sistemas distribuidos de redes de computadores en un entorno virtual de apren...
Sistemas distribuidos de redes de computadores en un entorno virtual de apren...
 
Diagrama de flujo soporte técnico 5to semestre
Diagrama de flujo soporte técnico 5to semestreDiagrama de flujo soporte técnico 5to semestre
Diagrama de flujo soporte técnico 5to semestre
 
Herramientas informáticas. Sara Torres R.
Herramientas informáticas. Sara Torres R.Herramientas informáticas. Sara Torres R.
Herramientas informáticas. Sara Torres R.
 
Posnarrativas en la era de la IA generativa
Posnarrativas en la era de la IA generativaPosnarrativas en la era de la IA generativa
Posnarrativas en la era de la IA generativa
 
lenguaje algebraico.pptx álgebra, trigonometria
lenguaje algebraico.pptx álgebra, trigonometrialenguaje algebraico.pptx álgebra, trigonometria
lenguaje algebraico.pptx álgebra, trigonometria
 
(PROYECTO) Límites entre el Arte, los Medios de Comunicación y la Informática
(PROYECTO) Límites entre el Arte, los Medios de Comunicación y la Informática(PROYECTO) Límites entre el Arte, los Medios de Comunicación y la Informática
(PROYECTO) Límites entre el Arte, los Medios de Comunicación y la Informática
 
Introducción a la robótica con arduino..pptx
Introducción a la robótica con arduino..pptxIntroducción a la robótica con arduino..pptx
Introducción a la robótica con arduino..pptx
 
Presentacion y Extension de tema para Blogger.pptx
Presentacion y Extension de tema para Blogger.pptxPresentacion y Extension de tema para Blogger.pptx
Presentacion y Extension de tema para Blogger.pptx
 
leidy fuentes - power point -expocccion -unidad 4 (1).pptx
leidy fuentes - power point -expocccion -unidad 4 (1).pptxleidy fuentes - power point -expocccion -unidad 4 (1).pptx
leidy fuentes - power point -expocccion -unidad 4 (1).pptx
 
HerramientasInformaticas ¿Que es? - ¿Para que sirve? - Recomendaciones - Comp...
HerramientasInformaticas ¿Que es? - ¿Para que sirve? - Recomendaciones - Comp...HerramientasInformaticas ¿Que es? - ¿Para que sirve? - Recomendaciones - Comp...
HerramientasInformaticas ¿Que es? - ¿Para que sirve? - Recomendaciones - Comp...
 
Unidad 1- Historia y Evolucion de las computadoras.pdf
Unidad 1- Historia y Evolucion de las computadoras.pdfUnidad 1- Historia y Evolucion de las computadoras.pdf
Unidad 1- Historia y Evolucion de las computadoras.pdf
 
Trabajo Coding For kids 1 y 2 grado 9-4.pdf
Trabajo Coding For kids 1 y 2 grado 9-4.pdfTrabajo Coding For kids 1 y 2 grado 9-4.pdf
Trabajo Coding For kids 1 y 2 grado 9-4.pdf
 
Inteligencia Artificial para usuarios nivel inicial
Inteligencia Artificial para usuarios nivel inicialInteligencia Artificial para usuarios nivel inicial
Inteligencia Artificial para usuarios nivel inicial
 
manual-de-oleohidraulica-industrial-vickers.pdf
manual-de-oleohidraulica-industrial-vickers.pdfmanual-de-oleohidraulica-industrial-vickers.pdf
manual-de-oleohidraulica-industrial-vickers.pdf
 
3°ð_¦_â_¾ï¸_S34 PLAN DARUKEL DIDÃ_CTICA 23-24.docx
3°ð_¦_â_¾ï¸_S34 PLAN DARUKEL DIDÃ_CTICA 23-24.docx3°ð_¦_â_¾ï¸_S34 PLAN DARUKEL DIDÃ_CTICA 23-24.docx
3°ð_¦_â_¾ï¸_S34 PLAN DARUKEL DIDÃ_CTICA 23-24.docx
 
Estudio de la geometría analitica. Pptx.
Estudio de la geometría analitica. Pptx.Estudio de la geometría analitica. Pptx.
Estudio de la geometría analitica. Pptx.
 

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.