public class Tablero extends JFrame implements ActionListener {
private ArrayList<Boton> listaBotones = new ArrayList();
private ArrayList<ImageIcon> listaImagen = new ArrayList();
private ArrayList<ImageIcon> listaBtn = new ArrayList();
private Boton boton, salir, btnCompleta;
private ImageIcon imagen, imgCompleta;
private int posicion = 0, numMov = 0,aux=0;
private Boton btns1 = null, btns2 = null;
private ImageIcon imagen1 = null, imagen2 = null, btn1=null, btn2=null;
private String ruta="C:\Users\DESKOPTOHO\Documents\NetBeansProjects\EjemploRompecabezas\src\imagenes\";
public Tablero(int medida) {
this.setTitle("Rompecabezas");
this.setBounds(400, 150, 600, 400);
this.setLayout(null);
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
int x=10; int y=10;
//Creacion del boton Salir
salir = new Boton();
salir.setBounds(120, 320, 85, 25);
salir.addActionListener(this);
salir.setActionCommand("Salir");
salir.setText("Salir");
this.add(salir);
/*/Imagen completa para guiar al jugador
btnCompleta = new Boton();
btnCompleta.setBounds(355, 60, 200, 200);
imgCompleta = new ImageIcon("C:\Users\DESKOPTOHO\Documents\NetBeansProjects\EjemploRompecabezas\src\imagenes\o.jpg");
btnCompleta.setIcon(imgCompleta);
this.add(btnCompleta);
*/
for(int i = 0;i<(medida*medida);i++){
boton = new Boton();
imagen = new ImageIcon(ruta+ i +".jpg");
boton.setBounds(x, y, 100, 100);
x+=100;
this.add(boton);
listaBotones.add(boton);
listaImagen.add(imagen);
listaBtn.add(imagen);
boton.addActionListener(this);
if(x==(medida*100)+10)
{
x=10;
y+=100;
}
}
//Metodo para revolver las imagenes del rompecabezas
Collections.shuffle(listaImagen);
for (int i = 0; i < (medida*medida); i++) {
boton=listaBotones.get(i);
imagen=listaImagen.get(i);
boton.setIcon(imagen);
}
}
//Metodo de partida ganada
public void PartidaGanada(){
int mov=0;
for (int i = 0; i < listaImagen.size(); i++) {
if(listaBotones.get(i).getIcon().equals(listaBtn.get(i))){
mov++;
}
}
if(mov==9){
JOptionPane.showMessageDialog(null, " *** GANASTE :D ***" + "\n\n Número de movimientos: " + numMov, "FELICIDADES !!", JOptionPane.DEFAULT_OPTION);
dispose();
}
}
@Override
public void actionPerformed(ActionEvent e) {
String evento = e.getActionCommand();
if(evento.equals("Salir")){
JOptionPane.showMessageDialog(null, " * GAME OVER *", "Fin de juego", JOptionPane.DEFAULT_OPTION);
dispose();
}else{//Movimientos
for (int i = 0; i < listaBotones.size(); i++) {
if(e.getSource()==listaBotones.get(i)){
if(btn1==null){
btn1=listaImagen.get(i);
imagen1=(ImageIcon)listaBotones.get(i).getIcon();
btns1=listaBotones.get(i);
posicion=i;
}else{
btn2=listaImagen.get(i);
imagen2=(ImageIcon)listaBotones.get(i).getIcon();
btns2=listaBotones.get(i);
listaBotones.get(i).setIcon(imagen1);
listaBotones.set(i, btns1);
listaBotones.get(posicion).setIcon(imagen2);
listaBotones.set(i, btns2);
btn1=null;
btn2=null;
btns1=null;
btns2=null;
posicion=0;
numMov++;
PartidaGanada();
}//else
}//if e.getSource
}//for
}//else
}//actionPerformed
}//class'