Can you help me to leave a single ArrayList of the buttons

0
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'
    
asked by Leo016 02.10.2018 в 01:50
source

0 answers