Pintar tablero

Estoy corriendo el siguiente código el cual debería imprimir el archivo que esta al final en entorno gráfico 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 posición en la que se pintara el rectángulo
//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
"·" Posición objetivo
"--" Paredes
"&" vacio, cuadrado vacio
Respuesta
1
Entiendo lo que quieres hacer, te dejo un ejemplo de como pintar arcos y cuadrados, lo puedes adaptar a tu programa, si no puedes realizarlo, te pido un poco de tiempo y te doy una mano, espero te sirva el código.
Saludos
// Dibujo de arcos.
import java.awt.*;
import javax.swing.*;
public class DibujarArcos extends JFrame {
// establecer cadena de barra de título y dimensiones de la ventana
public DibujarArcos()
{
super( "Dibujo de arcos" );
setSize( 300, 170 );
setVisible( true );
}
// dibujar rectángulos y arcos
public void paint( Graphics g )
{
Super. paint( g ); // llamar al método paint de la superclase
// Empezar en 0 y extenderse hasta 360 grados
g. SetColor( Color. YELLOW );
g.drawRect( 15, 35, 80, 80 );
g. SetColor( Color.RED );
g. DrawArc( 15, 35, 80, 80, 0, 360 );
// Empezar en 0 y extenderse hasta 110 grados
g. SetColor( Color. YELLOW );
g. DrawRect( 100, 35, 80, 80 );
g. SetColor( Color.RED );
g. DrawArc( 100, 35, 80, 80, 0, 110 );
// Empezar en 0 y extenderse hasta -270 grados
g. SetColor( Color. YELLOW );
g. DrawRect( 185, 35, 80, 80 );
g. SetColor( Color.RED );
g. DrawArc( 185, 35, 80, 80, 0, -270 );
// Empezar en 0 y extenderse hasta 360 grados
g. FillArc( 15, 120, 80, 40, 0, 360 );
// Empezar en 0 y extenderse hasta -90 grados
g. FillArc( 100, 120, 80, 40, 270, -90 );
// Empezar en 0 y extenderse hasta -270 grados
g. FillArc( 185, 120, 80, 40, 0, -270 );
} // fin del método paint
// ejecutar la aplicación
public static void main( String args[] )
{
JFrame.setDefaultLookAndFeelDecorated(true);
DibujarArcos aplicacion = new DibujarArcos();
aplicacion.setDefaultCloseOperation( JFrame.EXIT_ON_CLOSE );
}
} // fin de la clase DibujarArcos

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas