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

Sopa letras!, palabras automaticas?

Estas en el tema de Sopa letras!, palabras automaticas? en el foro de Java en Foros del Web. Buenas noches, lamento molestar en el foro, en fin como mencione en mi anterior post estoy trabajando en una clase de mantencion usando este software ...
  #1 (permalink)  
Antiguo 18/05/2016, 22:36
 
Fecha de Ingreso: julio-2014
Mensajes: 116
Antigüedad: 9 años, 9 meses
Puntos: 1
Pregunta Sopa letras!, palabras automaticas?

Buenas noches, lamento molestar en el foro, en fin como mencione en mi anterior post
estoy trabajando en una clase de mantencion usando este software como base
http://www.lawebdelprogramador.com/c...de-letras.html
esta vez si tengo una peticion de ayuda importante, este programa hay que agregar las palabras a la sopa de letras una a una
con este codigo:
Código Java:
Ver original
  1. public class frmInsertaPalabra extends JDialog implements ActionListener,KeyListener{
  2.     private JTextField texto;
  3.     private JButton JBSalir,JBAceptar;
  4.     private JCheckBox jcbChars;
  5.     private Sopaletras2 sopa;
  6.     private int posX,posY,forma;
  7.     private JRadioButton BotonOpcion1,BotonOpcion2,BotonOpcion3,BotonOpcion4,BotonOpcion5,BotonOpcion6,BotonOpcion7,BotonOpcion8;
  8.     private boolean booResalta;
  9.     //private Color color;
  10.    
  11.  
  12.     public frmInsertaPalabra(Sopaletras2 xsopa, int i, int j, boolean bool){
  13.         super();
  14.         sopa = xsopa;
  15.         posX = i;
  16.         posY = j;
  17.         forma = 2;
  18.         booResalta = bool;
  19.         //color = xcolor;
  20.         Ini();
  21.         this.setTitle("Insertar Palabra"); //Titulo de ventana
  22.         this.setSize(410,325); //Tamaño de ventana
  23.         this.setModal(true); //Establece ventana modal
  24.         this.setDefaultCloseOperation(JDialog.DISPOSE_ON_CLOSE);
  25.     }
  26.  
  27.     public void Ini(){
  28.         JPanel panePrincipal = new JPanel(new GridLayout(9,1));
  29.         JPanel pane = new JPanel(new FlowLayout(FlowLayout.CENTER));
  30.         JPanel pane2 = new JPanel(new FlowLayout(FlowLayout.RIGHT));
  31.         JPanel pane3 = new JPanel(new FlowLayout(FlowLayout.CENTER));
  32.         JPanel pane4 = new JPanel(new FlowLayout(FlowLayout.CENTER));
  33.  
  34.         JLabel label = new JLabel("  Palabra:");
  35.         JLabel label2 = new JLabel("  Posicion:");
  36.         JLabel label3 = new JLabel("  Letras:");
  37.         jcbChars = new JCheckBox("Solo letras del formulario");
  38.         jcbChars.setSelected(true);
  39.         jcbChars.setFocusable(false);
  40.         texto = new JTextField();
  41.        
  42.         texto.addKeyListener(this);
  43.  
  44.         ButtonGroup AgrupaBoton = new ButtonGroup();
  45.             BotonOpcion1 = new JRadioButton("Derecha");
  46.             BotonOpcion1.setSelected(true);
  47.             BotonOpcion1.setFocusable(false);
  48.             BotonOpcion1.addActionListener(this);
  49.             BotonOpcion2 = new JRadioButton("Izquerda");
  50.             BotonOpcion2.addActionListener(this);
  51.             BotonOpcion2.setFocusable(false);
  52.             BotonOpcion3 = new JRadioButton("Arriba");
  53.             BotonOpcion3.addActionListener(this);
  54.             BotonOpcion3.setFocusable(false);
  55.             BotonOpcion4 = new JRadioButton("Abajo");
  56.             BotonOpcion4.addActionListener(this);
  57.             BotonOpcion4.setFocusable(false);
  58.             BotonOpcion5 = new JRadioButton("Diagonal superior izquierda");
  59.             BotonOpcion5.addActionListener(this);
  60.             BotonOpcion5.setFocusable(false);
  61.             BotonOpcion6 = new JRadioButton("Diagonal superior derecha");
  62.             BotonOpcion6.addActionListener(this);
  63.             BotonOpcion6.setFocusable(false);
  64.             BotonOpcion7 = new JRadioButton("Diagonal inferior izquierda");
  65.             BotonOpcion7.addActionListener(this);
  66.             BotonOpcion7.setFocusable(false);
  67.             BotonOpcion8 = new JRadioButton("Diagonal inferior derecha");
  68.             BotonOpcion8.addActionListener(this);
  69.             BotonOpcion8.setFocusable(false);
  70.         AgrupaBoton.add(BotonOpcion1);
  71.         AgrupaBoton.add(BotonOpcion2);
  72.         AgrupaBoton.add(BotonOpcion3);
  73.         AgrupaBoton.add(BotonOpcion4);
  74.         AgrupaBoton.add(BotonOpcion5);
  75.         AgrupaBoton.add(BotonOpcion6);
  76.         AgrupaBoton.add(BotonOpcion7);
  77.         AgrupaBoton.add(BotonOpcion8);
  78.        
  79.         pane.add(BotonOpcion1);
  80.         pane.add(BotonOpcion2);
  81.         pane.add(BotonOpcion3);
  82.         pane.add(BotonOpcion4);
  83.         pane3.add(BotonOpcion5);
  84.         pane3.add(BotonOpcion6);
  85.         pane4.add(BotonOpcion7);
  86.         pane4.add(BotonOpcion8);
  87.  
  88.         JBSalir = new JButton("Salir");
  89.         JBSalir.addActionListener(this);
  90.         JBAceptar = new JButton("Aceptar");
  91.         JBAceptar.addActionListener(this);
  92.  
  93.         pane2.add(JBSalir);
  94.         pane2.add(JBAceptar);
  95.        
  96.         panePrincipal.add(label);
  97.         panePrincipal.add(texto);
  98.         panePrincipal.add(label3);
  99.         panePrincipal.add(jcbChars);
  100.         panePrincipal.add(label2);
  101.         panePrincipal.add(pane);
  102.         panePrincipal.add(pane3);
  103.         panePrincipal.add(pane4);
  104.         panePrincipal.add(pane2);
  105.         this.add(panePrincipal);
  106.     }
  107.  
  108.     private static boolean verifyString(String cadena, String caracteres){
  109.         char c[],x;
  110.         int i,j,k;
  111.         int error = 0;
  112.         String s = caracteres;
  113.         c = s.toCharArray();
  114.         for( i=0 ;  i < cadena.length() && error == 0;i++){
  115.             x = cadena.charAt(i);
  116.             k = 0;
  117.             for(j = 0 ;  j < s.length() && k == 0;j++){
  118.                 if(x==c[j])
  119.                     k++;
  120.             }
  121.             if( k == 0)
  122.                 error++;
  123.         }
  124.         if(error == 0)
  125.             return true;
  126.         else
  127.             return false;
  128.     }
  129.     public void AgregarPalabra(){
  130.             String s = texto.getText().trim();
  131.        
  132.             if(s.length()> 0){
  133.                 int num = sopa.Verify(s, posX, posY, forma);
  134.                 if(num == 0){
  135.                     if(jcbChars.isSelected()){
  136.                         if(verifyString(s,sopa.getCaracteresPermitidos())){
  137.                             sopa.setPalabra(s, posX, posY, forma);
  138.                             if(booResalta)
  139.                                 sopa.PintaPalabra(sopa.getTotalPalabras()-1, Color.YELLOW);
  140.                             this.dispose();
  141.                         }else
  142.                             JOptionPane.showMessageDialog(rootPane, "Palabra no agregada. La palabra contiene letras que no forman parte de la sopa de letras. Tambien se distingue entre mayusculas y minusculas.", "jSopaLetras" , 1);
  143.                     }else{
  144.                         sopa.setPalabra(s, posX, posY, forma);
  145.                         if(booResalta)
  146.                             sopa.PintaPalabra(sopa.getTotalPalabras()-1, Color.YELLOW);
  147.                         this.dispose();
  148.                     }
  149.                 }else if (num == 1)
  150.                     JOptionPane.showMessageDialog(rootPane, "Palabra muy extensa para ser colocada", "jSopaLetras" , 1);
  151.                 else if(num == 2)
  152.                     JOptionPane.showMessageDialog(rootPane, "Palabra se cruza con otra ya agregada anteriormente", "jSopaLetras" , 1);
  153.             }else
  154.                 JOptionPane.showMessageDialog(rootPane, "Palabra no valida", "jSopaLetras" , 1);
  155.     }
  156.     public void actionPerformed(ActionEvent e) {
  157.         Object obj = e.getSource();
  158.         if(obj == JBSalir){
  159.             this.dispose();
  160.         }else if(obj == BotonOpcion1){
  161.             forma = 2;
  162.         }else if(obj == BotonOpcion2){
  163.             forma = 1;
  164.         }else if (obj == BotonOpcion3){
  165.             forma = 3;
  166.         }else if(obj == BotonOpcion4){
  167.             forma = 4;
  168.         }else if(obj == BotonOpcion5){
  169.             forma = 5;
  170.         }else if(obj == BotonOpcion6){
  171.             forma = 6;
  172.         }else if(obj == BotonOpcion7){
  173.             forma = 7;
  174.         }else if(obj == BotonOpcion8){
  175.             forma = 8;
  176.         }else if(obj == JBAceptar){
  177.             AgregarPalabra();
  178.         }  
  179.     }
  180.     public void keyTyped(KeyEvent e) {
  181.         //se agrega funcion que obliga las letras en el textbox a ser mayusculas
  182.          char c=e.getKeyChar();
  183.          //"e" es el nombre asignado al evento de tecla "c" representa a las letras
  184.     if (Character.isLowerCase(c)){
  185.     String cad=(""+c).toUpperCase();
  186.     c=cad.charAt(0);
  187.     e.setKeyChar(c);
  188.     }
  189.        
  190.         //throw new UnsupportedOperationException("Not supported yet.");
  191.     }
  192.     public void keyPressed(KeyEvent e) {
  193.        
  194.         if(e.getKeyChar() == '\n')
  195.             AgregarPalabra();
  196.         if(e.getKeyCode() == 27)
  197.             this.dispose();
  198.         //this.setTitle("" + this.getWidth() + " * " + this.getHeight());
  199.         //this.setTitle("KeyCode = " + e.getKeyCode());
  200.     }
  201.     public void keyReleased(KeyEvent e) {
  202.         // new UnsupportedOperationException("Not supported yet.");
  203.     }
  204.    
  205.    
  206. }

Este codigo se accesa haciendo click desde la tabla princpal,

http://www.subirimagenes.com/imageda...reenshot11.jpg

(el codigo esta en el link con el programa al principio dle post,muy largo para ponerlo aqui)

La cantidad de lineas, columnas y letras vienen de este codigo que es la primera pantalla que se ve al iniciar el sistema (lo pondria pero el foro no permite mas de 10000 lineas)
[/HIGHLIGHT]
Ahora, lo que he tratado de hacer pero no he podido es :
1- reemplazar el crear palabra para que al crear una sopa ya vengan con palabras de un funcion que tenga las palabras y que se pongan al azar , por ejemplo 4 de una lista de 10 elegidas al azar en posiciones al azar.
2-al hacer click en la tabla si se logra encontrar una palabra que se sume 10 puntos a un contador.
  #2 (permalink)  
Antiguo 22/05/2016, 12:31
 
Fecha de Ingreso: julio-2014
Mensajes: 116
Antigüedad: 9 años, 9 meses
Puntos: 1
Respuesta: Sopa letras!, palabras automaticas?

Bueno, queria dar mas informacion, trabajo ahora en poder hacer click en una palabra y que se coloree y reciba un mensaje que me de puntaje

http://pastebin.com/Et6XWiR5

Este es el codigo del menu principal de la sopa una vez que esta esta creada, lo que quiero es ver si modificar el codigo usado para colorear todas las letras para mi fin de buscar 1 por 1
la clase se apoya de esta que por problemas de tamaño las pongo por pastebin
http://pastebin.com/mub0NjNw
si alguien puede ayudarme
por favor, como mencione antes no soy experto en java

Etiquetas: Ninguno
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 08:37.