/** * Die Methode beschreibt den �berlauf * * @param neuePosition * @param figurId * @return neuePosition, figurId */ @Override public int ueberlauf(int neuePosition, int figurId) { int hit = 0; if (neuePosition > 39) { for (int i = 0; i < figurenUeberlauf.size(); i++) { if (spielerAmZug.getFigur(figurId) == figurenUeberlauf.get(i) && spielerAmZug.getFigur(figurId).getPosition().getTyp() != FeldTyp.Endfeld) { // throw new RuntimeException("Figur will 2 mal ueber 0 laufen!"); } } figurenUeberlauf.add(spielerAmZug.getFigur(figurId)); hatUeberlauf = true; return (neuePosition - 40); } for (int i = 0; i < figurenUeberlauf.size(); i++) { if (spielerAmZug.getFigur(figurId) == figurenUeberlauf.get(i) && spielerAmZug.getFigur(figurId).getPosition().getTyp() != FeldTyp.Endfeld) { hit++; } } if (hit != 0) { hatUeberlauf = true; } else { hatUeberlauf = false; } return neuePosition; }
/** * Methode gibt die ID der Figur zurueck auf einem feld * * @param int feld feld das ueberprueft wird * @return int i id der Figur */ public int figurIdAufFeld(int feld) { if (spielbrett.getFeld(feld).getFigur() != null) { for (int i = 0; i < 4; i++) { if (spielerAmZug.getFigur(i) == spielbrett.getFeld(feld).getFigur()) { return i; } } } throw new RuntimeException("Keine Figur ausgewaehlt!"); }
/** Die Methode beendet einen Zug. */ public void zugBeenden() { int zaehler = 0; for (int i = 0; i < 4; i++) { if (spielerAmZug.getFigur(i).getPosition().getTyp() == FeldTyp.Endfeld) { zaehler++; } } if (zaehler == 4) { spielGewonnen(spielerAmZug); } for (int i = 0; i < spieler.size(); i++) { if (count == spieler.size()) { spielerAmZug = spieler.get(count - spieler.size()); darfWuerfeln = true; count = 1; break; } else { spielerAmZug = spieler.get(count); darfWuerfeln = true; count = count + 1; break; } } }
/** Die Methode ueberpreuft ob der Spieler sich auf dem Endfeld bewegen darf */ @Override public boolean zugGueltigAufEndfeld(int neuePosition, int n) { int x = 0; switch (spielerAmZug.getFarbe()) { case rot: x = 71 - spielerAmZug.getFigur(n).getPosition().getId(); if (spielerAmZug.getFigur(n).getPosition().getId() + getBewegungsWert() > 71) { return false; } else { for (int i = spielerAmZug.getFigur(n).getPosition().getId(); i < spielerAmZug.getFigur(n).getPosition().getId() + getBewegungsWert(); i++) { if (figurAufFeld(i + 1)) { return false; } } return true; } case blau: x = 59 - spielerAmZug.getFigur(n).getPosition().getId(); if (spielerAmZug.getFigur(n).getPosition().getId() + getBewegungsWert() > 59) { return false; } else { for (int i = spielerAmZug.getFigur(n).getPosition().getId(); i < spielerAmZug.getFigur(n).getPosition().getId() + getBewegungsWert(); i++) { if (figurAufFeld(i + 1)) { return false; } } return true; } case gruen: x = 67 - spielerAmZug.getFigur(n).getPosition().getId(); if (spielerAmZug.getFigur(n).getPosition().getId() + getBewegungsWert() > 67) { return false; } else { for (int i = spielerAmZug.getFigur(n).getPosition().getId(); i < spielerAmZug.getFigur(n).getPosition().getId() + getBewegungsWert(); i++) { if (figurAufFeld(i + 1)) { return false; } } return true; } case gelb: x = 63 - spielerAmZug.getFigur(n).getPosition().getId(); if (spielerAmZug.getFigur(n).getPosition().getId() + getBewegungsWert() > 63) { return false; } else { for (int i = spielerAmZug.getFigur(n).getPosition().getId(); i < spielerAmZug.getFigur(n).getPosition().getId() + getBewegungsWert(); i++) { if (figurAufFeld(i + 1)) { return false; } } return true; } default: return false; } }