Como posso embaralhar esse jogo da memoria

1 resposta
E

oi pessoal do guj, eu estou começando a programar com java agora e estou como esse meu jogo da memoria.
gostaria de saber como embaralhar ele randomicamente.

import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
class JogoMemoria extends JFrame implements ActionListener {
	public JogoMemoria(){
		setSize(500,500);
		JPanel pnl = new JPanel();
		pnl.setLayout(new GridLayout(4,4));
		MeuBotao[]btn = new MeuBotao[16];
		for (int i = 0; i < 16; i++){
			btn[i] = new MeuBotao(new ImageIcon("star" + (i/2) + ".jpg"));
			btn[i].addActionListener(this);
			pnl.add(btn[i]);
		}
		setContentPane(pnl);
		setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		setVisible(true);
	}
	public void actionPerformed(ActionEvent ev){
		MeuBotao btn = (MeuBotao)ev.getSource();
		btn.virar();
	}
	public static void main(String[]args){
		new JogoMemoria();
	}

}
import javax.swing.*;
public class MeuBotao extends JButton {
	ImageIcon imagem;
	boolean virada;
	public MeuBotao(ImageIcon imagem){
		this.imagem = imagem;
		virada = false;
	}
	public void virar(){
		if (virada)
			setIcon(null);
		else
			setIcon(imagem);
		virada = !virada;
	}
}

1 Resposta

Mikhas

Voce pode primeiro criar os botoes, embaralha eles e depois adiciona eles na interface.

olha ai um rascunho para um metodo de embaralhar

public void embaralha(Object[] objects) {
		int length = objects.length;

		for (int i = 0; i < length; i++)
			troca(objects, i, (int) (i * Math.random()));
	}

	public void troca(Object[] objects, int a, int b) {
		Object temp = objects[a];
		objects[a] = objects[b];
		objects[b] = temp;		
	}
Criado 3 de novembro de 2008
Ultima resposta 4 de nov. de 2008
Respostas 1
Participantes 2