SlideShare uma empresa 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.

Mais conteúdo relacionado

Mais procurados

Tutorial game maker
Tutorial game makerTutorial game maker
Tutorial game maker
Joserichi
 
Creando juegos con game maker 8
Creando juegos con game maker 8Creando juegos con game maker 8
Creando juegos con game maker 8
Henrydarklite
 
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
Robertho Mathias
 
Practicas derive 6
Practicas derive 6Practicas derive 6
Practicas derive 6
Edson Olvera
 
Manual de practicas de Open GL
Manual de practicas de Open GLManual de practicas de Open GL
Manual de practicas de Open GL
Alincita Simon
 
Presentacion del proyecto
Presentacion del proyectoPresentacion del proyecto
Presentacion del proyecto
123santi9
 
manual de practicas de opengl
manual de practicas de openglmanual de practicas de opengl
manual de practicas de opengl
Alincita Simon
 

Mais procurados (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)
 

Semelhante a Xna game studio presentación 05

Proyecto integrador i
Proyecto integrador  iProyecto integrador  i
Proyecto integrador i
ptty01
 
Renderización en java
Renderización en javaRenderización en java
Renderización en java
aleja0940
 

Semelhante 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
 

Mais 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

Chat GPT para la educación Latinoamerica
Chat GPT para la educación LatinoamericaChat GPT para la educación Latinoamerica
Chat GPT para la educación Latinoamerica
EdwinGarca59
 
editorial de informática de los sueños.docx
editorial de informática de los sueños.docxeditorial de informática de los sueños.docx
editorial de informática de los sueños.docx
ssusere34b451
 

Último (20)

Chat GPT para la educación Latinoamerica
Chat GPT para la educación LatinoamericaChat GPT para la educación Latinoamerica
Chat GPT para la educación Latinoamerica
 
Uso de las TIC en la vida cotidiana .
Uso de las TIC en la vida cotidiana       .Uso de las TIC en la vida cotidiana       .
Uso de las TIC en la vida cotidiana .
 
Tipos de Datos de Microsoft Access-JOEL GARCIA.pptx
Tipos de Datos de Microsoft Access-JOEL GARCIA.pptxTipos de Datos de Microsoft Access-JOEL GARCIA.pptx
Tipos de Datos de Microsoft Access-JOEL GARCIA.pptx
 
Ejercicio 1 periodo 2 de Tecnología 2024
Ejercicio 1 periodo 2 de Tecnología 2024Ejercicio 1 periodo 2 de Tecnología 2024
Ejercicio 1 periodo 2 de Tecnología 2024
 
innovacion banking & warehouse 2024 blog
innovacion banking & warehouse 2024 bloginnovacion banking & warehouse 2024 blog
innovacion banking & warehouse 2024 blog
 
herramientas web para estudiantes interesados en el tema
herramientas web para estudiantes interesados en el temaherramientas web para estudiantes interesados en el tema
herramientas web para estudiantes interesados en el tema
 
Tipos de datos en Microsoft Access de Base de Datos
Tipos de datos en Microsoft Access de Base de DatosTipos de datos en Microsoft Access de Base de Datos
Tipos de datos en Microsoft Access de Base de Datos
 
Electricidad Libro compendio de temas estudiados.docx
Electricidad Libro compendio de temas estudiados.docxElectricidad Libro compendio de temas estudiados.docx
Electricidad Libro compendio de temas estudiados.docx
 
BUSCADORES DE INTERNET (Universidad de Sonora).
BUSCADORES DE INTERNET (Universidad de Sonora).BUSCADORES DE INTERNET (Universidad de Sonora).
BUSCADORES DE INTERNET (Universidad de Sonora).
 
De Olmos Santiago_Dolores _ M1S3AI6.pptx
De Olmos Santiago_Dolores _ M1S3AI6.pptxDe Olmos Santiago_Dolores _ M1S3AI6.pptx
De Olmos Santiago_Dolores _ M1S3AI6.pptx
 
JORNADA INTELIGENCIA ARTIFICIAL Y REALIDAD VIRTUAL
JORNADA INTELIGENCIA ARTIFICIAL Y REALIDAD VIRTUALJORNADA INTELIGENCIA ARTIFICIAL Y REALIDAD VIRTUAL
JORNADA INTELIGENCIA ARTIFICIAL Y REALIDAD VIRTUAL
 
Redes Neuronales profundas convolucionales CNN ́s-1.pdf
Redes Neuronales profundas convolucionales CNN ́s-1.pdfRedes Neuronales profundas convolucionales CNN ́s-1.pdf
Redes Neuronales profundas convolucionales CNN ́s-1.pdf
 
PRÁCTICA Nº 4: “Análisis de secuencias del ADN con el software BioEdit y uso ...
PRÁCTICA Nº 4: “Análisis de secuencias del ADN con el software BioEdit y uso ...PRÁCTICA Nº 4: “Análisis de secuencias del ADN con el software BioEdit y uso ...
PRÁCTICA Nº 4: “Análisis de secuencias del ADN con el software BioEdit y uso ...
 
Imágenes digitales: Calidad de la información
Imágenes digitales: Calidad de la informaciónImágenes digitales: Calidad de la información
Imágenes digitales: Calidad de la información
 
editorial de informática de los sueños.docx
editorial de informática de los sueños.docxeditorial de informática de los sueños.docx
editorial de informática de los sueños.docx
 
Desarrollo del Dominio del Internet - Estrada
Desarrollo del Dominio del Internet - EstradaDesarrollo del Dominio del Internet - Estrada
Desarrollo del Dominio del Internet - Estrada
 
Navegadores de internet - Nuevas Tecnologías de la Información y la Comunicación
Navegadores de internet - Nuevas Tecnologías de la Información y la ComunicaciónNavegadores de internet - Nuevas Tecnologías de la Información y la Comunicación
Navegadores de internet - Nuevas Tecnologías de la Información y la Comunicación
 
Introduccion-a-la-electronica-industrial.pptx
Introduccion-a-la-electronica-industrial.pptxIntroduccion-a-la-electronica-industrial.pptx
Introduccion-a-la-electronica-industrial.pptx
 
VelderrainPerez_Paola_M1C1G63-097.pptx. LAS TiC
VelderrainPerez_Paola_M1C1G63-097.pptx. LAS TiCVelderrainPerez_Paola_M1C1G63-097.pptx. LAS TiC
VelderrainPerez_Paola_M1C1G63-097.pptx. LAS TiC
 
avancestecnologicossigloveintiunoprofetengohambreayuda
avancestecnologicossigloveintiunoprofetengohambreayudaavancestecnologicossigloveintiunoprofetengohambreayuda
avancestecnologicossigloveintiunoprofetengohambreayuda
 

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.