/** * Sucht zunaechst die ausgewaehlte Figur aus und bewegt sie um die angegebene Anzahl vor * * @param figur * @param anzahl */ public int bewegeFigur(Figur figur, int wurfAnzahl) { // Die Regeln wurden einen Schritt vorhere überprüft. Es wird nur // eine Figur übergeben, die bewegt werden kann. // Jetzt muss nur noch die Figur gesetzt werden if (figur.getPosition() == figur.getHausFeld()) { return figur.getStartFeld(); } else { int newPosition = figur.getPosition() + wurfAnzahl; // Würde die Figur über das letzte Feld gelangen, // so muss es in die Zielfelder gehen if (newPosition > figur.getEndFeld()) { if (newPosition - figur.getEndFeld() > 4) { // Hier wird ein Fehler erzeugt, weil man diese Figur nicht // auswählen konnte und der Fehelr normalerweise nicht auftritt newPosition = 100; } if (figur.getPosition() > figur.getEndFeld()) { newPosition = figur.getPosition() + wurfAnzahl; } else { newPosition = figur.getZielFelder()[newPosition - figur.getEndFeld() - 1]; } } return newPosition; // NetworkService.getInstance().sendeFigurAnClients(figur); } }
@Override public void update(Observable o, Object arg) { setChanged(); Figur figur = (Figur) arg; int altePosition = -100; // Alte Position ermitteln for (int i : spielfiguren.keySet()) { if (spielfiguren.get(i).getId() == figur.getId()) { altePosition = i; break; } } // Nur eine Figur entfernen, wenn diese auch schon auf dem Spielfeld ist if (altePosition != -100) { // Alte Position entfernen spielfiguren.remove(altePosition); } // Neue Position besetzen spielfiguren.put(figur.getPosition(), figur); // View benachrichtigen notifyObservers(this); }