Pintar el tablero

Hola estoy corriendo el siguiente codigo el cual deberia imprimir el archivo que esta al final en entorno grafico no se que estoy haciendo mal que el frame sale en pantalla completamente en blanco por favor ayudame gracias y disculpa la molestia
import java.awt.*;
import java.io.*;
import java.awt.event.*;
public class tabler extends Frame {
char arreglo[][];
tabler(){
setSize(500,600);
try{
BufferedReader in=new BufferedReader(new InputStreamReader(new FileInputStream("C:\\klotski.txt")));
int filas=Integer.parseInt(in.readLine());
int columnas=Integer.parseInt(in.readLine());
arreglo=new char[filas][columnas];
for(int i=0;i < filas;i++){
for(int j=0;j < columnas;j++){
arreglo[ i ][ j ]=(char)(in.read());
}
}
in.close();
}catch(Exception e){}
}
//Este metodo es el que se llama cada vez que la ventana necesite pintarse
public void paint(Graphics g){
//posX y posY se utilizan para ir cambiando la posicion en la que se pintara el rectangulo
//ancho y alto son precisamente el ancho y alto del rectangulo
int posX,posY,ancho=25,alto=25;
Color col=null;
//Recorremos los elementos del arreglo
posY=0;
for(int i=0;i < arreglo.length;i++){
posX=0;
for(int j=0;j < arreglo[ i ].length; j++){
//Escogemos el color a pintar segun el caracter (&,#,etc.)
if(arreglo[ i ][ j ]=='*')col=Color.red;
else if(arreglo[ i ][ j ]=='a')col=Color.yellow;
else if(arreglo[ i ][ j ]=='b')col=Color.BLUE;
else if(arreglo[ i ][ j ]=='c')col=Color.CYAN;
else if(arreglo[ i ][ j ]=='d')col=Color.GREEN;
else if(arreglo[ i ][ j ]=='e')col=Color.LIGHT_GRAY;
else if(arreglo[ i ][ j ]=='f')col=Color.MAGENTA;
else if(arreglo[ i ][ j ]=='g')col=Color.ORANGE;
else if(arreglo[ i ][ j ]=='#')col=Color.gray;
else if(arreglo[ i ][ j ]=='-')col=Color.DARK_GRAY;
else if(arreglo[ i ][ j ]=='&')col=Color.white;
else if(arreglo[ i ][ j ]=='·')col=Color.red;
//Asignamos el color
g.setColor(col);
//Dibujamos el rectangulo
g.fillRect(posX,posY,ancho,alto);
posX+=ancho;
}
posY+=alto;
}
}
public static void main(String arg[]){
tabler t=new tabler();
t.show();
t.addWindowListener(new WindowAdapter(){
public void windowClosing(WindowEvent evt){
System.exit(0);
}
});
//t.setBackground(Color.yellow);
}
}
&&&&&&&&&&
&&&&&&&&&&
&&######&&
&&#a**b#&&
&&#a**b#&&
&&#cdde#&&
&&#cfge#&&
&&#a&&b#&&
&&##--##&&
&&&&&&&&··
&&&&&&&&··
"*" pieza singular
"a-g" otras piezas piezas
"#" paredes
"·" posicion objetivo
"--" paredes
"&" vacio, cuadrado vacio
1

1 Respuesta

0 pts.
Yo lo hice asi y me funciono, corre este asi como esta para que lo veas.
Si te sirve ya solo tienes que desdocumentar la linea de lectura del archivo, me habias dicho que el archivo si lo leia bien, por lo tanto eso no va a dar problema, solo debes tener cuidado como llenar el arreglo con los datos del archivo
import java.awt.Color;
import java.awt.Graphics;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;
import java.io.BufferedReader;
import java.io.FileInputStream;
import java.io.InputStreamReader;
/**
*
* @author Daniel Montero B
*/
public class tabler extends java.awt.Frame {
     char arreglo[][];
     String variable ="&&&&&&&&&&&&&&&&&&&&&&######&&&&#a**b#&&&&#a**b#&&&&#cdde#&&&&#cfge#&&&&#a&&b#&&&&##--##&&&&&&&&&&··&&&&&&&&··";
    /** Creates new form NewFrame */
    public tabler() {
        initComponents();
        setSize(500, 600);
        try {
            //BufferedReader in = new BufferedReader(new InputStreamReader(new FileInputStream("C:\\klotski.txt")));
            //int filas = Integer.parseInt(in.readLine());
            //int columnas = Integer.parseInt(in.readLine());
            //arreglo = new char[filas][columnas];
            int h=0;
            arreglo = new char[11][10];
            for (int i = 0; i < arreglo.length; i++) {
                 for (int j = 0; j < arreglo.length; j++) {
                         arreglo[j] = (char) variable.charAt(h++);
                  }
            }
            for (int i = 0; i < arreglo.length; i++) {
                 for (int j = 0; j < arreglo.length; j++) {
                     System.out.print(arreglo[j]);
                 }
                 System.out.println("");
            }
            //in.close();
         } catch (Exception e) {
     }
}

private void initComponents() {
addWindowListener(new java.awt.event.WindowAdapter() {
public void windowClosing(java.awt.event.WindowEvent evt) {
exitForm(evt);
}
});
pack();
}
/** Exit the Application */
private void exitForm(java.awt.event.WindowEvent evt) {
System.exit(0);
}
//Este metodo es el que se llama cada vez que la ventana necesite pintarse
public void paint(Graphics g) {
     //PosX y posY se utilizan para ir cambiando la posicion en la que se pintara el rectangulo
     //ancho y alto son precisamente el ancho y alto del rectangulo
      super.paint(g);
     int posX, posY, ancho = 25, alto = 25;
    Color col = null;
     //Recorremos los elementos del arreglo
     posY = 0;
     for (int i = 0; i < arreglo.length; i++) {
           posX = 0;
                 for (int j = 0; j < arreglo.length; j++) {
                      //Escogemos el color a pintar segun el caracter (&,#,etc.)
                     if (arreglo[j] == '*') col = Color.red;
                    else if (arreglo[j] == 'a') col = Color.yellow;
                     else if (arreglo[j] == 'b') col = Color.BLUE;
                     else if (arreglo[j] == 'c') col = Color.CYAN;
                    else if (arreglo[j] == 'd') col = Color.GREEN;
                    else if (arreglo[j] == 'e') col = Color.LIGHT_GRAY;
                    else if (arreglo[j] == 'f') col = Color.MAGENTA;
                      else if (arreglo[j] == 'g') col = Color.ORANGE;
                     else if (arreglo[j] == '#') col = Color.gray;
                     else if (arreglo[j] == '-') col = Color.DARK_GRAY;
                     else if (arreglo[j] == '&') col = Color.WHITE;
                     else if (arreglo[j] =='.') col = Color.red;
                     //Asignamos el color
                     g.setColor(col);
                     //Dibujamos el rectangulo
                     g.fillRect(posX,posY,ancho,alto);
                    posX+=ancho;
                }
               posY+=alto;
           }
     }
    /**
* @param args the command line arguments
*/
public static void main(String args[]) {
tabler t=new tabler();
t.show();
t.addWindowListener(new WindowAdapter(){
public void windowClosing(WindowEvent evt){
System.exit(0);
}
});
//t.setBackground(Color.yellow);
}
// Variables declaration - do not modify
// End of variables declaration
}

Mejor te paso el codigo por correo, dame tu mail y te lo hago llegar porque veo que no se copio bien, y asi no te va a servir

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas