Problemas com Condicionais

2 respostas
V

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".

2 Respostas

diego.sas

Cara se você quer que o jogo acabe somente quando tiver 4 pinos pretos, vai ter que criar uma lista exclusiva para os pinos pretos!
Do jeito que está, independente da cor do pino, esta sendo add na lista, assim se tiver 2 pretos e 2 brancos, o jogo acabará devido o size da lista conter 4.
Deu para compreender?

L

É isso mesmo, no seu programa, independente do pino, ele esta colocando na mesma lista. Se houverem 3 brancos e 1 preto, a sua condição vai ser true…

O que você pode fazer é criar uma lista somente para os pinos pretos, ou, depois que os pinos forem computados, você pode fazer uma verificação no Arry, caso essa posição contenha “Pino Preto” contador++ dai você verifica depois o tamanho do contador.

:slight_smile:

Criado 12 de dezembro de 2011
Ultima resposta 13 de dez. de 2011
Respostas 2
Participantes 3