Olá Pessoal,
Estou fazendo um jogo da memória com operações matemáticas…
Tenho dois diretórios, uma com as operações e a outra com os resultados.
Os pares devem ser tipo:
2+2 par com 4…
só que as vezes ele tá pegando 2+2 duas vezes… repetindo os botoes da mesma pasta e eu não quero isso…
será que alguém pode me ajudar???
Esse é parte do código…
public class Botoes
{
ArrayList<JButton> botoes = new ArrayList<>();
ArrayList<Integer> numList = new ArrayList<>();
public Teste ini;
public GerenciaJogo gerenciaJogo = new GerenciaJogo();
private int acertos;
private int tentativas;
public int opcao=0;
public int somar = 0 ;
public int Soma(){
return somar;
}
public Botoes(Teste ini)
{
this.ini = ini;
}
Login seleciona = new Login();
Pessoa sel = seleciona.getCombo();
public Botoes()
{
}
public ArrayList<JButton> getListaDeBotoes()
{
for (int i = 0; i < Constantes.QUANTIDADE_BOTOES_TELA; i++) {
botoes.add(this.criaBotao(i));
}
return botoes;
}
public JButton criaBotao(int num)
{
String randomStr = "button";
int numAleatorio = -1;
numAleatorio = numeroAleatório();
if (num < 10) {
randomStr = randomStr + "0" + num;
} else {
randomStr = randomStr + num;
}
JButton b = new JButton();
b.setBackground(Color.LIGHT_GRAY);
b.setBorder(BorderFactory.createRaisedBevelBorder());
b.setIcon(new ImageIcon(getClass().getResource("/img/res/" + 10 + ".png"))); // imagem
String diretorio = "";
if(gera1ou2()) {
diretorio = "res";
} else {
diretorio = "som";
}
b.setRolloverSelectedIcon(new ImageIcon(getClass().getResource("/img/" + diretorio + "/" + numAleatorio + ".png")));
b.setDisabledIcon(new ImageIcon(getClass().getResource("/img/" + diretorio + "/" + numAleatorio + ".png")));
b.setDisabledSelectedIcon(new ImageIcon(getClass().getResource("/img/" + diretorio + "/" + numAleatorio + ".png")));
b.setPressedIcon(new ImageIcon(getClass().getResource("/img/res/" + 10 + ".png")));
b.setRolloverIcon(new ImageIcon(getClass().getResource("/img/res/" + 10 + ".png")));
b.setSelectedIcon(new ImageIcon(getClass().getResource("/img/res/" + 10 + ".png")));
b.setName("" + numAleatorio);
b.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
captaBotao(e);
}
});
return b;
}
public void captaBotao(ActionEvent ev) {
JButton botao = (JButton) ev.getSource();
botao.setEnabled(false);
JButton btnsArray[] = gerenciaJogo.getBotoes();
if (btnsArray[0] == null) {
btnsArray[0] = botao;
} else {
btnsArray[1] = botao;
if (gerenciaJogo.comparaBotoesClicados(btnsArray)) {
acertos++;
} else {
JOptionPane.showMessageDialog(null, "Tente novamente!");
tentativas++;
gerenciaJogo.tentativaErrada(btnsArray);
}
if(tentativas <= 5){
somar = somar+50;
}
if ((tentativas > 5) && (tentativas <=10)){
somar = somar+30;
}
else {
somar = somar+10;
}
somar ++;
if (acertos == 10) {
JOptionPane.showMessageDialog(null, "PARABÉNS" + sel + "VC FEZ " + somar + " PONTOS");
int opcao = JOptionPane.showConfirmDialog(null, "Jogar Novamente?", " ", JOptionPane.YES_NO_OPTION);
if (opcao == 0) {
ini.dispose();
new Teste().setVisible(true);
} else {
ini.dispose();
}
}
//Thread.currentThread().sleep(10000);
gerenciaJogo.limpaBotoesClicados();
}
}
private int numeroAleatório() {
double sorte = Math.random() * (10);
if (numList.size() < 2)
{
numList.add((int) sorte);
return (int) sorte;
} else {
if (numList.contains((int) sorte)) {
if (numList.indexOf((int) sorte) == numList.lastIndexOf((int) sorte))
{
numList.add((int) sorte);
return (int) sorte;
} else {
sorte = this.numeroAleatório();
}
} else {
numList.add((int) sorte);
//return (int) sorte;
}
return (int) sorte;
}
}
private boolean gera1ou2() {
Random gerador = new Random();
boolean resultado = gerador.nextBoolean();
//System.out.println(resultado);
return resultado;
}
}