buenas a todos tengo un problema
tengo el siguiente codigo
package TileMap;
import java.awt.Color;
import java.awt.Graphics2D;
import java.awt.Graphics;
import java.awt.Image;
import java.awt.Toolkit;
import java.io.File;
import javax.imageio.ImageIO;
import javax.swing.JPanel;
public class Tile extends JPanel{
private Graphics2D g2d;
int [][]map1 = new int[][]{
{1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1},
{1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1},
{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,2,2,0,0,1,1,1,1,1,0,0,0,0,0,0},
{0,0,0,0,0,2,2,0,0,1,1,1,1,1,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},
{0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,1},
{0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,1,1},
{0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,1,1,1},
{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,1,1,1,1,1,1,1,1,1,1,1},
{1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1},
};
public void paint(Graphics g){
super.paint(g);
g2d = (Graphics2D) g;
Image im = null;
for(int row =0; row < 20; row++){
for(int col=0; col< 15; col++)
{
int rc = map1[row][col];
if(rc == 0){
g2d.setColor(Color.BLACK);
}
if(rc == 1 ){
g2d.setColor(Color.BLUE);
}
if(rc == 2 ){
g2d.setColor(Color.RED);
}
g2d.fillRect(1+col*33,1+row*33, 33, 33);
}
}
}
}
el compila bien y corre bien cuando depuro pero cuando hago el jar me sale en negro la pantalla , alguien me podria ayudar por favor ?
Mod: Tema modificado, recuerda usar etiquetas GeSHi
Si te fijas tu código da error, ya que sobrepasas el tamaño el length de tu arreglo. Diste vuelta el 15 por el 20. debería ser row < 15 , col < 20
Una buena costumbre es utilizar map1.length y map1[row].length.
for(int row = 0; row < map1.length; row++){
for(int col=0; col< map1[row].length; col++) {
int rc = map1[row][col];
if (rc == 0) {
g2d.setColor(Color.BLACK);
} else if (rc == 1 ) {
g2d.setColor(Color.BLUE);
} else if (rc == 2 ) {
g2d.setColor(Color.RED);
}
g2d.fillRect(1+col*33,1+row*33, 33, 33);
}
}
Por cierto, podrías utilizar un if ternario en tu asignación de color. Y no le veo la utilidad a tu Image im = null.
Si te funciona dilo para dar por cerrado el tema :)
Suerte con el resto.
Buenas si es verdad , la verdad pense en su momento usar .length pero como no sabia que en un array de dos dimensiones podia hacer map1[row].length , lo de la imagen es por que tambien cada vez que trato de cargar una imagen(con ruta relativa o no) me tira una excepcion o no hace nada , supongo que para eso buscare primero y si no posteare pero gracias eso dato que me disteme ayudo ... estaba bien perdido... ;-) ;-) ;-) voy a leer mas..
lo de la etiqueta Geshi bueno le di pero en la pc(mac ) no salio quizas es un error es bueno chequear eso.
Para cargar una imagen en AWT:
Image image = ImageIO.read(new File("/ruta/a/tu/imagen"));
Es de vital importancia aprender a indentificar los errores que te muestra el compilador. Con eso te ahorarrás muchos problemas y pérdidas de tiempo.