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 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
 

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

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
 

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 (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

redes informaticas en una oficina administrativa
redes informaticas en una oficina administrativaredes informaticas en una oficina administrativa
redes informaticas en una oficina administrativa
nicho110
 

Último (11)

redes informaticas en una oficina administrativa
redes informaticas en una oficina administrativaredes informaticas en una oficina administrativa
redes informaticas en una oficina administrativa
 
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...
 
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
 
Innovaciones tecnologicas en el siglo 21
Innovaciones tecnologicas en el siglo 21Innovaciones tecnologicas en el siglo 21
Innovaciones tecnologicas en el siglo 21
 
PROYECTO FINAL. Tutorial para publicar en SlideShare.pptx
PROYECTO FINAL. Tutorial para publicar en SlideShare.pptxPROYECTO FINAL. Tutorial para publicar en SlideShare.pptx
PROYECTO FINAL. Tutorial para publicar en SlideShare.pptx
 
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
 
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.
 
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
 
Buenos_Aires_Meetup_Redis_20240430_.pptx
Buenos_Aires_Meetup_Redis_20240430_.pptxBuenos_Aires_Meetup_Redis_20240430_.pptx
Buenos_Aires_Meetup_Redis_20240430_.pptx
 
Avances tecnológicos del siglo XXI 10-07 eyvana
Avances tecnológicos del siglo XXI 10-07 eyvanaAvances tecnológicos del siglo XXI 10-07 eyvana
Avances tecnológicos del siglo XXI 10-07 eyvana
 
Avances tecnológicos del siglo XXI y ejemplos de estos
Avances tecnológicos del siglo XXI y ejemplos de estosAvances tecnológicos del siglo XXI y ejemplos de estos
Avances tecnológicos del siglo XXI y ejemplos de estos
 

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.