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

Presentación guía sencilla en Microsoft Excel.pptx
Presentación guía sencilla en Microsoft Excel.pptxPresentación guía sencilla en Microsoft Excel.pptx
Presentación guía sencilla en Microsoft Excel.pptxLolaBunny11
 
CLASE DE TECNOLOGIA E INFORMATICA PRIMARIA
CLASE  DE TECNOLOGIA E INFORMATICA PRIMARIACLASE  DE TECNOLOGIA E INFORMATICA PRIMARIA
CLASE DE TECNOLOGIA E INFORMATICA PRIMARIAWilbisVega
 
POWER POINT YUCRAElabore una PRESENTACIÓN CORTA sobre el video película: La C...
POWER POINT YUCRAElabore una PRESENTACIÓN CORTA sobre el video película: La C...POWER POINT YUCRAElabore una PRESENTACIÓN CORTA sobre el video película: La C...
POWER POINT YUCRAElabore una PRESENTACIÓN CORTA sobre el video película: La C...silviayucra2
 
Redes direccionamiento y subredes ipv4 2024 .pdf
Redes direccionamiento y subredes ipv4 2024 .pdfRedes direccionamiento y subredes ipv4 2024 .pdf
Redes direccionamiento y subredes ipv4 2024 .pdfsoporteupcology
 
EPA-pdf resultado da prova presencial Uninove
EPA-pdf resultado da prova presencial UninoveEPA-pdf resultado da prova presencial Uninove
EPA-pdf resultado da prova presencial UninoveFagnerLisboa3
 
Trabajo Mas Completo De Excel en clase tecnología
Trabajo Mas Completo De Excel en clase tecnologíaTrabajo Mas Completo De Excel en clase tecnología
Trabajo Mas Completo De Excel en clase tecnologíassuserf18419
 
Proyecto integrador. Las TIC en la sociedad S4.pptx
Proyecto integrador. Las TIC en la sociedad S4.pptxProyecto integrador. Las TIC en la sociedad S4.pptx
Proyecto integrador. Las TIC en la sociedad S4.pptx241521559
 
Global Azure Lima 2024 - Integración de Datos con Microsoft Fabric
Global Azure Lima 2024 - Integración de Datos con Microsoft FabricGlobal Azure Lima 2024 - Integración de Datos con Microsoft Fabric
Global Azure Lima 2024 - Integración de Datos con Microsoft FabricKeyla Dolores Méndez
 
9egb-lengua y Literatura.pdf_texto del estudiante
9egb-lengua y Literatura.pdf_texto del estudiante9egb-lengua y Literatura.pdf_texto del estudiante
9egb-lengua y Literatura.pdf_texto del estudianteAndreaHuertas24
 
Desarrollo Web Moderno con Svelte 2024.pdf
Desarrollo Web Moderno con Svelte 2024.pdfDesarrollo Web Moderno con Svelte 2024.pdf
Desarrollo Web Moderno con Svelte 2024.pdfJulian Lamprea
 
International Women's Day Sucre 2024 (IWD)
International Women's Day Sucre 2024 (IWD)International Women's Day Sucre 2024 (IWD)
International Women's Day Sucre 2024 (IWD)GDGSucre
 
pruebas unitarias unitarias en java con JUNIT
pruebas unitarias unitarias en java con JUNITpruebas unitarias unitarias en java con JUNIT
pruebas unitarias unitarias en java con JUNITMaricarmen Sánchez Ruiz
 
guía de registro de slideshare por Brayan Joseph
guía de registro de slideshare por Brayan Josephguía de registro de slideshare por Brayan Joseph
guía de registro de slideshare por Brayan JosephBRAYANJOSEPHPEREZGOM
 

Último (13)

Presentación guía sencilla en Microsoft Excel.pptx
Presentación guía sencilla en Microsoft Excel.pptxPresentación guía sencilla en Microsoft Excel.pptx
Presentación guía sencilla en Microsoft Excel.pptx
 
CLASE DE TECNOLOGIA E INFORMATICA PRIMARIA
CLASE  DE TECNOLOGIA E INFORMATICA PRIMARIACLASE  DE TECNOLOGIA E INFORMATICA PRIMARIA
CLASE DE TECNOLOGIA E INFORMATICA PRIMARIA
 
POWER POINT YUCRAElabore una PRESENTACIÓN CORTA sobre el video película: La C...
POWER POINT YUCRAElabore una PRESENTACIÓN CORTA sobre el video película: La C...POWER POINT YUCRAElabore una PRESENTACIÓN CORTA sobre el video película: La C...
POWER POINT YUCRAElabore una PRESENTACIÓN CORTA sobre el video película: La C...
 
Redes direccionamiento y subredes ipv4 2024 .pdf
Redes direccionamiento y subredes ipv4 2024 .pdfRedes direccionamiento y subredes ipv4 2024 .pdf
Redes direccionamiento y subredes ipv4 2024 .pdf
 
EPA-pdf resultado da prova presencial Uninove
EPA-pdf resultado da prova presencial UninoveEPA-pdf resultado da prova presencial Uninove
EPA-pdf resultado da prova presencial Uninove
 
Trabajo Mas Completo De Excel en clase tecnología
Trabajo Mas Completo De Excel en clase tecnologíaTrabajo Mas Completo De Excel en clase tecnología
Trabajo Mas Completo De Excel en clase tecnología
 
Proyecto integrador. Las TIC en la sociedad S4.pptx
Proyecto integrador. Las TIC en la sociedad S4.pptxProyecto integrador. Las TIC en la sociedad S4.pptx
Proyecto integrador. Las TIC en la sociedad S4.pptx
 
Global Azure Lima 2024 - Integración de Datos con Microsoft Fabric
Global Azure Lima 2024 - Integración de Datos con Microsoft FabricGlobal Azure Lima 2024 - Integración de Datos con Microsoft Fabric
Global Azure Lima 2024 - Integración de Datos con Microsoft Fabric
 
9egb-lengua y Literatura.pdf_texto del estudiante
9egb-lengua y Literatura.pdf_texto del estudiante9egb-lengua y Literatura.pdf_texto del estudiante
9egb-lengua y Literatura.pdf_texto del estudiante
 
Desarrollo Web Moderno con Svelte 2024.pdf
Desarrollo Web Moderno con Svelte 2024.pdfDesarrollo Web Moderno con Svelte 2024.pdf
Desarrollo Web Moderno con Svelte 2024.pdf
 
International Women's Day Sucre 2024 (IWD)
International Women's Day Sucre 2024 (IWD)International Women's Day Sucre 2024 (IWD)
International Women's Day Sucre 2024 (IWD)
 
pruebas unitarias unitarias en java con JUNIT
pruebas unitarias unitarias en java con JUNITpruebas unitarias unitarias en java con JUNIT
pruebas unitarias unitarias en java con JUNIT
 
guía de registro de slideshare por Brayan Joseph
guía de registro de slideshare por Brayan Josephguía de registro de slideshare por Brayan Joseph
guía de registro de slideshare por Brayan Joseph
 

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.