• Viernes 8 de Noviembre de 2024, 04:41

Mostrar Mensajes

Esta sección te permite ver todos los posts escritos por este usuario. Ten en cuenta que sólo puedes ver los posts escritos en zonas a las que tienes acceso en este momento.


Temas - doliyubidi

Páginas: [1]
1
Java / Pregunta sobre eventos en diferentes capas
« en: Lunes 12 de Julio de 2010, 15:36 »
Buenas, tengo una duda sobre los Mousevent en la interfaz MouseMotionListener, quisiera saber si se puede disparar un evento en una capa que esta detrás de un componente, por ejemplo yo tengo un tablero de ajedrez, que es una matriz de la clase cuadro, usando JLayeredPane coloco los cuadros en la parte mas interior, y a las piezas en la parte superior, y ahora cuando arrastro la pieza, que es un evento del MouseDragged, como podria hacer para que se dispare el evento mouseEntered de la clase cuadro, ya que no se dispara cuando estoy arrastro la pieza; solo cuando hago esto en concreto, que es volver invisible a la pieza mientraz se arrastra, alli recien se dispara el evento de mouseEntered, y usando MouseReleased vuelvo visible a la pieza.

2
Java / Problem con tablero de ajedrez hecho con GridLayout y JPanel
« en: Viernes 2 de Julio de 2010, 04:07 »
Buenas, estoy tratando de hacer un juego de ajedrez, y lo primero que hago es inicializar el tablero, al principio lo hacia con arreglo de JPanel, pero luego pense hacerlo con un arreglo de una clase que hereda a JPanel, bueno la cuestion es que antes, si me salia todo el cuadro completo del ajedrez cuando usaba el arreglo de JPanel, pero cuando lo cambie por la otra clase:"cuadro", todos los paneles me salen sobrepuestos.

Esta es la clase original, la que al compilar si me muestra el tablero completo.
Código: Java
  1.  
  2. import java.awt.*;
  3. import java.awt.event.*;
  4. import javax.swing.*;
  5.  
  6. public class tablero1 extends JFrame
  7. {
  8.     private Container contenedor;
  9.     private JPanel[][] Cuadro;
  10.     public tablero1()
  11.     {
  12.         contenedor=getContentPane();
  13.         contenedor.setLayout(new GridLayout(8,8));
  14.         setSize(600,600);
  15.         setDefaultCloseOperation(EXIT_ON_CLOSE);
  16.         pintarCuadros();
  17.     }
  18.     public void pintarCuadros()
  19.     {
  20.         Cuadro=new JPanel[8][8];
  21.         for(int x=0;x<8;x++)
  22.         {
  23.             for(int y=0;y<8;y++)
  24.             {
  25.                 if(x%2==0)
  26.                 {
  27.                     if(y%2!=0)
  28.                     {
  29.                     Cuadro[x][y]=new JPanel();
  30.                     Cuadro[x][y].setBackground(Color.BLACK);
  31.                     contenedor.add(Cuadro[x][y]);
  32.  
  33.                     }
  34.                     else
  35.                     {
  36.                     Cuadro[x][y]=new JPanel();
  37.                     Cuadro[x][y].setBackground(Color.WHITE);
  38.                     contenedor.add(Cuadro[x][y]);
  39.  
  40.                     }
  41.  
  42.                 }
  43.                 else
  44.                 {
  45.                     if(y%2==0)
  46.                     {
  47.                     Cuadro[x][y]=new JPanel();
  48.                     Cuadro[x][y].setBackground(Color.BLACK);
  49.                     contenedor.add(Cuadro[x][y]);
  50.  
  51.                     }
  52.                     else
  53.                     {
  54.                     Cuadro[x][y]=new JPanel();
  55.                     Cuadro[x][y].setBackground(Color.WHITE);
  56.                     contenedor.add(Cuadro[x][y]);
  57.  
  58.                     }
  59.                 }
  60.             }
  61.         }
  62.     }
  63. }
  64.  
  65.  

Esta es la clase principal que instancia al JFrame:
Código: Java
  1.  
  2. public class test
  3. {
  4.     public static void main(String[] args)
  5.     {
  6.         tablero1 gui= new tablero1();//pra probar con al otra clase, cambiar tablero1 por Tablero
  7.         gui.setVisible(true);
  8.     }
  9. }
  10.  
  11.  

Y esta  es la otra clase que hereda a JPanel( con la que pasa el problema)
Código: Java
  1.  
  2. import javax.swing.*;
  3. import java.awt.*;
  4. public class cuadro extends JPanel
  5. {
  6.     private int Y;
  7.     private int X;
  8.     boolean ocupado;
  9.     private int pieza;
  10.     public cuadro(int x,int y)
  11.     {
  12.         this.setLayout(null);
  13.         X=x;
  14.         Y=y;
  15.     }
  16.     public int getX()
  17.     {
  18.         return X;
  19.     }
  20.     public int getY()
  21.     {
  22.         return Y;
  23.     }
  24.     public void setX(int x)
  25.     {
  26.         X=x;
  27.     }
  28.     public void setY(int y)
  29.     {
  30.         Y=y;
  31.     }
  32. }
  33.  
  34.  

y Esta es la clase que usa a cuadro(la clase que hereda a JPanel.La que me muetra el tablero con un solo cuadro, superpuestos a los siguientes.

Código: Java
  1.  
  2. import java.awt.*;
  3. import java.awt.event.*;
  4. import javax.swing.*;
  5.  
  6.  
  7. public class Tablero extends JFrame
  8. {
  9.     private Container contenedor;
  10.     private cuadro[][] Cuadro;
  11.     public Tablero()
  12.     {
  13.         this.setLayout(null);
  14.         contenedor=getContentPane();
  15.         contenedor.setLayout(new GridLayout(8,8));
  16.         setSize(600,600);
  17.         setDefaultCloseOperation(EXIT_ON_CLOSE);
  18.         pintarCuadros();
  19.     }
  20.     public void pintarCuadros()
  21.     {
  22.         Cuadro=new cuadro[8][8];
  23.         for(int x=0;x<8;x++)
  24.         {
  25.             for(int y=0;y<8;y++)
  26.             {
  27.                 if(x%2==0)
  28.                 {
  29.                     if(y%2!=0)
  30.                     {
  31.                     Cuadro[x][y]=new cuadro(x,y);
  32.                     Cuadro[x][y].setBackground(Color.BLACK);
  33.                     contenedor.add(Cuadro[x][y]);
  34.  
  35.                     }
  36.                     else
  37.                     {
  38.                     Cuadro[x][y]=new cuadro(x,y);
  39.                     Cuadro[x][y].setBackground(Color.WHITE);
  40.                     contenedor.add(Cuadro[x][y]);
  41.  
  42.                     }
  43.  
  44.                 }
  45.                 else
  46.                 {
  47.                     if(y%2==0)
  48.                     {
  49.                     Cuadro[x][y]=new cuadro(x,y);
  50.                     Cuadro[x][y].setBackground(Color.BLACK);
  51.                     contenedor.add(Cuadro[x][y]);
  52.  
  53.                     }
  54.                     else
  55.                     {
  56.                     Cuadro[x][y]=new cuadro(x,y);
  57.                     Cuadro[x][y].setBackground(Color.WHITE);
  58.                     contenedor.add(Cuadro[x][y]);
  59.  
  60.                     }
  61.                 }
  62.             }
  63.         }
  64.     }
  65. }
  66.  
  67.  

Les estaria muy agradecidos si me pudieran ayudar a encontrar cual es el problema que pasa con la clase Tablero. :good:

3
C/C++ / Programa que halla la suma de dos potencias de enteros
« en: Lunes 28 de Septiembre de 2009, 00:38 »
Buenas, tengo un problema que le dejaron a un amigo en su clase de programacion, y y que le piden que escriba en lenguaje C, usando solo funciones y punteros y arreglos :

Un programa que determine la cantidad de formas distintasT en las que se puede escribir un numero entero N como suma de dos potencias  a^p + b^q donde a>=b>=1, p>=2 y q>=2.  para la potencias de uno solo se considera 1^2, y piden que el numero este en un rango de [1, 1000].

ejem: 17=4^2+1^2=3^2+2^3 en este caso T seria igual a 2.

Ya se me a ocurrido una idea, y es hacerlo a fuerza bruta, osea primero hallar los resultadoss de las potencias al cuadrado de numeros del 1 a la n en donde la potencia sea menor a 1000, y asi seguir hasta llegar a la potencia de 2 a la 10, en donde cada resultado de la potencia se guardaria en un arreglo, en total serian algo de 52 elementos del arreglo, y luego descomponer por sumas al numero N, en este caso las sumas totales serian N/2, y luego cada sumando se compararia a un elemento del arreglo, si ambos coinciden con alguno, entonces T incrementaria en uno, hasta comparar todas las posibilidades. calculando el numero total de posibilidades para el numero mayor que es 1000, serian de 1000/2=500 posibilidades que en donde cada sumando de N se compararia con un arreglo,  2*500*52=52000, pero veo que seria demasiadas comparaciones.
Si alguien encuentra una solucion sin tantas comparaciones, le estaria agradecido.

Páginas: [1]