xna 07 - manejar listas de objetos arraylist

Anuncio
 
Para manejar diferentes cantidades de elementos en la
pantalla del juego es necesario manejar listas de objetos.
 
Si todos los objetos de la lista tienen la misma imagen, se
puede guardar las coordenadas del objeto y su velocidad y
al dibujarlos se usará el mismo sprite para todos los objetos.
 
Si los objetos de la lista tienen diferente imagenes, es
necesario guardar también la imagen en cada objeto
(Texture2D).
 
Dependiendo de cada juego puede ser necesario guardar
datos adicionales en cada objeto (por ejemplo: si el objeto
representa un personaje bueno o malo, etc).
Creamos la clase ObjetosADibujar que contendrá
la información necesaria para dibujar cada sprite
en el juego, por ejemplo:
 
› 
› 
› 
› 
 
coorX
coorY
velocidadX
veocidadY
Los atributos que contenga la clase pueden variar
dependiendo de las necesidades de cada juego.
class ObjetosADibujar
{
private int coorX;
private int coorY;
private int velX;
private int velY;
Al agregar una clase en la que se usarán
elementos gráficos, es necesario agregar a
la clase los siguientes using:
using Microsoft.Xna.Framework;
using Microsoft.Xna.Framework.Graphics;
// constructor
public ObjetosADibujar(int cX, int cY, int vX, int vY)
{
coorX = cX;
coorY = cY;
velX = vX;
velY = vY;
}
// Propiedades
public int CoorX
{
get { return coorX; }
set {coorX = value; }
}
public int CoorY
{
get { return coorY; }
set {coorY = value; }
}
public int VelX
{
get { return velX; }
set { velX = value; }
}
public int VelY
{
get { return velY; }
set { velY = value; }
}
}
 
Dentro de las variables de instancia se crea la
variable para manejar el ArrayList que guardará
objetos de tipo ObjetosADibujar:
›  ArrayList listaObjetos = new ArrayList();
Se crea la variable listaObjetos de tipo
ArrayList que guardará valores de tipo
ObjetosADibujar
 
En alguna parte del programa debes agregar
objetos al ArrayList.
›  Si los objetos deben aparecer desde el inicio del
programa, el lugar adecuado es Initialize.
›  Si van a aparecer dependiendo de una condición,
entonces los agregas en el Update.
// primero creas el objeto que vas a agregar
ObjetosADibujar elemento = new ObjetosADibujar(
coorX, coorY, velX, velY);
// después lo agregas al ArrayList
listaObjetos.Add(elemento);
Nota que estos valores
dependen de tu programa
// Después de iniciar el proceso de dibujo
spriteBatch.Begin();
// Dibujamos todos los elementos de la lista
for (int cont = 0; cont < listaObjetos.Count; cont++)
{
ObjetosADibujar elem= (ObjetosADibujar)listaObjetos[cont];
}
spriteBatch.Draw(imagen,
new Rectangle(elem.CoorX, elem.CoorY,
imagen.Width, imagen.Height),
Color.White);
…
spriteBatch.End();
Descargar