Montei o Jogo Mastermind em java, porém surgiu esse problema depois de pronto:
public static boolean comparaAcertos(List<String> resposta, List<String> senha) {
List<String> acertos = new ArrayList<String>();
for (int x = 0; x < senha.size(); x++) { // Percorre o array de senha fazendo comparações com a resposta.
for (int y = 0; y < senha.size(); y++)
if (senha.get(x).equals(resposta.get(y))) {
if (x == y) {
acertos.add("Pino Preto"); // O usuário acertou a cor e a posição, pino Preto.
break;
} else {
acertos.add("Pino Branco"); // O usuário acertou a cor, pino Branco.
break;
}
}
}
JOptionPane.showMessageDialog( null, "Status\n" + acertos.toString()); // Exibe os acertos
if(acertos.size() == 4){
return true;
} else {
return false;
}
}
Esse método compara a senha gerada pela máquina com a senha entrada pelo usuário. Caso o palpite entrado pelo usuário ( Ex: 1236 ) coincida com a senha gerada pela máquina ( Ex: 1324, ps: essa senha, não sabemos ) irá ser impresso 1 Pino Preto, ( pois a senha "1" está no lugar correto ) e 2 pinos brancos ( Pois a senha "3" e "2" são palpites certos, em posições erradas).
Para que o jogador vença, precisam aparecer 4 pinos pretos. Por isso foi criado o if(acertos.size() == 4){. O problema é que essa condição está furada e se aparecerem quaisquer somatória de pinos brancos e pretos que se igualem a quatro, o jogo é finalizado e o jogador "vence".
