Bom, meu primeiro post aqui, e ai pessoal
È o seguinte, eu tenho que fazer um jogo da memória, é um trabalho da faculdade, eu consegui fazer ele todo, o problema está na comparação de peças, não propriamente a comparação, ela esta funcionando, o problema é dar um tempo antes de desvirar as peças caso elas sejam diferentes.
Eu pesquisei na internet e achei um jeito que é usar o Thread.sleep(), ele até funciona, mas quando eu uso ele acho que ele para a thread principal também, qual seria a solução para esse meu pequeno problema? criar uma thread separada? ou existe alguma outra função pra fazer um pequeno delay(1seg)?
vlw ^^
Código do Programa
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import java.util.Random;
class Memoria extends JFrame implements ActionListener {
private JPanel pmenu,pbarra,frame;
private JLabel acerto,erro;
private JButton botoes[];
private JMenuBar menu;
private short aux,qntbotao;
private int vet[],nacerto,nerro,contador=0,click;
private String nomes[] =
{"imagem/0.gif",
"imagem/0.gif",
"imagem/1.gif",
"imagem/1.gif",
"imagem/2.gif",
"imagem/2.gif",
"imagem/3.gif",
"imagem/3.gif",
"imagem/4.gif",
"imagem/4.gif",
"imagem/5.gif",
"imagem/5.gif",
"imagem/6.gif",
"imagem/6.gif",
"imagem/7.gif",
"imagem/7.gif",
"imagem/8.gif",
"imagem/8.gif",
"imagem/9.gif",
"imagem/9.gif",
"imagem/10.gif",
"imagem/10.gif",
"imagem/11.gif",
"imagem/11.gif",
"imagem/12.gif",
"imagem/12.gif",
"imagem/13.gif",
"imagem/13.gif",
"imagem/14.gif",
"imagem/14.gif",};
private Icon icones[] =
{new ImageIcon(nomes[0]),
new ImageIcon(nomes[1]),
new ImageIcon(nomes[2]),
new ImageIcon(nomes[3]),
new ImageIcon(nomes[4]),
new ImageIcon(nomes[5]),
new ImageIcon(nomes[6]),
new ImageIcon(nomes[7]),
new ImageIcon(nomes[8]),
new ImageIcon(nomes[9]),
new ImageIcon(nomes[10]),
new ImageIcon(nomes[11]),
new ImageIcon(nomes[12]),
new ImageIcon(nomes[13]),
new ImageIcon(nomes[14]),
new ImageIcon(nomes[15]),
new ImageIcon(nomes[16]),
new ImageIcon(nomes[17]),
new ImageIcon(nomes[18]),
new ImageIcon(nomes[19]),
new ImageIcon(nomes[20]),
new ImageIcon(nomes[21]),
new ImageIcon(nomes[22]),
new ImageIcon(nomes[23]),
new ImageIcon(nomes[24]),
new ImageIcon(nomes[25]),
new ImageIcon(nomes[26]),
new ImageIcon(nomes[27]),
new ImageIcon(nomes[28]),
new ImageIcon(nomes[29]),}, bola = new ImageIcon("imagem/bola.gif");
Memoria()
{
super("Jogo da Memória");
JMenu fileMenu = new JMenu ("Arquivo");
JMenuItem newgameItem = new JMenuItem ("Novo Jogo");
fileMenu.add (newgameItem);
fileMenu.addSeparator();
JMenuItem rankItem = new JMenuItem ("Ranking");
fileMenu.add (rankItem);
fileMenu.addSeparator();
JMenuItem exitItem = new JMenuItem ("Sair");
fileMenu.add (exitItem);
JMenu difMenu = new JMenu ("Dificuldade");
JMenuItem diffacil = new JMenuItem ("Facil");
difMenu.add (diffacil);
JMenuItem difmedio = new JMenuItem ("Medio");
difMenu.add (difmedio);
JMenuItem difdificil = new JMenuItem ("Dificil");
difMenu.add (difdificil);
JMenu helpMenu = new JMenu ("Ajuda");
JMenuItem aboutItem = new JMenuItem ("Sobre");
helpMenu.add (aboutItem);
menu = new JMenuBar();
menu.add (fileMenu);
menu.add (difMenu);
menu.add (helpMenu);
diffacil.addActionListener(new ActionListener()
{
public void actionPerformed(ActionEvent mouseClicked)
{
frame.setLayout(new GridLayout(3,4,25,25));
frame.setBackground(Color.green);
qntbotao = 12;
vet = new int[qntbotao];
aux = MontaTabela(aux,qntbotao);
}
});
difmedio.addActionListener(new ActionListener()
{
public void actionPerformed(ActionEvent mouseClicked)
{
frame.setLayout(new GridLayout(4,5,25,25));
frame.setBackground(Color.yellow);
qntbotao = 20;
vet = new int[qntbotao];
aux = MontaTabela(aux,qntbotao);
}
});
difdificil.addActionListener(new ActionListener()
{
public void actionPerformed(ActionEvent mouseClicked)
{
frame.setLayout(new GridLayout(5,6,25,25));
frame.setBackground(Color.red);
qntbotao = 30;
vet = new int[qntbotao];
aux = MontaTabela(aux,qntbotao);
}
});
aboutItem.addActionListener(new ActionListener()
{
public void actionPerformed(ActionEvent mouseClicked)
{
JOptionPane.showMessageDialog(null, "Desenvolvidor por: \n\nDiego Bernardes");
}
});
exitItem.addActionListener(new ActionListener()
{
public void actionPerformed(ActionEvent mouseClicked)
{
System.exit(0);
}
});
newgameItem.addActionListener(new ActionListener()
{
public void actionPerformed(ActionEvent mouseClicked)
{
if(aux==12)
{
frame.setLayout(new GridLayout(3,4,25,25));
frame.setBackground(Color.green);
qntbotao = 12;
vet = new int[qntbotao];
aux = MontaTabela(aux,qntbotao);
}
if(aux==20)
{
frame.setLayout(new GridLayout(4,5,25,25));
frame.setBackground(Color.yellow);
qntbotao = 20;
vet = new int[qntbotao];
aux = MontaTabela(aux,qntbotao);
}
if(aux==30)
{
frame.setLayout(new GridLayout(5,6,25,25));
frame.setBackground(Color.red);
qntbotao = 30;
vet = new int[qntbotao];
aux = MontaTabela(aux,qntbotao);
}
}
});
frame = new JPanel();
frame.setBackground(Color.green);
frame.setLayout(new GridLayout(3,4,25,25)); // 12 blocos
acerto = new JLabel("Acertos: "+ nacerto);
erro = new JLabel("Erros: "+ nerro);
qntbotao = 12;
vet = new int[qntbotao];
aux = MontaTabela(aux,qntbotao);
pmenu = new JPanel();
pmenu.add(menu);
pbarra = new JPanel();
pbarra.add(acerto);
pbarra.add(erro);
Container c = getContentPane();
c.add(menu,BorderLayout.NORTH);
c.add(frame,BorderLayout.CENTER);
c.add(pbarra,BorderLayout.SOUTH);
setSize(800, 600);
setVisible(true);
}
public short MontaTabela(short aux, short qntbotao)
{
GeraVetor(vet);
nacerto=0;
nerro=0;
acerto.setText("Acerto: "+nacerto);
erro.setText("Erro: "+nerro);
for(int i=0; i< aux ;i++)
{
frame.remove(botoes[i]);
}
botoes = new JButton[qntbotao];
for(int i=0;i< qntbotao ;i++)
{
botoes[i] = new JButton("");
botoes[i].addActionListener(this);
botoes[i].setIcon(bola);
}
for(int i=0;i< qntbotao ;i++)
{
frame.add(botoes[vet[i]]);
}
aux = qntbotao;
frame.validate();
return aux;
}
public static void GeraVetor(int[] a)
{
for (int i = 0; i < a.length ; i++)
{
a[i]=i;
}
Random ran = new Random();
for(int i = 0; i < a.length; i++)
{
int pos = ran.nextInt(a.length);
int temp = a[i];
a[i] = a[pos];
a[pos] = temp;
}
}
public void actionPerformed(ActionEvent e)
{
for(int i=0; i<botoes.length; i++)
{
if(e.getSource() == botoes[i])
{
contador++;
botoes[i].setEnabled(false);
botoes[i].setIcon(icones[vet[i]]);
if (contador==2)
{
if (nomes[vet[click]]==nomes[vet[i]])
{
botoes[click].setEnabled(false);
botoes[i].setEnabled(false);
botoes[click].setIcon(icones[vet[i]]);
contador=0;
nacerto++;
acerto.setText("Acertos: "+nacerto);
if(nacerto==6)
JOptionPane.showMessageDialog(null, "Fim de Jogo");
}
else
{
//JOptionPane.showMessageDialog(null, "Antes do delay");
try
{
Thread.sleep(750);
}
catch(InterruptedException ex)
{
JOptionPane.showMessageDialog(null, "Erro no delay");
}
botoes[i].setEnabled(true);
botoes[click].setEnabled(true);
botoes[i].setIcon(bola);
botoes[click].setIcon(bola);
contador=0;
nerro++;
erro.setText("Erros: "+nerro);
}
}
click=i;
}
}
}
public static void main(String args[])
{
Memoria app = new Memoria();
app.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}
}