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 private Sopaletras2 sopa;
private int posX,posY,forma;
private JRadioButton BotonOpcion1,BotonOpcion2,BotonOpcion3,BotonOpcion4,BotonOpcion5,BotonOpcion6,BotonOpcion7,BotonOpcion8
; private boolean booResalta;
//private Color color;
public frmInsertaPalabra(Sopaletras2 xsopa, int i, int j, boolean bool){
super();
sopa = xsopa;
posX = i;
posY = j;
forma = 2;
booResalta = bool;
//color = xcolor;
Ini();
this.setTitle("Insertar Palabra"); //Titulo de ventana
this.setSize(410,325); //Tamaño de ventana
this.setModal(true); //Establece ventana modal
this.
setDefaultCloseOperation(JDialog.
DISPOSE_ON_CLOSE); }
public void Ini(){
jcbChars
= new JCheckBox("Solo letras del formulario"); jcbChars.setSelected(true);
jcbChars.setFocusable(false);
texto.addKeyListener(this);
BotonOpcion1.setSelected(true);
BotonOpcion1.setFocusable(false);
BotonOpcion1.addActionListener(this);
BotonOpcion2.addActionListener(this);
BotonOpcion2.setFocusable(false);
BotonOpcion3.addActionListener(this);
BotonOpcion3.setFocusable(false);
BotonOpcion4.addActionListener(this);
BotonOpcion4.setFocusable(false);
BotonOpcion5
= new JRadioButton("Diagonal superior izquierda"); BotonOpcion5.addActionListener(this);
BotonOpcion5.setFocusable(false);
BotonOpcion6
= new JRadioButton("Diagonal superior derecha"); BotonOpcion6.addActionListener(this);
BotonOpcion6.setFocusable(false);
BotonOpcion7
= new JRadioButton("Diagonal inferior izquierda"); BotonOpcion7.addActionListener(this);
BotonOpcion7.setFocusable(false);
BotonOpcion8
= new JRadioButton("Diagonal inferior derecha"); BotonOpcion8.addActionListener(this);
BotonOpcion8.setFocusable(false);
AgrupaBoton.add(BotonOpcion1);
AgrupaBoton.add(BotonOpcion2);
AgrupaBoton.add(BotonOpcion3);
AgrupaBoton.add(BotonOpcion4);
AgrupaBoton.add(BotonOpcion5);
AgrupaBoton.add(BotonOpcion6);
AgrupaBoton.add(BotonOpcion7);
AgrupaBoton.add(BotonOpcion8);
pane.add(BotonOpcion1);
pane.add(BotonOpcion2);
pane.add(BotonOpcion3);
pane.add(BotonOpcion4);
pane3.add(BotonOpcion5);
pane3.add(BotonOpcion6);
pane4.add(BotonOpcion7);
pane4.add(BotonOpcion8);
JBSalir.addActionListener(this);
JBAceptar
= new JButton("Aceptar"); JBAceptar.addActionListener(this);
pane2.add(JBSalir);
pane2.add(JBAceptar);
panePrincipal.add(label);
panePrincipal.add(texto);
panePrincipal.add(label3);
panePrincipal.add(jcbChars);
panePrincipal.add(label2);
panePrincipal.add(pane);
panePrincipal.add(pane3);
panePrincipal.add(pane4);
panePrincipal.add(pane2);
this.add(panePrincipal);
}
private static boolean verifyString
(String cadena,
String caracteres
){ char c[],x;
int i,j,k;
int error = 0;
c = s.toCharArray();
for( i=0 ; i < cadena.length() && error == 0;i++){
x = cadena.charAt(i);
k = 0;
for(j = 0 ; j < s.length() && k == 0;j++){
if(x==c[j])
k++;
}
if( k == 0)
error++;
}
if(error == 0)
return true;
else
return false;
}
public void AgregarPalabra(){
String s
= texto.
getText().
trim();
if(s.length()> 0){
int num = sopa.Verify(s, posX, posY, forma);
if(num == 0){
if(jcbChars.isSelected()){
if(verifyString(s,sopa.getCaracteresPermitidos())){
sopa.setPalabra(s, posX, posY, forma);
if(booResalta)
sopa.
PintaPalabra(sopa.
getTotalPalabras()-1,
Color.
YELLOW); this.dispose();
}else
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); }else{
sopa.setPalabra(s, posX, posY, forma);
if(booResalta)
sopa.
PintaPalabra(sopa.
getTotalPalabras()-1,
Color.
YELLOW); this.dispose();
}
}else if (num == 1)
JOptionPane.
showMessageDialog(rootPane,
"Palabra muy extensa para ser colocada",
"jSopaLetras" ,
1); else if(num == 2)
JOptionPane.
showMessageDialog(rootPane,
"Palabra se cruza con otra ya agregada anteriormente",
"jSopaLetras" ,
1); }else
JOptionPane.
showMessageDialog(rootPane,
"Palabra no valida",
"jSopaLetras" ,
1); }
if(obj == JBSalir){
this.dispose();
}else if(obj == BotonOpcion1){
forma = 2;
}else if(obj == BotonOpcion2){
forma = 1;
}else if (obj == BotonOpcion3){
forma = 3;
}else if(obj == BotonOpcion4){
forma = 4;
}else if(obj == BotonOpcion5){
forma = 5;
}else if(obj == BotonOpcion6){
forma = 6;
}else if(obj == BotonOpcion7){
forma = 7;
}else if(obj == BotonOpcion8){
forma = 8;
}else if(obj == JBAceptar){
AgregarPalabra();
}
}
//se agrega funcion que obliga las letras en el textbox a ser mayusculas
char c=e.getKeyChar();
//"e" es el nombre asignado al evento de tecla "c" representa a las letras
String cad
=(""+c
).
toUpperCase(); c=cad.charAt(0);
e.setKeyChar(c);
}
//throw new UnsupportedOperationException("Not supported yet.");
}
if(e.getKeyChar() == '\n')
AgregarPalabra();
if(e.getKeyCode() == 27)
this.dispose();
//this.setTitle("" + this.getWidth() + " * " + this.getHeight());
//this.setTitle("KeyCode = " + e.getKeyCode());
}
// new UnsupportedOperationException("Not supported yet.");
}
}
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.