private boolean verificaCongettura(Congettura ipotesi) {
boolean flag = false;
String mostrata = null;
String colpevole = ipotesi.getAccusato();
ArmiEnum arma = ipotesi.getArma();
Giocatore daControllare = null;
Giocatore giocatore = getGiocatore(ipotesi.getAccusante());
StanzeEnum stanza = giocatore.getStanza();
if ((giocatore != null) && (arma != null) && (stanza != null) && (colpevole != "")) {
int miaPosizione = giocatori.indexOf(giocatore);
for (int i = miaPosizione - 1; i >= 0 && !flag; i--) {
daControllare = giocatori.get(i);
if (daControllare.haCarta(arma.toString())) {
flag = true;
mostrata = arma.toString();
}
if (daControllare.haCarta(stanza.toString())) {
flag = true;
mostrata = stanza.toString();
}
if (daControllare.haCarta(colpevole)) {
flag = true;
mostrata = colpevole;
}
}
for (int i = giocatori.size() - 1; i >= miaPosizione && !flag; i--) {
daControllare = giocatori.get(i);
if (daControllare.haCarta(arma.toString())) {
flag = true;
mostrata = arma.toString();
}
if (daControllare.haCarta(stanza.toString())) {
flag = true;
mostrata = stanza.toString();
}
if (daControllare.haCarta(colpevole)) {
flag = true;
mostrata = colpevole;
}
}
Casella destinazione = tabellone.getCasellaVuotaInStanza(giocatore.getStanza());
getGiocatore(colpevole).cambiaPosizione(destinazione);
for (Pedina pedina : pedineArmi) {
if (pedina.getNome().equals(ipotesi.getArma().toString())) {
destinazione = tabellone.getCasellaVuotaInStanza(giocatore.getStanza());
pedina.cambiaPosizione(destinazione);
}
}
if (flag && mostrata != null) {
notificaTutti(daControllare.getNome() + " ha confutato la teoria di " + giocatore.getNome());
notificaGiocatore(daControllare.getNome() + " ha confutato la mia teoria con la carta " + mostrata, giocatore);
notificaGiocatore("Ho confutato la teoria di " + giocatore.getNome() + " mostrando la carta " + mostrata, daControllare);
} else {
notificaTutti("Nessuno ha confutato la teoria di " + giocatore.getNome());
}
}
giocatore.setUltimaAzione(AzioniEnum.IPOTESI);
return !flag;
}