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

Como voltear las cartas en un areglo de botones en java

Estas en el tema de Como voltear las cartas en un areglo de botones en java en el foro de Java en Foros del Web. Hola buenas tardes soy jesus, soy nobato en java casi principiante, estoy rea lizando un memorama en java realizao un areglo para las botones y ...
  #1 (permalink)  
Antiguo 08/05/2011, 15:01
 
Fecha de Ingreso: mayo-2011
Ubicación: ocotlan jalisco
Mensajes: 3
Antigüedad: 13 años
Puntos: 0
Como voltear las cartas en un areglo de botones en java

Hola buenas tardes soy jesus, soy nobato en java casi principiante, estoy rea lizando un memorama en java realizao un areglo para las botones y un areglo para acomodar las imagenes, distribuidas aleatoriamente, por medio de un ramdom, ya tengo la opcion de los botones pero no se como ahcerle para voltar las cartas se que posiblemente tengo que usar un mouseclicked event espero y me puedan ayudar es mi proyecto fianal del semestre aqui les dejo algo de codigo como lo tengo

private void CBNivelesActionPerformed(java.awt.event.ActionEven t evt) {

int opcion = CBNiveles.getSelectedIndex();
switch (opcion) {
case 1: // principiante
jPanel1.setLayout(new GridLayout(4,5));
jPanel1.removeAll();
contenedor=getContentPane();
for(a=0;a<4;a++){ //creacion de los botones en el tablero.
for(b=0;b<5;b++){
boton[a][b]=new JButton();
inicial=rand.nextInt(10);
boton[a][b].setIcon(new ImageIcon("images/oculta2.png"));//pone la tapa a los botones
boton[a][b].setBorder(javax.swing.BorderFactory.createMatteBo rder(2, 2, 2, 2, new java.awt.Color(204, 0, 51)));
if (indiceImagen[inicial]<2){
boton[a][b].setMnemonic(inicial);
boton[a][b].setDisabledIcon(Imagen[inicial]);
indiceImagen[inicial]++;
}
else{
vector=true;
while (vector==true)
{
inicial=rand.nextInt(10);
if (indiceImagen[inicial]<2)
{
boton[a][b].setMnemonic(inicial);
boton[a][b].setDisabledIcon(Imagen[inicial]);
indiceImagen[inicial]++;
vector=false;
}
}
}
jPanel1.add(boton[a][b]);
contenedor.add(jPanel1);
}
}
for (int a=0; a<10; a++)
{
System.out.println("indiceImagen["+a+"]="+indiceImagen[a]);
}
setVisible (true);

break;

public void addListeners() {
boton[a][b].addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
// boton[a][b].setIcon(new ImageIcon("images/1.jpg"));
int mnem1=boton[a][b].getMnemonic();
int mnem2=boton[a][b].getMnemonic();
if (mnem1==mnem2){
System. out.println("son iguales");
}
else {

System. out.println("no son iguales");

}
}
});

}

AQUI ES DONDE NO SE COMO HACERLE PARA VOLTEAR LAS CARTAS LES AGRADECERIA MUCHO QUE ME AYUDEN

public void mouseClicked(MouseEvent me){

}
  #2 (permalink)  
Antiguo 09/05/2011, 15:58
Avatar de sivadmp  
Fecha de Ingreso: febrero-2011
Ubicación: La Paz - Bolivia
Mensajes: 293
Antigüedad: 13 años, 2 meses
Puntos: 20
Respuesta: Como voltear las cartas en un areglo de botones en java

hola yisus

si entiendo bien estas realizando un juego de cartas y lo que quieres hacer es, que cuando se haga click en una carta te muestra la cara.

lo que tienes que hacer: en tu clase Carta tener los atributos de imagen de la "cara" y la imagen de "atras" y crear una funcion para ver cual cara esta visualizada "darVuelta()"

Código Java:
Ver original
  1. class CartaButton extends JButton{
  2.      private ImageIcon cara=null;
  3.      private ImageIcon atras= null;
  4.        
  5.       public CartaButton(){
  6.             cara = new ImageIcon(getClass().getResource("assets/images/caraQ.png"));
  7.             atras = new ImageIcon(getClass().getResource("assets/images/atrasQ.png"));
  8.  
  9.              //por defecto adicionamos la cara de atras
  10.              this.setIcon(atras);
  11.       }
  12.       public void darVuelta(){
  13.              //verificar que tipo de cara esta visualizada
  14.              if(this.getIcon().equals(cara)){
  15.                     this.setIcon(atras);
  16.              }
  17.              if(this.getIcon().equals(atras)){
  18.                     this.setIcon(cara);
  19.              }
  20.       }
  21.      //function getters and setters
  22. }

en tu aplicación grafica tienes ya creada la matriz, a cada objeto de la matriz tienes que adicionarle el evento MouseListener

Código Java:
Ver original
  1. CartaButton btn[][]=...
  2.  
  3. int row=-1;
  4. int col=-1;
  5.  
  6. row=btn.length;
  7. if(btn.length>0)
  8.     col=btn[0].length;
  9. for(int i=0;i<row;i++){
  10.     for(int j=0;j<col;j++){
  11.           btn[i][j]=new CartaButton();
  12.           btn.addMouseListener(new MouseListener() {
  13.             @Override
  14.             public void mouseReleased(MouseEvent arg0) {}
  15.            
  16.             @Override
  17.             public void mousePressed(MouseEvent arg0) {}
  18.            
  19.             @Override
  20.             public void mouseExited(MouseEvent arg0) {}
  21.            
  22.             @Override
  23.             public void mouseEntered(MouseEvent arg0) {}
  24.            
  25.             @Override
  26.             public void mouseClicked(MouseEvent arg0) {
  27.                 CartaButton _btn=(CartaButton)arg0.getComponent();
  28.                                 //adicionar la imagen de acuerdo al tipo de carta por ejemplo Q
  29.                                 _btn.darVuelta();  
  30.             }
  31.         });
  32.     }
  33. }

Espero que te haya servido este pequeño codigo simplificado

:) Saludos
__________________
agradecer no cuesta nada
Entre más información proporciones más fácil será ayudarte, y asi evitar adivinar el problema con el que cuentas.
  #3 (permalink)  
Antiguo 10/05/2011, 01:16
 
Fecha de Ingreso: mayo-2011
Ubicación: ocotlan jalisco
Mensajes: 3
Antigüedad: 13 años
Puntos: 0
Respuesta: Como voltear las cartas en un areglo de botones en java

hola amigo gracias por tu aporte, y diculpa mi iignorancia, pero no comprendi bien lo de las cara y atras, lo que pasa que igaual tengo un areglo de imagenes es decier tengo 20 imagenes ocultas de las cuales debo destapar para hacer un par,

es por ello que realizzo este evento

public void addListeners() {
boton[a][b].addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
// boton[a][b].setIcon(new ImageIcon("images/1.jpg"));// pongo la tapa
int mnem1=boton[a][b].getMnemonic();
int mnem2=boton[a][b].getMnemonic();
if (mnem1==mnem2){
System. out.println("son iguales");
}
else {

System. out.println("no son iguales");

}
}
});

}



donde ago la compracion de los nombre de cada una de las imagenes

y es donde no se como hacer para destapar el par no comprendi bien por que supongo q piensas que solo uso una imagen pero no, tengo un arglo de 20 botones y tengo un areglo de 20 imagenes y aqui es donde acomodo la tapa a los botones asi como tambien distribullo aleatoriamente las imagenes en cada boton. donde caba vez q se inica el programa las imagenes se cambian de boton.


for(a=0;a<4;a++){ //creacion de los botones en el tablero.
for(b=0;b<5;b++){
boton[a][b]=new JButton();
inicial=rand.nextInt(10);
boton[a][b].setIcon(new ImageIcon("images/oculta2.png"));//pone la tapa a los botones
boton[a][b].setBorder(javax.swing.BorderFactory.createMatteBo rder(2, 2, 2, 2, new java.awt.Color(204, 0, 51)));
if (indiceImagen[inicial]<2){
boton[a][b].setMnemonic(inicial);
boton[a][b].setDisabledIcon(Imagen[inicial]);
indiceImagen[inicial]++;
}
else{
vector=true;
while (vector==true)
{
inicial=rand.nextInt(10);
if (indiceImagen[inicial]<2)
{
boton[a][b].setMnemonic(inicial);
boton[a][b].setDisabledIcon(Imagen[inicial]);
indiceImagen[inicial]++;
vector=false;
}
}
}
jPanel1.add(boton[a][b]);
contenedor.add(jPanel1);
}
}
for (int a=0; a<10; a++)
{
System.out.println("indiceImagen["+a+"]="+indiceImagen[a]);
}
setVisible (true);

break;


te agradeceria mucho q me ayudes te dejo mi corro por si gustas q te envie mi projecto te agradeceria mucho tu apoyo ya que me la e pasado varias semanas investigando y la verdad no se como hacerlo de antemano te doy las gracias

saludos cordiales, espero que me puedas apoyasr te lo agradecere mucho mucho


este es mi email: [email protected]
  #4 (permalink)  
Antiguo 10/05/2011, 12:16
Avatar de sivadmp  
Fecha de Ingreso: febrero-2011
Ubicación: La Paz - Bolivia
Mensajes: 293
Antigüedad: 13 años, 2 meses
Puntos: 20
Respuesta: Como voltear las cartas en un areglo de botones en java

claro te puedo ayudar, solo ponte en contacto por MSN, gmail, Skype
__________________
agradecer no cuesta nada
Entre más información proporciones más fácil será ayudarte, y asi evitar adivinar el problema con el que cuentas.
  #5 (permalink)  
Antiguo 10/05/2011, 17:25
 
Fecha de Ingreso: mayo-2011
Ubicación: ocotlan jalisco
Mensajes: 3
Antigüedad: 13 años
Puntos: 0
Respuesta: Como voltear las cartas en un areglo de botones en java

ok porfas dame tu email para ponernos en contacto

este es el mio [email protected]
  #6 (permalink)  
Antiguo 11/05/2011, 13:02
Avatar de sivadmp  
Fecha de Ingreso: febrero-2011
Ubicación: La Paz - Bolivia
Mensajes: 293
Antigüedad: 13 años, 2 meses
Puntos: 20
Respuesta: Como voltear las cartas en un areglo de botones en java

Solo ingresa a mi perfil, y luego a la opción contactar
__________________
agradecer no cuesta nada
Entre más información proporciones más fácil será ayudarte, y asi evitar adivinar el problema con el que cuentas.

Etiquetas: botones
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 01:27.