Foro de elhacker.net

Programación => Java => Mensaje iniciado por: bash en 11 Febrero 2015, 03:05 am



Título: problema con el Graphics
Publicado por: bash en 11 Febrero 2015, 03:05 am
buenas a todos tengo un problema

tengo el siguiente codigo

Código
  1. package TileMap;
  2.  
  3. import java.awt.Color;
  4. import java.awt.Graphics2D;
  5. import java.awt.Graphics;
  6. import java.awt.Image;
  7. import java.awt.Toolkit;
  8. import java.io.File;
  9.  
  10. import javax.imageio.ImageIO;
  11. import javax.swing.JPanel;
  12.  
  13.  
  14. public class Tile extends JPanel{
  15.  
  16. private Graphics2D g2d;
  17. int [][]map1 = new int[][]{
  18. {1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1},
  19. {1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1},
  20. {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0},
  21. {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0},
  22. {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0},
  23. {0,0,0,0,0,2,2,0,0,1,1,1,1,1,0,0,0,0,0,0},
  24. {0,0,0,0,0,2,2,0,0,1,1,1,1,1,0,0,0,0,0,0},
  25. {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0},
  26. {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1},
  27. {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,1},
  28. {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,1,1},
  29. {0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,1,1,1},
  30. {0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,1,1,1,1,1},
  31. {1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1},
  32. {1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1},
  33. };
  34.  
  35. public void paint(Graphics g){
  36. super.paint(g);
  37. g2d = (Graphics2D) g;
  38.  
  39.  
  40. Image im = null;
  41.  
  42.  
  43.  
  44. for(int row =0; row < 20; row++){
  45. for(int col=0; col< 15; col++)
  46. {
  47. int rc = map1[row][col];
  48. if(rc == 0){
  49.  g2d.setColor(Color.BLACK);
  50.  
  51. }
  52. if(rc == 1 ){
  53. g2d.setColor(Color.BLUE);
  54.  
  55.  
  56.  
  57. }
  58. if(rc == 2 ){
  59. g2d.setColor(Color.RED);
  60.  
  61. }
  62. g2d.fillRect(1+col*33,1+row*33, 33, 33);
  63.  
  64.  
  65. }
  66.  
  67. }
  68.  
  69.  
  70.  
  71. }
  72.  
  73.  
  74.  
  75. }


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


Título: Re: problema con el Graphics
Publicado por: 3n31ch en 11 Febrero 2015, 03:35 am
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.

Código
  1. for(int row = 0; row < map1.length; row++){
  2.    for(int col=0; col< map1[row].length; col++) {
  3.        int rc = map1[row][col];
  4. if (rc == 0)  {
  5.            g2d.setColor(Color.BLACK);
  6.        } else if (rc == 1 ) {
  7.            g2d.setColor(Color.BLUE);
  8.         } else if (rc == 2 ) {
  9.            g2d.setColor(Color.RED);
  10.        }
  11. g2d.fillRect(1+col*33,1+row*33, 33, 33);
  12.     }
  13. }



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.


Título: Re: problema con el Graphics
Publicado por: bash en 11 Febrero 2015, 12:53 pm
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.


Título: Re: problema con el Graphics
Publicado por: Usuario Invitado en 11 Febrero 2015, 14:28 pm
Para cargar una imagen en AWT:

Código
  1. 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.