Foros del Web » Programación para mayores de 30 ;) » Java »

revision de codigo

Estas en el tema de revision de codigo en el foro de Java en Foros del Web. Hola... Estoy creando el tablero del juego Serpiente y Escaleras, pero me quede trabada. Ya cree el dado, pero al momento de compilar y que ...
  #1 (permalink)  
Antiguo 19/09/2012, 22:29
Avatar de cgasparico  
Fecha de Ingreso: septiembre-2012
Ubicación: Escuintla, Guatemala
Mensajes: 19
Antigüedad: 11 años, 8 meses
Puntos: 0
Pregunta revision de codigo

Hola...
Estoy creando el tablero del juego Serpiente y Escaleras, pero me quede trabada. Ya cree el dado, pero al momento de compilar y que me aparezca la ventana del juego, NO aparece el dado. No se en donde estoy fallando, ya repase el codigo infinidad de veces y no le veo el problema. Espero puedan ayudarme...
Aca el codigo:
Ese es el main

Código PHP:
import javax.swing.JFrame;

 
public class 
Proyecto1 {
    
    public static 
void main(String[] args) {
        
        new 
Window();
        
Dado content = new Dado();
}

Y este es el de la clase Window

Código PHP:
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;

public class 
Window extends JFrame {
    
JButton JButtonImportar;
    
JButton JButtonPlayJButtonPause// boton de play
    
        
    
JMenuBar barra// barra de menu principal
    
JMenu archivo
    
JMenuItem iniciosalir;
    
    public 
Window(){
         
JButtonImportar = new JButton("Archivos");
         
JButtonPlay = new JButton("Play");
         
JButtonPause = new JButton("Pausa");
         
         
JButtonPlay.setSize(150,50);
         
JButtonImportar.setSize(150,50);
                  
         
JButtonPlay.setLocation(800,100);
         
JButtonImportar.setLocation(800,20);
         
this.add(JButtonPlay);
         
this.add(JButtonImportar);
         
         
this.setLayout(null);
         
         
barra = new JMenuBar();
         
archivo = new JMenu("Archivo");
         
inicio = new JMenuItem("Iniciar");
         
salir = new JMenuItem("Salir");
     
         
setJMenuBar(barra);
         
barra.add(archivo);
         
archivo.add(inicio);
         
archivo.add(salir);
         
         
this.setJMenuBar(barra);
         
this.getContentPane().setBackground(Color.BLACK);
         
         
this.setSize(1000,700);
         
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
         
this.setLocationRelativeTo(null);
         
this.setVisible(true);
         
         
salir.addActionListener(new ActionListener(){
             public 
void actionPerformed(ActionEvent e){
                 if(
JOptionPane.showConfirmDialog(null,"¿Está seguro que desea salir del programa?","Salir",JOptionPane.YES_NO_CANCEL_OPTION)==JOptionPane.YES_OPTION){
                     
System.exit(0);
                 }
             }
         });
         
/*inicio.addActionListener(new ActionListener(){
            public void actionPerformed(ActionEvent e){
                if(dado.isRunning()){
                    dado.stop();
                    JButtonPause.setText("Iniciar");
                    inicio.setText("Iniciar");
                }else{
                    dado.start();
                    JButtonPause.setText("Pausa");
                    inicio.setText("Pausa");
                }
            }
        });
                           
         JButtonPause.addActionListener(new ActionListener(){
            public void actionPerformed(ActionEvent e){
                if(dado.isRunning()){
                    dado.stop();
                    JButtonPause.setText("Iniciar");
                    inicio.setText("Iniciar");
                }else{
                    dado.start();
                    JButtonPause.setText("Pausa");
                    inicio.setText("Pausa");
                }
            }
        });*/

//Clase Dado
class Dado extends JPanel{
    private 
int dado1 1//El valor inicial del dado.
    
    
private Timer timer;
    
    public 
Dado(){
        
        
setLayout(new BorderLayout(2,2));
        
setBackground(Color.BLUE);
        
setBorder(BorderFactory.createLineBorder(Color.BLUE,2));
        
        
JPanel dicePanel = new JPanel(){
            public 
void paintComponent(Graphics g){
                
super.paintComponent(g);
                
drawDado(gdado1100100);
            }
        };
        
dicePanel.setPreferredSize(new Dimension(300,300));
        
dicePanel.setBackground(new Color(200,200,255));
        
add(dicePanelBorderLayout.CENTER);
        
        
JButton lanzar = new JButton("Lanzar");
        
lanzar.addActionListener(new ActionListener(){
            public 
void actionPerformed(ActionEvent evt){
                
roll();
            }
        });
        
add(lanzarBorderLayout.SOUTH);
    }
    
//Dibujar el dado en la posicion especificada
        
void drawDado(Graphics gint valint xint y){
            
g.setColor(Color.white);
            
g.fillRect(xy3535);
            
g.setColor(Color.black);
            
g.drawRect(xy3434);
            
            if (
val 1//punto superior izquierdo
                
g.fillOval(x+3y+31010);
            
            if (
val 3//punto superior derecho
                
g.fillOval(x+23y+231010);
            
            if (
val == 6//punto medio izquierdo
                
g.fillOval(x+3y+131010);
            
            if (
val == 1//punto medio (numeros impares)
                
g.fillOval(x+23y+131010);
            
            if (
val 3//punto inferior izquierdo
                
g.fillOval(x+3y+231010);
            
            if (
val 1//punto inferior derecho
                
g.fillOval(x+23y+231010);
        }
        private 
void roll(){
            if (
timer != null)
                return;
            
timer = new Timer(100, new ActionListener(){
                
int frames 1;
                
                public 
void actionPerformed(ActionEvent evt){
                    
dado1 = (int)(Math.random()*6) + 1;
                    
repaint();
                    
frames++;
                    
                    if (
frames == 10){
                        
timer.stop();
                        
timer null;
                    }
                }
            });
            
timer.start();
        }
    } 
//Fin Clase Dado

     
//Fin Clase Window
     
     


  #2 (permalink)  
Antiguo 20/09/2012, 01:14
Avatar de Fuzzylog  
Fecha de Ingreso: agosto-2008
Ubicación: En internet
Mensajes: 2.511
Antigüedad: 15 años, 9 meses
Puntos: 188
Respuesta: revision de codigo

1. Revisa que se esté ejecutando la llamada a drawDado()

2. No veo claro como haces para introducir el dibujo del dado en tu panel, que ejecutes drawDado en paintComponent no parece garantizar que ese dado se dibuje en el dicePanel, mas bien parece que se dibuja por detrás y luego le añades el JPanel por encima.
__________________
if (fuzzy && smooth) {
fuzzylog = "c00l";
return true;
}
  #3 (permalink)  
Antiguo 20/09/2012, 03:04
Avatar de chuidiang
Colaborador
 
Fecha de Ingreso: octubre-2004
Mensajes: 3.774
Antigüedad: 19 años, 8 meses
Puntos: 454
Respuesta: revision de codigo

Hola:

La clase Dado la veo bien, yo usaría el método paint() en vez de paintComponent(), pero bueno.

Lo que no veo es dónde metes Dado (que es un panel) en la ventana principal. Si no metes Dado en una ventana, no será visible.


Se bueno.
__________________
Apuntes Java
Wiki de Programación
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 13:35.