¿Como puedo crear y manejar correctamente los ArrayLists con objetos?

Iniciado por Luxus01, 9 Noviembre 2017, 17:11 PM

0 Miembros y 1 Visitante están viendo este tema.

Luxus01

Hola a todos, mi duda es la siguiente:

Estoy haciendo un programita en el que necesito generar un ArrayList de objetos tipo Roca para el ambiente de un juego, el problema es que al intentar generar todos los objetos y meterlos en la lista, el programa se comporta como si solo existiera un objeto. Les dejo el codigo comentado para que me digan el error que estoy cometiendo porque no soy capaz de verlo.

Gracias de antemano :D

//Esta porcion de codigo crea los objetos de tipo roca y los añade a la lista
public static void generateRocks() {
for (int a = 0; a < 20; a++) {
Roca roca = new Roca();
rocas.add(roca);
}
}


//Esta otra recorre el ArrayList y pinta las rocas usando la clase Graphics2D
public static void paintRocks(Graphics2D g2d) {

g2d.setColor(Color.black);
for (Roca r : rocas) {
r.pintar(g2d);
}

}


import java.awt.Graphics2D;
import java.util.Random;

//Esta es la clase Rocas

public class Roca {

private static int x, y;
private static Random rand = new Random(System.currentTimeMillis());
private static int tamaño = 3;

public Roca() {
this.x = rand.nextInt(797);
this.y = rand.nextInt(597);

System.out.println("----------------" + "X: " + this.x + " Y: "
+ this.y + "----------------");
}

public void pintar(Graphics2D g2d) {
g2d.fillRect(x, y, tamaño, tamaño);
}

public static int getY() {
return y;
}

public static void setY(int y) {
Roca.y = y;
}

public static int getX() {
return x;
}

public static void setX(int x) {
Roca.x = x;
}

}


//Aqui esta declarada la lista
private static ArrayList<Roca> rocas = new ArrayList<Roca>();

rub'n

Cita de: Luxus01 en  9 Noviembre 2017, 17:11 PM
Hola a todos, mi duda es la siguiente:

Estoy haciendo un programita en el que necesito generar un ArrayList de objetos tipo Roca para el ambiente de un juego, el problema es que al intentar generar todos los objetos y meterlos en la lista, el programa se comporta como si solo existiera un objeto. Les dejo el codigo comentado para que me digan el error que estoy cometiendo porque no soy capaz de verlo.

Gracias de antemano :D

//Esta porcion de codigo crea los objetos de tipo roca y los añade a la lista
public static void generateRocks() {
for (int a = 0; a < 20; a++) {
Roca roca = new Roca();
rocas.add(roca);
}
}


//Esta otra recorre el ArrayList y pinta las rocas usando la clase Graphics2D
public static void paintRocks(Graphics2D g2d) {

g2d.setColor(Color.black);
for (Roca r : rocas) {
r.pintar(g2d);
}

}


import java.awt.Graphics2D;
import java.util.Random;

//Esta es la clase Rocas

public class Roca {

private static int x, y;
private static Random rand = new Random(System.currentTimeMillis());
private static int tamaño = 3;

public Roca() {
this.x = rand.nextInt(797);
this.y = rand.nextInt(597);

System.out.println("----------------" + "X: " + this.x + " Y: "
+ this.y + "----------------");
}

public void pintar(Graphics2D g2d) {
g2d.fillRect(x, y, tamaño, tamaño);
}

public static int getY() {
return y;
}

public static void setY(int y) {
Roca.y = y;
}

public static int getX() {
return x;
}

public static void setX(int x) {
Roca.x = x;
}

}


//Aqui esta declarada la lista
private static ArrayList<Roca> rocas = new ArrayList<Roca>();


Falta mas info a ver que tal, asi no puedo darte una mano mejor homie.

Estos métodos habría que ver como los estas invocando
generateRocks()
paintRocks()


rubn0x52.com KNOWLEDGE  SHOULD BE FREE!!!
If you don't have time to read, you don't have the time (or the tools) to write, Simple as that. Stephen