SlideShare uma empresa Scribd logo
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
 
Aventura
AventuraAventura
Sergio
SergioSergio
Sergio
asergio038
 
Java AWT Tres en Raya
Java AWT Tres en RayaJava AWT Tres en Raya
Java AWT Tres en Raya
jubacalo
 
Practicas derive 6
Practicas derive 6Practicas derive 6
Practicas derive 6
Edson Olvera
 
Comandos r
Comandos rComandos 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
Ricardo Altamirano
 
Sudoku
SudokuSudoku
Sudoku
alberpilot
 
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
 
Presentación3d
Presentación3dPresentación3d
Presentación3d
mephistodark
 
Presentacion del proyecto
Presentacion del proyectoPresentacion del proyecto
Presentacion del proyecto
123santi9
 
Creacion de tablas geograficas en postgres
Creacion de tablas geograficas en postgresCreacion de tablas geograficas en postgres
Creacion de tablas geograficas en postgres
Jorge Velazquez
 
Botones pulsantes
Botones pulsantesBotones pulsantes
Botones pulsantes
cristian guevara
 
Tutorial unity interaccion con objetos
Tutorial unity interaccion con objetosTutorial unity interaccion con objetos
Tutorial unity interaccion con objetos
Francisco Llanquipichun
 
Estela y naye
Estela y nayeEstela y naye
Estela y naye
Guillermo Mendoza
 
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 opengl
Alincita Simon
 
Acmar trucos de visual basic(2)
Acmar   trucos de visual basic(2)Acmar   trucos de visual basic(2)
Acmar trucos de visual basic(2)
Ivan Ramirez Iglesias
 

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

Xna game studio presentación 02
Xna game studio   presentación 02Xna game studio   presentación 02
Xna game studio presentación 02
Juan Cardona
 
Xna game studio presentación 03
Xna game studio   presentación 03Xna game studio   presentación 03
Xna game studio presentación 03
Juan Cardona
 
Presentacion420
Presentacion420Presentacion420
Presentacion420
Titiushko Jazz
 
Presentacion420
Presentacion420Presentacion420
Presentacion420
Titiushko Jazz
 
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
kdeespana
 
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
Plain Concepts
 
Presentacion proyecto
Presentacion proyectoPresentacion proyecto
Presentacion proyecto
Roberto Perales
 
Presentacion proyecto
Presentacion proyectoPresentacion proyecto
Presentacion proyecto
Roberto Perales
 
Proyecto integrador i
Proyecto integrador  iProyecto integrador  i
Proyecto integrador i
ptty01
 
Multimedia en android
Multimedia en androidMultimedia en android
Multimedia en android
Rafa González Jiménez
 
Tutorial de Java
Tutorial de JavaTutorial de Java
Tutorial de Java
equipotresamp
 
Programación con Pygame III
Programación con Pygame IIIProgramación con Pygame III
Programación con Pygame III
Fernando Salamero
 
Greenfoot & Kinect
Greenfoot & KinectGreenfoot & Kinect
Greenfoot & Kinect
Eduardo Calvillo Gamez
 
How to zoom in images
How to zoom in imagesHow to zoom in images
How to zoom in images
Vicente Gerardo Guzman Lucio
 
Informe#23
Informe#23Informe#23
Informe#23
paulcuenca9
 
Greenfoot & Kinect (Parte 3)
Greenfoot & Kinect (Parte 3)Greenfoot & Kinect (Parte 3)
Greenfoot & Kinect (Parte 3)
Eduardo Calvillo Gamez
 
Renderización en java
Renderización en javaRenderización en java
Renderización en java
aleja0940
 
logo a logo
logo a logologo a logo
logo a logo
mekonee
 
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 laboratorio
JeffersonVega16
 

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

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

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

Manual de soporte y mantenimiento de equipo de cómputo
Manual de soporte y mantenimiento de equipo de cómputoManual de soporte y mantenimiento de equipo de cómputo
Manual de soporte y mantenimiento de equipo de cómputo
doctorsoluciones34
 
Modo test refrigeradores y codigos de errores 2018 V2.pdf
Modo test refrigeradores y codigos de errores 2018 V2.pdfModo test refrigeradores y codigos de errores 2018 V2.pdf
Modo test refrigeradores y codigos de errores 2018 V2.pdf
ranierglez
 
Presentación Seguridad Digital Profesional Azul Oscuro (1).pdf
Presentación Seguridad Digital Profesional Azul Oscuro (1).pdfPresentación Seguridad Digital Profesional Azul Oscuro (1).pdf
Presentación Seguridad Digital Profesional Azul Oscuro (1).pdf
giampierdiaz5
 
Projecte Iniciativa TIC 2024 KAWARU CONSULTING. inCV.pdf
Projecte Iniciativa TIC 2024 KAWARU CONSULTING. inCV.pdfProjecte Iniciativa TIC 2024 KAWARU CONSULTING. inCV.pdf
Projecte Iniciativa TIC 2024 KAWARU CONSULTING. inCV.pdf
Festibity
 
Projecte Iniciativa TIC 2024 HPE. inCV.pdf
Projecte Iniciativa TIC 2024 HPE. inCV.pdfProjecte Iniciativa TIC 2024 HPE. inCV.pdf
Projecte Iniciativa TIC 2024 HPE. inCV.pdf
Festibity
 
Flows: Mejores Prácticas y Nuevos Features
Flows: Mejores Prácticas y Nuevos FeaturesFlows: Mejores Prácticas y Nuevos Features
Flows: Mejores Prácticas y Nuevos Features
Paola De la Torre
 
Infografia TCP/IP (Transmission Control Protocol/Internet Protocol)
Infografia TCP/IP (Transmission Control Protocol/Internet Protocol)Infografia TCP/IP (Transmission Control Protocol/Internet Protocol)
Infografia TCP/IP (Transmission Control Protocol/Internet Protocol)
codesiret
 
Nuevos tiempos, nuevos espacios.docxdsdsad
Nuevos tiempos, nuevos espacios.docxdsdsadNuevos tiempos, nuevos espacios.docxdsdsad
Nuevos tiempos, nuevos espacios.docxdsdsad
larapalaciosmonzon28
 
Second Life, informe de actividad del maestro Tapia
Second Life, informe de actividad del maestro TapiaSecond Life, informe de actividad del maestro Tapia
Second Life, informe de actividad del maestro Tapia
al050121024
 
Presentación de Tic en educación y sobre blogger
Presentación de Tic en educación y sobre bloggerPresentación de Tic en educación y sobre blogger
Presentación de Tic en educación y sobre blogger
larapalaciosmonzon28
 
Inteligencia Artificial
Inteligencia ArtificialInteligencia Artificial
Inteligencia Artificial
YashiraPaye
 
Catalogo general tarifas 2024 Vaillant. Amado Salvador Distribuidor Oficial e...
Catalogo general tarifas 2024 Vaillant. Amado Salvador Distribuidor Oficial e...Catalogo general tarifas 2024 Vaillant. Amado Salvador Distribuidor Oficial e...
Catalogo general tarifas 2024 Vaillant. Amado Salvador Distribuidor Oficial e...
AMADO SALVADOR
 
Programming & Artificial Intelligence ebook.pdf
Programming & Artificial Intelligence ebook.pdfProgramming & Artificial Intelligence ebook.pdf
Programming & Artificial Intelligence ebook.pdf
Manuel Diaz
 
MONOGRAFIA memoria RAM.docx trabajo DE TECNOLOGIA
MONOGRAFIA memoria RAM.docx trabajo DE TECNOLOGIAMONOGRAFIA memoria RAM.docx trabajo DE TECNOLOGIA
MONOGRAFIA memoria RAM.docx trabajo DE TECNOLOGIA
leia ereni
 
Refrigeradores Samsung Modo Test y Forzado
Refrigeradores Samsung Modo Test y ForzadoRefrigeradores Samsung Modo Test y Forzado
Refrigeradores Samsung Modo Test y Forzado
NicandroMartinez2
 
Informació Projecte Iniciativa TIC HPE.pdf
Informació Projecte Iniciativa TIC HPE.pdfInformació Projecte Iniciativa TIC HPE.pdf
Informació Projecte Iniciativa TIC HPE.pdf
Festibity
 
edublogs info.docx asdasfasfsawqrdqwfqwfqwfq
edublogs info.docx asdasfasfsawqrdqwfqwfqwfqedublogs info.docx asdasfasfsawqrdqwfqwfqwfq
edublogs info.docx asdasfasfsawqrdqwfqwfqwfq
larapalaciosmonzon28
 
Manual de Soporte y mantenimiento de equipo de cómputos
Manual de Soporte y mantenimiento de equipo de cómputosManual de Soporte y mantenimiento de equipo de cómputos
Manual de Soporte y mantenimiento de equipo de cómputos
cbtechchihuahua
 
Mantenimiento de sistemas eléctricos y electrónicosarticles-241712_recurso_6....
Mantenimiento de sistemas eléctricos y electrónicosarticles-241712_recurso_6....Mantenimiento de sistemas eléctricos y electrónicosarticles-241712_recurso_6....
Mantenimiento de sistemas eléctricos y electrónicosarticles-241712_recurso_6....
MiguelAtencio10
 
TIC en educacion.rtf.docxlolololololololo
TIC en educacion.rtf.docxlolololololololoTIC en educacion.rtf.docxlolololololololo
TIC en educacion.rtf.docxlolololololololo
KukiiSanchez
 

Último (20)

Manual de soporte y mantenimiento de equipo de cómputo
Manual de soporte y mantenimiento de equipo de cómputoManual de soporte y mantenimiento de equipo de cómputo
Manual de soporte y mantenimiento de equipo de cómputo
 
Modo test refrigeradores y codigos de errores 2018 V2.pdf
Modo test refrigeradores y codigos de errores 2018 V2.pdfModo test refrigeradores y codigos de errores 2018 V2.pdf
Modo test refrigeradores y codigos de errores 2018 V2.pdf
 
Presentación Seguridad Digital Profesional Azul Oscuro (1).pdf
Presentación Seguridad Digital Profesional Azul Oscuro (1).pdfPresentación Seguridad Digital Profesional Azul Oscuro (1).pdf
Presentación Seguridad Digital Profesional Azul Oscuro (1).pdf
 
Projecte Iniciativa TIC 2024 KAWARU CONSULTING. inCV.pdf
Projecte Iniciativa TIC 2024 KAWARU CONSULTING. inCV.pdfProjecte Iniciativa TIC 2024 KAWARU CONSULTING. inCV.pdf
Projecte Iniciativa TIC 2024 KAWARU CONSULTING. inCV.pdf
 
Projecte Iniciativa TIC 2024 HPE. inCV.pdf
Projecte Iniciativa TIC 2024 HPE. inCV.pdfProjecte Iniciativa TIC 2024 HPE. inCV.pdf
Projecte Iniciativa TIC 2024 HPE. inCV.pdf
 
Flows: Mejores Prácticas y Nuevos Features
Flows: Mejores Prácticas y Nuevos FeaturesFlows: Mejores Prácticas y Nuevos Features
Flows: Mejores Prácticas y Nuevos Features
 
Infografia TCP/IP (Transmission Control Protocol/Internet Protocol)
Infografia TCP/IP (Transmission Control Protocol/Internet Protocol)Infografia TCP/IP (Transmission Control Protocol/Internet Protocol)
Infografia TCP/IP (Transmission Control Protocol/Internet Protocol)
 
Nuevos tiempos, nuevos espacios.docxdsdsad
Nuevos tiempos, nuevos espacios.docxdsdsadNuevos tiempos, nuevos espacios.docxdsdsad
Nuevos tiempos, nuevos espacios.docxdsdsad
 
Second Life, informe de actividad del maestro Tapia
Second Life, informe de actividad del maestro TapiaSecond Life, informe de actividad del maestro Tapia
Second Life, informe de actividad del maestro Tapia
 
Presentación de Tic en educación y sobre blogger
Presentación de Tic en educación y sobre bloggerPresentación de Tic en educación y sobre blogger
Presentación de Tic en educación y sobre blogger
 
Inteligencia Artificial
Inteligencia ArtificialInteligencia Artificial
Inteligencia Artificial
 
Catalogo general tarifas 2024 Vaillant. Amado Salvador Distribuidor Oficial e...
Catalogo general tarifas 2024 Vaillant. Amado Salvador Distribuidor Oficial e...Catalogo general tarifas 2024 Vaillant. Amado Salvador Distribuidor Oficial e...
Catalogo general tarifas 2024 Vaillant. Amado Salvador Distribuidor Oficial e...
 
Programming & Artificial Intelligence ebook.pdf
Programming & Artificial Intelligence ebook.pdfProgramming & Artificial Intelligence ebook.pdf
Programming & Artificial Intelligence ebook.pdf
 
MONOGRAFIA memoria RAM.docx trabajo DE TECNOLOGIA
MONOGRAFIA memoria RAM.docx trabajo DE TECNOLOGIAMONOGRAFIA memoria RAM.docx trabajo DE TECNOLOGIA
MONOGRAFIA memoria RAM.docx trabajo DE TECNOLOGIA
 
Refrigeradores Samsung Modo Test y Forzado
Refrigeradores Samsung Modo Test y ForzadoRefrigeradores Samsung Modo Test y Forzado
Refrigeradores Samsung Modo Test y Forzado
 
Informació Projecte Iniciativa TIC HPE.pdf
Informació Projecte Iniciativa TIC HPE.pdfInformació Projecte Iniciativa TIC HPE.pdf
Informació Projecte Iniciativa TIC HPE.pdf
 
edublogs info.docx asdasfasfsawqrdqwfqwfqwfq
edublogs info.docx asdasfasfsawqrdqwfqwfqwfqedublogs info.docx asdasfasfsawqrdqwfqwfqwfq
edublogs info.docx asdasfasfsawqrdqwfqwfqwfq
 
Manual de Soporte y mantenimiento de equipo de cómputos
Manual de Soporte y mantenimiento de equipo de cómputosManual de Soporte y mantenimiento de equipo de cómputos
Manual de Soporte y mantenimiento de equipo de cómputos
 
Mantenimiento de sistemas eléctricos y electrónicosarticles-241712_recurso_6....
Mantenimiento de sistemas eléctricos y electrónicosarticles-241712_recurso_6....Mantenimiento de sistemas eléctricos y electrónicosarticles-241712_recurso_6....
Mantenimiento de sistemas eléctricos y electrónicosarticles-241712_recurso_6....
 
TIC en educacion.rtf.docxlolololololololo
TIC en educacion.rtf.docxlolololololololoTIC en educacion.rtf.docxlolololololololo
TIC en educacion.rtf.docxlolololololololo
 

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.