Ejemplo n.º 1
0
  @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);
  }
Ejemplo n.º 2
0
  /**
   * 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);
    }
  }