[ Foro de Java ]

Duda de principante

11-May-2023 00:50
Invitado (Gera)
1 Respuestas

Buenas, me pasaba por este foro porque estoy aprendiendo en la universidad y tengo que hacer un proyecto de un videojuego, pero me atasque en una parte que seguro la solucion está frente a mi pero no la encuentro jaja ):

Miren tengo una clase que se encarga de mapear con una matriz lo que se dibuja en el escenario, se dibujan cuadrados de 52x52 donde están todas las texturas, pero ese codigo nos los dio el profesor para partir de esa base, pero parece que el código está diseñado para que la matriz sea de 11x11, quise añadirle más columnas para que fueran 17, pero no se dibujan, se queda en 11x11, entonces hay otra parte que estoy ignorando que tambien debe modificarse, alguien podría ayudarme por favor?

ublic class Escenario extends ComponentesJuego {
public static final List<CuadroTileMap> cuadros=new ArrayList<>();
private Image imagen;
private int[][] mapeo= {
{0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0},
{0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0},
{0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0},
{0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0},
{0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0},
{0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0},
{0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0},
{0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0},
{0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0},
{0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0},
{1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1}
};


public Escenario(int x, int y, String imagen, int velocidad) {
super(x, y, imagen, velocidad);

for (int i = 0; i < mapeo.length; i++) {
for (int j = 0; j < mapeo.length; j++) {
if(mapeo[i][j]!=0) {
CuadroTileMap c=new CuadroTileMap(CargaTileMap.tileMap.get(
mapeo[i][j]));
c.setxVentana(x);
c.setyVentana(y);
c.setRectangulo(new Rectangle(x, y, c.getAnchoImagenDentro(),
c.getAltoImagenDentro()));
cuadros.add(c);
}
x+=52;
}
x=0;
y+=52;
}
this.imagen=new Image(imagen);
}


public class CargaTileMap {
public static final HashMap<Integer, CuadroTileMap> tileMap = new HashMap<>();
public static final HashMap<Integer, CuadroTileMap> personajeEstatico = new HashMap<>();
public static final HashMap<Integer, CuadroTileMap> personajeCaminarDerecha = new HashMap<>();
public static final HashMap<Integer, CuadroTileMap> personajeCaminarIzquierda = new HashMap<>();
   public static final HashMap<Integer, CuadroTileMap> personajeSalto = new HashMap<>();

public CargaTileMap() {

this.cargarEscena();
this.cargarPersonaje();

}

private void cargarEscena() {
//valores de la imagen cuadros.png
int limiteX = (int) Math.ceil(1);
int limiteY = (int) Math.ceil(1);
int celda=0;
int cordXDentroImagen=7;
int cordYDentroImagen=5;
int anchoDentroImagen=52;
int altoDentroImagen=52;
int anchoVentana=52;
int altoVentana=52;


for (int fila = 0; fila <limiteY; fila++) {
for (int columna = 0; columna <limiteX; columna++) {
celda++;
CuadroTileMap c=new CuadroTileMap(cordXDentroImagen,cordYDentroImagen,
anchoDentroImagen,altoDentroImagen,anchoVentana,altoVentana);
CargaTileMap.tileMap.put(celda, c);

cordXDentroImagen+=anchoDentroImagen;
}
cordXDentroImagen=7;
cordYDentroImagen+=altoDentroImagen;
}
}


Sólo añadi las partes del código donde está lo que es de interés, por si notan que está incompleto, estoy seguro de eso.
Gracias.


11-May-2023 22:53
Nacho Cabanes (+84)

Tu matriz tiene 17 columnas, pero 11 filas, y tu doble "for" está yendo siempre hasta el ".length" de la matriz, que es 11, el número de filas.






(No se puede continuar esta discusión porque tiene más de dos meses de antigüedad. Si tienes dudas parecidas, abre un nuevo hilo.)