SlideShare una empresa de Scribd logo
1 de 15
Desplazamientos y
movimientos de Sprites
Juan Carlos Zuluaga
Introducción
 En la lección #3, creamos un fondo desplazable, en el cual utilizamos varias
líneas de código en varios segmentos de nuestro programa. ¿Pero que pasa si
deseamos colocar otros sprites que se muevan al unísono con el fondo
desplazable?... Pues toca replicar esa lógica para todos los sprites, haciendo
mal uso del Copy And Paste
 La solución será crear una clase desplazamiento, en la cual empaquetemos
toda esta funcionalidad donde simplifiquemos la labor como programadores
 Siendo aun más ambiciosos, vamos a crear otra clase de movimiento, donde
podamos mover sprites en sentido contrario como se mueve nuestro fondo
desplazable
 Cree un proyecto XNA
 Cree la carpeta Imágenes y agregue las imágenes que utilizaremos en este
proyecto: animacionHorse2.png, Arbol.png, Background2.png,
BalaMarioBros.png, BalaMarioBros2.png y Piedra.png
 Agregue al proyecto la clase Animation que hemos utilizado en proyectos
anteriores, no olvide cambiarle el nombre del NameSpace por el actual
 Cree la nueva clase Desplazamiento y reemplace los Using por estos:
using System;
using Microsoft.Xna.Framework;
using Microsoft.Xna.Framework.Content;
using Microsoft.Xna.Framework.Graphics;
 Agregue estos atributos a la clase Desplazamiento :
private int x1;
private int x2;
private int y1;
private int y2;
private int imageWidth;
private int imageHeigth;
private int windowWidth;
private int windowHeigth;
private int velocidad;
private int sentido; // 0: Derecha - Izquierda, 1: Izquierda - Derecha, 2: Arriba - Abajo, 3: Abajo - Arriba
private Rectangle rec1;
private Rectangle rec2;
private Texture2D textura;
 Agregue el método Initializate con el siguiente código:
public void Initialize(Texture2D textura, int x, int y, int imageWidth, int
imageHeigth,
int windowWidth, int windowHeigth, int velocidad, int sentido)
{
this.textura = textura;
this.imageHeigth = imageHeigth;
this.imageWidth = imageWidth;
this.windowHeigth = windowHeigth;
this.windowWidth = windowWidth;
this.velocidad = velocidad;
this.sentido = sentido;
this.x1 = x;
this.y1 = y;
if (sentido == 0)
{
rec1 = new Rectangle(x1, y1, imageWidth, imageHeigth);
x2 = x1 + windowWidth;
rec2 = new Rectangle(x2, y1, imageHeigth, imageHeigth);
}
else if (sentido == 1)
{
rec1 = new Rectangle(x1, y1, imageWidth, imageHeigth);
x2 = x1 - windowWidth;
rec2 = new Rectangle(x2, y1, imageHeigth, imageHeigth);
}
else if (sentido == 2)
{
rec1 = new Rectangle(x1, y1, imageWidth, imageHeigth);
y2 = y1 + windowHeigth;
rec2 = new Rectangle(x1, y2, imageHeigth, imageHeigth);
}
else
{
rec1 = new Rectangle(x1, y1, imageWidth, imageHeigth);
y2 = y1 - windowHeigth;
rec2 = new Rectangle(x1, y2, imageHeigth, imageHeigth);
}
}
 Agregue el método Update con el siguiente código:
public void Update()
{
if (sentido == 0)
{
x1 -= velocidad;
x2 -= velocidad;
}
else if (sentido == 1)
{
x1 += velocidad;
x2 += velocidad;
}
else if (sentido == 2)
{
y1 -= velocidad;
y2 -= velocidad;
}
else
{
y1 += velocidad;
y2 += velocidad;
}
if (sentido == 0 || sentido == 1)
{
rec1 = new Rectangle(x1, y1, imageWidth, imageHeigth);
rec2 = new Rectangle(x2, y1, imageWidth, imageHeigth);
}
else
{
rec1 = new Rectangle(x1, y1, imageWidth, imageHeigth);
rec2 = new Rectangle(x1, y2, imageWidth, imageHeigth);
}
if (sentido == 0)
{
if (rec1.X == -windowWidth)
{
x1 = 0;
}
if (rec2.X == 0)
{
x2 = windowWidth;
}
}
else if (sentido == 1)
{
if (rec1.X == windowWidth)
{
x1 = 0;
}
if (rec2.X == 0)
{
x2 = -windowWidth;
}
}
else if (sentido == 2)
{
if (rec1.Y == -windowHeigth)
{
y1 = 0;
}
if (rec2.Y == 0)
{
y2 = windowHeigth;
}
}
else
{
if (rec1.Y == windowHeigth)
{
y1 = 0;
}
if (rec2.Y == 0)
{
y2 = -windowHeigth;
}
}
}
 Agregue el método Draw con el siguiente código:
public void Draw(SpriteBatch spriteBatch)
{
spriteBatch.Draw(textura, rec1, Color.White);
spriteBatch.Draw(textura, rec2, Color.White);
}
 Cree la nueva clase Movimiento y reemplace los Using por estos:
using System;
using Microsoft.Xna.Framework;
using Microsoft.Xna.Framework.Content;
using Microsoft.Xna.Framework.Graphics;
 Agregue estos atributos a la clase Movimiento:
private int x;
private int y;
private int imageWidth;
private int imageHeigth;
private int windowWidth;
private int windowHeigth;
private int velocidad;
private int sentido; // 0: Derecha - Izquierda, 1: Izquierda - Derecha, 2: Arriba - Abajo, 3: Abajo - Arriba
private Rectangle rectangulo;
private Texture2D textura;
 Agregue el método Initializate con el siguiente código:
public void Initialize(Texture2D textura, int x, int y, int imageWidth, int
imageHeigth,
int windowWidth, int windowHeigth, int velocidad, int sentido)
{
this.textura = textura;
this.imageHeigth = imageHeigth;
this.imageWidth = imageWidth;
this.windowHeigth = windowHeigth;
this.windowWidth = windowWidth;
this.velocidad = velocidad;
this.sentido = sentido;
this.x = x;
this.y = y;
rectangulo = new Rectangle(x, y, imageWidth, imageHeigth);
}
 Agregue el método Update con el siguiente código:
public void Update()
{
if (sentido == 0)
{
x += velocidad;
if (x == windowWidth) x = 0;
}
else if (sentido == 1)
{
x -= velocidad;
if (x == -imageWidth) x = windowWidth - imageWidth;
}
else if (sentido == 2)
{
y += velocidad;
if (y == windowHeigth) y = 0;
}
else
{
y -= velocidad;
if (y == -imageHeigth) y = windowHeigth - imageHeigth;
}
rectangulo.X = x;
rectangulo.Y = y;
}
 Agregue el método Draw con el siguiente código:
public void Draw(SpriteBatch spriteBatch)
{
spriteBatch.Draw(textura, rectangulo, Color.White);
}
 Ya tenemos las tres clases que utilizaremos regularmente en casi todos los
juegos que hagamos: Animation, Desplazamiento y Movimiento
 Creemos estos atributos en la clase Game1:
Desplazamiento escena;
Desplazamiento arbol;
Desplazamiento piedra;
Movimiento bala1;
Movimiento bala2;
Animation horse;
int width;
int height;
 En el constructor de Game1, agreguemos las siguientes líneas:
// change windows size
width = 800;
height = 600;
graphics.PreferredBackBufferWidth = width;
graphics.PreferredBackBufferHeight = height;
 En el Initialize:
escena = new Desplazamiento();
arbol = new Desplazamiento();
piedra = new Desplazamiento();
bala1 = new Movimiento();
bala2 = new Movimiento();
horse = new Animation();
 En el Load:
Texture2D texturaEscena = Content.Load<Texture2D>("Imagenes/Background2");
escena.Initialize(texturaEscena, 0, 0, width, height, width, height, 5, 0);
Texture2D texturaArbol = Content.Load<Texture2D>("Imagenes/Arbol");
arbol.Initialize(texturaArbol, 50, 200, 200, 200, width, height, 5, 0);
Texture2D texturaPiedra = Content.Load<Texture2D>("Imagenes/Piedra");
piedra.Initialize(texturaPiedra, 300, 200, 200, 200, width, height, 5, 0);
Texture2D texturaBala1 = Content.Load<Texture2D>("Imagenes/BalaMarioBros");
bala1.Initialize(texturaBala1, width - 80, 100, 80, 50, width, height, 10, 1);
Texture2D texturaBala2 = Content.Load<Texture2D>("Imagenes/BalaMarioBros2");
bala2.Initialize(texturaBala2, 0, 100, 80, 50, width, height, 10, 0);
Texture2D texturaHorse = Content.Load<Texture2D>("Imagenes/animacionHorse2");
horse.Initialize(texturaHorse, new Vector2(300, 400), 150, 98, 5, 80, Color.White, 1f, true);
 En el Update:
escena.Update();
piedra.Update();
arbol.Update();
bala1.Update();
bala2.Update();
horse.Update(gameTime);
 En el Draw:
spriteBatch.Begin();
escena.Draw(spriteBatch);
piedra.Draw(spriteBatch);
arbol.Draw(spriteBatch);
bala1.Draw(spriteBatch);
bala2.Draw(spriteBatch);
horse.Draw(spriteBatch);
spriteBatch.End();
 Ensaye diferentes parámetros de la clase Desplazamiento y Movimiento y
saque sus concluisones
Taller #5
 Realizar un juego donde aparezcan 2 animaciones, 1 fondo desplazable, 3
objetos moviéndose con el fondo desplazable, 3 objetos moviéndose
separadamente del fondo desplazable, agregue una canción de fondo y 2
efectos de sonido.

Más contenido relacionado

La actualidad más candente

Tutorial game maker
Tutorial game makerTutorial game maker
Tutorial game makerJoserichi
 
Creando juegos con game maker 8
Creando juegos con game maker 8Creando juegos con game maker 8
Creando juegos con game maker 8Henrydarklite
 
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
 
Java AWT Tres en Raya
Java AWT Tres en RayaJava AWT Tres en Raya
Java AWT Tres en Rayajubacalo
 
Practicas derive 6
Practicas derive 6Practicas derive 6
Practicas derive 6Edson Olvera
 
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
 
Manual de practicas de Open GL
Manual de practicas de Open GLManual de practicas de Open GL
Manual de practicas de Open GLAlincita Simon
 
Presentacion del proyecto
Presentacion del proyectoPresentacion del proyecto
Presentacion del proyecto123santi9
 
Creacion de tablas geograficas en postgres
Creacion de tablas geograficas en postgresCreacion de tablas geograficas en postgres
Creacion de tablas geograficas en postgresJorge Velazquez
 
Manual de App
Manual de App Manual de App
Manual de App valeria-lg
 
manual de practicas de opengl
manual de practicas de openglmanual de practicas de opengl
manual de practicas de openglAlincita Simon
 

La actualidad más candente (20)

Tutorial game maker
Tutorial game makerTutorial game maker
Tutorial game maker
 
Creando juegos con game maker 8
Creando juegos con game maker 8Creando juegos con game maker 8
Creando juegos con game maker 8
 
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
 
Aventura
AventuraAventura
Aventura
 
Sergio
SergioSergio
Sergio
 
Java AWT Tres en Raya
Java AWT Tres en RayaJava AWT Tres en Raya
Java AWT Tres en Raya
 
Practicas derive 6
Practicas derive 6Practicas derive 6
Practicas derive 6
 
Comandos r
Comandos rComandos r
Comandos r
 
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
 
Sudoku
SudokuSudoku
Sudoku
 
Manual de practicas de Open GL
Manual de practicas de Open GLManual de practicas de Open GL
Manual de practicas de Open GL
 
Presentación3d
Presentación3dPresentación3d
Presentación3d
 
Presentacion del proyecto
Presentacion del proyectoPresentacion del proyecto
Presentacion del proyecto
 
Creacion de tablas geograficas en postgres
Creacion de tablas geograficas en postgresCreacion de tablas geograficas en postgres
Creacion de tablas geograficas en postgres
 
Botones pulsantes
Botones pulsantesBotones pulsantes
Botones pulsantes
 
Tutorial unity interaccion con objetos
Tutorial unity interaccion con objetosTutorial unity interaccion con objetos
Tutorial unity interaccion con objetos
 
Estela y naye
Estela y nayeEstela y naye
Estela y naye
 
Manual de App
Manual de App Manual de App
Manual de App
 
manual de practicas de opengl
manual de practicas de openglmanual de practicas de opengl
manual de practicas de opengl
 
Acmar trucos de visual basic(2)
Acmar   trucos de visual basic(2)Acmar   trucos de visual basic(2)
Acmar trucos de visual basic(2)
 

Similar a Xna game studio presentación 05

Xna game studio presentación 02
Xna game studio   presentación 02Xna game studio   presentación 02
Xna game studio presentación 02Juan Cardona
 
Xna game studio presentación 03
Xna game studio   presentación 03Xna game studio   presentación 03
Xna game studio presentación 03Juan Cardona
 
Introducción a las librerías PyGame y PyOpenGL
Introducción a las librerías PyGame y PyOpenGLIntroducción a las librerías PyGame y PyOpenGL
Introducción a las librerías PyGame y PyOpenGLkdeespana
 
HTML Tour - Programación de Videojuegos HTML5
HTML Tour - Programación de Videojuegos HTML5HTML Tour - Programación de Videojuegos HTML5
HTML Tour - Programación de Videojuegos HTML5Plain Concepts
 
Proyecto integrador i
Proyecto integrador  iProyecto integrador  i
Proyecto integrador iptty01
 
Programación con Pygame III
Programación con Pygame IIIProgramación con Pygame III
Programación con Pygame IIIFernando Salamero
 
Renderización en java
Renderización en javaRenderización en java
Renderización en javaaleja0940
 
logo a logo
logo a logologo a logo
logo a logomekonee
 
Guía paso a paso Curso Scratch (Parte II - 2016)
Guía paso a paso Curso Scratch (Parte II - 2016)Guía paso a paso Curso Scratch (Parte II - 2016)
Guía paso a paso Curso Scratch (Parte II - 2016)Agneta Gallardo
 
Formatos tutoria laboratorio
Formatos tutoria laboratorioFormatos tutoria laboratorio
Formatos tutoria laboratorioJeffersonVega16
 

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

Xna game studio presentación 02
Xna game studio   presentación 02Xna game studio   presentación 02
Xna game studio presentación 02
 
Xna game studio presentación 03
Xna game studio   presentación 03Xna game studio   presentación 03
Xna game studio presentación 03
 
Presentacion420
Presentacion420Presentacion420
Presentacion420
 
Presentacion420
Presentacion420Presentacion420
Presentacion420
 
Introducción a las librerías PyGame y PyOpenGL
Introducción a las librerías PyGame y PyOpenGLIntroducción a las librerías PyGame y PyOpenGL
Introducción a las librerías PyGame y PyOpenGL
 
HTML Tour - Programación de Videojuegos HTML5
HTML Tour - Programación de Videojuegos HTML5HTML Tour - Programación de Videojuegos HTML5
HTML Tour - Programación de Videojuegos HTML5
 
Presentacion proyecto
Presentacion proyectoPresentacion proyecto
Presentacion proyecto
 
Presentacion proyecto
Presentacion proyectoPresentacion proyecto
Presentacion proyecto
 
Proyecto integrador i
Proyecto integrador  iProyecto integrador  i
Proyecto integrador i
 
Multimedia en android
Multimedia en androidMultimedia en android
Multimedia en android
 
Tutorial de Java
Tutorial de JavaTutorial de Java
Tutorial de Java
 
Programación con Pygame III
Programación con Pygame IIIProgramación con Pygame III
Programación con Pygame III
 
Greenfoot & Kinect
Greenfoot & KinectGreenfoot & Kinect
Greenfoot & Kinect
 
How to zoom in images
How to zoom in imagesHow to zoom in images
How to zoom in images
 
Informe#23
Informe#23Informe#23
Informe#23
 
Greenfoot & Kinect (Parte 3)
Greenfoot & Kinect (Parte 3)Greenfoot & Kinect (Parte 3)
Greenfoot & Kinect (Parte 3)
 
Renderización en java
Renderización en javaRenderización en java
Renderización en java
 
logo a logo
logo a logologo a logo
logo a logo
 
Guía paso a paso Curso Scratch (Parte II - 2016)
Guía paso a paso Curso Scratch (Parte II - 2016)Guía paso a paso Curso Scratch (Parte II - 2016)
Guía paso a paso Curso Scratch (Parte II - 2016)
 
Formatos tutoria laboratorio
Formatos tutoria laboratorioFormatos tutoria laboratorio
Formatos tutoria laboratorio
 

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

EVOLUCION DE LA TECNOLOGIA Y SUS ASPECTOSpptx
EVOLUCION DE LA TECNOLOGIA Y SUS ASPECTOSpptxEVOLUCION DE LA TECNOLOGIA Y SUS ASPECTOSpptx
EVOLUCION DE LA TECNOLOGIA Y SUS ASPECTOSpptxJorgeParada26
 
2023 07 Casos prácticos para Realidad aumentada, metaverso y realidad extendida
2023 07 Casos prácticos para Realidad aumentada, metaverso y realidad extendida2023 07 Casos prácticos para Realidad aumentada, metaverso y realidad extendida
2023 07 Casos prácticos para Realidad aumentada, metaverso y realidad extendidaLuis Francisco Reyes Aceves
 
How to use Redis with MuleSoft. A quick start presentation.
How to use Redis with MuleSoft. A quick start presentation.How to use Redis with MuleSoft. A quick start presentation.
How to use Redis with MuleSoft. A quick start presentation.FlorenciaCattelani
 
infor expo AVANCES TECNOLOGICOS DEL SIGLO 21.pptx
infor expo AVANCES TECNOLOGICOS DEL SIGLO 21.pptxinfor expo AVANCES TECNOLOGICOS DEL SIGLO 21.pptx
infor expo AVANCES TECNOLOGICOS DEL SIGLO 21.pptxgustavovasquezv56
 
AVANCES TECNOLOGICOS DEL SIGLO XXI. 10-08..pptx
AVANCES TECNOLOGICOS  DEL SIGLO XXI. 10-08..pptxAVANCES TECNOLOGICOS  DEL SIGLO XXI. 10-08..pptx
AVANCES TECNOLOGICOS DEL SIGLO XXI. 10-08..pptxdulcemonterroza
 
10°8 - Avances tecnologicos del siglo XXI 10-8
10°8 - Avances tecnologicos del siglo XXI 10-810°8 - Avances tecnologicos del siglo XXI 10-8
10°8 - Avances tecnologicos del siglo XXI 10-8antoniopalmieriluna
 
Guia Basica para bachillerato de Circuitos Basicos
Guia Basica para bachillerato de Circuitos BasicosGuia Basica para bachillerato de Circuitos Basicos
Guia Basica para bachillerato de Circuitos BasicosJhonJairoRodriguezCe
 
QUINTA SEXTA GENERACION de COMPUTADORAS
QUINTA  SEXTA GENERACION de COMPUTADORASQUINTA  SEXTA GENERACION de COMPUTADORAS
QUINTA SEXTA GENERACION de COMPUTADORASMarc Liust
 
presentacion_desamblado_de_una_computadora_base_a_las_normas_de_seguridad.pdf
presentacion_desamblado_de_una_computadora_base_a_las_normas_de_seguridad.pdfpresentacion_desamblado_de_una_computadora_base_a_las_normas_de_seguridad.pdf
presentacion_desamblado_de_una_computadora_base_a_las_normas_de_seguridad.pdfaxelv9257
 
Buenos_Aires_Meetup_Redis_20240430_.pptx
Buenos_Aires_Meetup_Redis_20240430_.pptxBuenos_Aires_Meetup_Redis_20240430_.pptx
Buenos_Aires_Meetup_Redis_20240430_.pptxFederico Castellari
 
Función del analizador léxico.pdf presentacion
Función del analizador léxico.pdf presentacionFunción del analizador léxico.pdf presentacion
Función del analizador léxico.pdf presentacionEmanuelMuoz11
 
Innovaciones tecnologicas en el siglo 21
Innovaciones tecnologicas en el siglo 21Innovaciones tecnologicas en el siglo 21
Innovaciones tecnologicas en el siglo 21mariacbr99
 
Editorial. Grupo de 12B de La Salle Margarita.pdf
Editorial. Grupo de 12B de La Salle Margarita.pdfEditorial. Grupo de 12B de La Salle Margarita.pdf
Editorial. Grupo de 12B de La Salle Margarita.pdfYanitza28
 
Resistencia extrema al cobre por un consorcio bacteriano conformado por Sulfo...
Resistencia extrema al cobre por un consorcio bacteriano conformado por Sulfo...Resistencia extrema al cobre por un consorcio bacteriano conformado por Sulfo...
Resistencia extrema al cobre por un consorcio bacteriano conformado por Sulfo...JohnRamos830530
 
presentación del desensamble y ensamble del equipo de computo en base a las n...
presentación del desensamble y ensamble del equipo de computo en base a las n...presentación del desensamble y ensamble del equipo de computo en base a las n...
presentación del desensamble y ensamble del equipo de computo en base a las n...axelv9257
 
redes informaticas en una oficina administrativa
redes informaticas en una oficina administrativaredes informaticas en una oficina administrativa
redes informaticas en una oficina administrativanicho110
 
Editorial. Grupo de 12B. La Salle Margarita.pdf
Editorial. Grupo de 12B. La Salle Margarita.pdfEditorial. Grupo de 12B. La Salle Margarita.pdf
Editorial. Grupo de 12B. La Salle Margarita.pdfYanitza28
 
investigación de los Avances tecnológicos del siglo XXI
investigación de los Avances tecnológicos del siglo XXIinvestigación de los Avances tecnológicos del siglo XXI
investigación de los Avances tecnológicos del siglo XXIhmpuellon
 

Último (18)

EVOLUCION DE LA TECNOLOGIA Y SUS ASPECTOSpptx
EVOLUCION DE LA TECNOLOGIA Y SUS ASPECTOSpptxEVOLUCION DE LA TECNOLOGIA Y SUS ASPECTOSpptx
EVOLUCION DE LA TECNOLOGIA Y SUS ASPECTOSpptx
 
2023 07 Casos prácticos para Realidad aumentada, metaverso y realidad extendida
2023 07 Casos prácticos para Realidad aumentada, metaverso y realidad extendida2023 07 Casos prácticos para Realidad aumentada, metaverso y realidad extendida
2023 07 Casos prácticos para Realidad aumentada, metaverso y realidad extendida
 
How to use Redis with MuleSoft. A quick start presentation.
How to use Redis with MuleSoft. A quick start presentation.How to use Redis with MuleSoft. A quick start presentation.
How to use Redis with MuleSoft. A quick start presentation.
 
infor expo AVANCES TECNOLOGICOS DEL SIGLO 21.pptx
infor expo AVANCES TECNOLOGICOS DEL SIGLO 21.pptxinfor expo AVANCES TECNOLOGICOS DEL SIGLO 21.pptx
infor expo AVANCES TECNOLOGICOS DEL SIGLO 21.pptx
 
AVANCES TECNOLOGICOS DEL SIGLO XXI. 10-08..pptx
AVANCES TECNOLOGICOS  DEL SIGLO XXI. 10-08..pptxAVANCES TECNOLOGICOS  DEL SIGLO XXI. 10-08..pptx
AVANCES TECNOLOGICOS DEL SIGLO XXI. 10-08..pptx
 
10°8 - Avances tecnologicos del siglo XXI 10-8
10°8 - Avances tecnologicos del siglo XXI 10-810°8 - Avances tecnologicos del siglo XXI 10-8
10°8 - Avances tecnologicos del siglo XXI 10-8
 
Guia Basica para bachillerato de Circuitos Basicos
Guia Basica para bachillerato de Circuitos BasicosGuia Basica para bachillerato de Circuitos Basicos
Guia Basica para bachillerato de Circuitos Basicos
 
QUINTA SEXTA GENERACION de COMPUTADORAS
QUINTA  SEXTA GENERACION de COMPUTADORASQUINTA  SEXTA GENERACION de COMPUTADORAS
QUINTA SEXTA GENERACION de COMPUTADORAS
 
presentacion_desamblado_de_una_computadora_base_a_las_normas_de_seguridad.pdf
presentacion_desamblado_de_una_computadora_base_a_las_normas_de_seguridad.pdfpresentacion_desamblado_de_una_computadora_base_a_las_normas_de_seguridad.pdf
presentacion_desamblado_de_una_computadora_base_a_las_normas_de_seguridad.pdf
 
Buenos_Aires_Meetup_Redis_20240430_.pptx
Buenos_Aires_Meetup_Redis_20240430_.pptxBuenos_Aires_Meetup_Redis_20240430_.pptx
Buenos_Aires_Meetup_Redis_20240430_.pptx
 
Función del analizador léxico.pdf presentacion
Función del analizador léxico.pdf presentacionFunción del analizador léxico.pdf presentacion
Función del analizador léxico.pdf presentacion
 
Innovaciones tecnologicas en el siglo 21
Innovaciones tecnologicas en el siglo 21Innovaciones tecnologicas en el siglo 21
Innovaciones tecnologicas en el siglo 21
 
Editorial. Grupo de 12B de La Salle Margarita.pdf
Editorial. Grupo de 12B de La Salle Margarita.pdfEditorial. Grupo de 12B de La Salle Margarita.pdf
Editorial. Grupo de 12B de La Salle Margarita.pdf
 
Resistencia extrema al cobre por un consorcio bacteriano conformado por Sulfo...
Resistencia extrema al cobre por un consorcio bacteriano conformado por Sulfo...Resistencia extrema al cobre por un consorcio bacteriano conformado por Sulfo...
Resistencia extrema al cobre por un consorcio bacteriano conformado por Sulfo...
 
presentación del desensamble y ensamble del equipo de computo en base a las n...
presentación del desensamble y ensamble del equipo de computo en base a las n...presentación del desensamble y ensamble del equipo de computo en base a las n...
presentación del desensamble y ensamble del equipo de computo en base a las n...
 
redes informaticas en una oficina administrativa
redes informaticas en una oficina administrativaredes informaticas en una oficina administrativa
redes informaticas en una oficina administrativa
 
Editorial. Grupo de 12B. La Salle Margarita.pdf
Editorial. Grupo de 12B. La Salle Margarita.pdfEditorial. Grupo de 12B. La Salle Margarita.pdf
Editorial. Grupo de 12B. La Salle Margarita.pdf
 
investigación de los Avances tecnológicos del siglo XXI
investigación de los Avances tecnológicos del siglo XXIinvestigación de los Avances tecnológicos del siglo XXI
investigación de los Avances tecnológicos del siglo XXI
 

Xna game studio presentación 05

  • 1. Desplazamientos y movimientos de Sprites Juan Carlos Zuluaga
  • 2. Introducción  En la lección #3, creamos un fondo desplazable, en el cual utilizamos varias líneas de código en varios segmentos de nuestro programa. ¿Pero que pasa si deseamos colocar otros sprites que se muevan al unísono con el fondo desplazable?... Pues toca replicar esa lógica para todos los sprites, haciendo mal uso del Copy And Paste  La solución será crear una clase desplazamiento, en la cual empaquetemos toda esta funcionalidad donde simplifiquemos la labor como programadores  Siendo aun más ambiciosos, vamos a crear otra clase de movimiento, donde podamos mover sprites en sentido contrario como se mueve nuestro fondo desplazable
  • 3.  Cree un proyecto XNA  Cree la carpeta Imágenes y agregue las imágenes que utilizaremos en este proyecto: animacionHorse2.png, Arbol.png, Background2.png, BalaMarioBros.png, BalaMarioBros2.png y Piedra.png  Agregue al proyecto la clase Animation que hemos utilizado en proyectos anteriores, no olvide cambiarle el nombre del NameSpace por el actual  Cree la nueva clase Desplazamiento y reemplace los Using por estos: using System; using Microsoft.Xna.Framework; using Microsoft.Xna.Framework.Content; using Microsoft.Xna.Framework.Graphics;  Agregue estos atributos a la clase Desplazamiento : private int x1; private int x2; private int y1; private int y2; private int imageWidth; private int imageHeigth; private int windowWidth; private int windowHeigth; private int velocidad; private int sentido; // 0: Derecha - Izquierda, 1: Izquierda - Derecha, 2: Arriba - Abajo, 3: Abajo - Arriba private Rectangle rec1; private Rectangle rec2; private Texture2D textura;
  • 4.  Agregue el método Initializate con el siguiente código: public void Initialize(Texture2D textura, int x, int y, int imageWidth, int imageHeigth, int windowWidth, int windowHeigth, int velocidad, int sentido) { this.textura = textura; this.imageHeigth = imageHeigth; this.imageWidth = imageWidth; this.windowHeigth = windowHeigth; this.windowWidth = windowWidth; this.velocidad = velocidad; this.sentido = sentido; this.x1 = x; this.y1 = y; if (sentido == 0) { rec1 = new Rectangle(x1, y1, imageWidth, imageHeigth); x2 = x1 + windowWidth; rec2 = new Rectangle(x2, y1, imageHeigth, imageHeigth); } else if (sentido == 1) { rec1 = new Rectangle(x1, y1, imageWidth, imageHeigth); x2 = x1 - windowWidth; rec2 = new Rectangle(x2, y1, imageHeigth, imageHeigth); }
  • 5. else if (sentido == 2) { rec1 = new Rectangle(x1, y1, imageWidth, imageHeigth); y2 = y1 + windowHeigth; rec2 = new Rectangle(x1, y2, imageHeigth, imageHeigth); } else { rec1 = new Rectangle(x1, y1, imageWidth, imageHeigth); y2 = y1 - windowHeigth; rec2 = new Rectangle(x1, y2, imageHeigth, imageHeigth); } }  Agregue el método Update con el siguiente código: public void Update() { if (sentido == 0) { x1 -= velocidad; x2 -= velocidad; } else if (sentido == 1) { x1 += velocidad; x2 += velocidad; }
  • 6. else if (sentido == 2) { y1 -= velocidad; y2 -= velocidad; } else { y1 += velocidad; y2 += velocidad; } if (sentido == 0 || sentido == 1) { rec1 = new Rectangle(x1, y1, imageWidth, imageHeigth); rec2 = new Rectangle(x2, y1, imageWidth, imageHeigth); } else { rec1 = new Rectangle(x1, y1, imageWidth, imageHeigth); rec2 = new Rectangle(x1, y2, imageWidth, imageHeigth); }
  • 7. if (sentido == 0) { if (rec1.X == -windowWidth) { x1 = 0; } if (rec2.X == 0) { x2 = windowWidth; } } else if (sentido == 1) { if (rec1.X == windowWidth) { x1 = 0; } if (rec2.X == 0) { x2 = -windowWidth; } }
  • 8. else if (sentido == 2) { if (rec1.Y == -windowHeigth) { y1 = 0; } if (rec2.Y == 0) { y2 = windowHeigth; } } else { if (rec1.Y == windowHeigth) { y1 = 0; } if (rec2.Y == 0) { y2 = -windowHeigth; } } }
  • 9.  Agregue el método Draw con el siguiente código: public void Draw(SpriteBatch spriteBatch) { spriteBatch.Draw(textura, rec1, Color.White); spriteBatch.Draw(textura, rec2, Color.White); }  Cree la nueva clase Movimiento y reemplace los Using por estos: using System; using Microsoft.Xna.Framework; using Microsoft.Xna.Framework.Content; using Microsoft.Xna.Framework.Graphics;  Agregue estos atributos a la clase Movimiento: private int x; private int y; private int imageWidth; private int imageHeigth; private int windowWidth; private int windowHeigth; private int velocidad; private int sentido; // 0: Derecha - Izquierda, 1: Izquierda - Derecha, 2: Arriba - Abajo, 3: Abajo - Arriba private Rectangle rectangulo; private Texture2D textura;
  • 10.  Agregue el método Initializate con el siguiente código: public void Initialize(Texture2D textura, int x, int y, int imageWidth, int imageHeigth, int windowWidth, int windowHeigth, int velocidad, int sentido) { this.textura = textura; this.imageHeigth = imageHeigth; this.imageWidth = imageWidth; this.windowHeigth = windowHeigth; this.windowWidth = windowWidth; this.velocidad = velocidad; this.sentido = sentido; this.x = x; this.y = y; rectangulo = new Rectangle(x, y, imageWidth, imageHeigth); }  Agregue el método Update con el siguiente código:
  • 11. public void Update() { if (sentido == 0) { x += velocidad; if (x == windowWidth) x = 0; } else if (sentido == 1) { x -= velocidad; if (x == -imageWidth) x = windowWidth - imageWidth; } else if (sentido == 2) { y += velocidad; if (y == windowHeigth) y = 0; } else { y -= velocidad; if (y == -imageHeigth) y = windowHeigth - imageHeigth; } rectangulo.X = x; rectangulo.Y = y; }  Agregue el método Draw con el siguiente código:
  • 12. public void Draw(SpriteBatch spriteBatch) { spriteBatch.Draw(textura, rectangulo, Color.White); }  Ya tenemos las tres clases que utilizaremos regularmente en casi todos los juegos que hagamos: Animation, Desplazamiento y Movimiento  Creemos estos atributos en la clase Game1: Desplazamiento escena; Desplazamiento arbol; Desplazamiento piedra; Movimiento bala1; Movimiento bala2; Animation horse; int width; int height;  En el constructor de Game1, agreguemos las siguientes líneas: // change windows size width = 800; height = 600; graphics.PreferredBackBufferWidth = width; graphics.PreferredBackBufferHeight = height;  En el Initialize: escena = new Desplazamiento(); arbol = new Desplazamiento(); piedra = new Desplazamiento(); bala1 = new Movimiento(); bala2 = new Movimiento(); horse = new Animation();
  • 13.  En el Load: Texture2D texturaEscena = Content.Load<Texture2D>("Imagenes/Background2"); escena.Initialize(texturaEscena, 0, 0, width, height, width, height, 5, 0); Texture2D texturaArbol = Content.Load<Texture2D>("Imagenes/Arbol"); arbol.Initialize(texturaArbol, 50, 200, 200, 200, width, height, 5, 0); Texture2D texturaPiedra = Content.Load<Texture2D>("Imagenes/Piedra"); piedra.Initialize(texturaPiedra, 300, 200, 200, 200, width, height, 5, 0); Texture2D texturaBala1 = Content.Load<Texture2D>("Imagenes/BalaMarioBros"); bala1.Initialize(texturaBala1, width - 80, 100, 80, 50, width, height, 10, 1); Texture2D texturaBala2 = Content.Load<Texture2D>("Imagenes/BalaMarioBros2"); bala2.Initialize(texturaBala2, 0, 100, 80, 50, width, height, 10, 0); Texture2D texturaHorse = Content.Load<Texture2D>("Imagenes/animacionHorse2"); horse.Initialize(texturaHorse, new Vector2(300, 400), 150, 98, 5, 80, Color.White, 1f, true);  En el Update: escena.Update(); piedra.Update(); arbol.Update(); bala1.Update(); bala2.Update(); horse.Update(gameTime);
  • 14.  En el Draw: spriteBatch.Begin(); escena.Draw(spriteBatch); piedra.Draw(spriteBatch); arbol.Draw(spriteBatch); bala1.Draw(spriteBatch); bala2.Draw(spriteBatch); horse.Draw(spriteBatch); spriteBatch.End();  Ensaye diferentes parámetros de la clase Desplazamiento y Movimiento y saque sus concluisones
  • 15. Taller #5  Realizar un juego donde aparezcan 2 animaciones, 1 fondo desplazable, 3 objetos moviéndose con el fondo desplazable, 3 objetos moviéndose separadamente del fondo desplazable, agregue una canción de fondo y 2 efectos de sonido.