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