예제 #1
0
  /**
   * Legt ein Logikgatter auf das Spielfeld
   *
   * @param spieler Aktueller Spieler, der legen will.
   * @param logikgatterIndex Index, an dem das Logikgatter beim Spieler sitzt.
   * @param ablegeReihe Reihe, an der das Gatter abgelegt werden soll.
   * @param ablegeIndex Index, an dem das Gatter abgelegt werden soll.
   * @return Ob legen erfolgreich.
   */
  public boolean legeLogikgatter(
      Spieler spieler, int logikgatterIndex, int ablegeReihe, int ablegeIndex) {
    if (!(spieler.getLogikgatter(logikgatterIndex) instanceof Not)) // Wenn kein NOT vorhanden.
    {
      /** Pruefe und setze Logikgatter auf Spielfeld */
      if ((spieler
          .getSpielfeld()
          .setLogikgatter(
              ablegeReihe, ablegeIndex, spieler.getLogikgatter(logikgatterIndex), this.bitfolge))) {
        spieler.zieheNeuesLogikgatter(
            logikgatterIndex); // Loesche und ziehe neues Logikgatter des Spielers
        return true; // Logikgatter wurde auf Spielfeld gelegt
      }
    }

    return false; // Logikgatter konnte nicht platziert werden!
  }
예제 #2
0
  /**
   * Legt ein Not Logikgatter auf das Spielfeld
   *
   * @param spieler Aktueller Spieler, der legen will.
   * @param logikgatterIndex Index, an dem das Logikgatter beim Spieler sitzt.
   * @param zuInvertierendesBit Bit, das invertiert werden soll
   * @return Ob legen erfolgreich.
   */
  public boolean legeLogikgatter(Spieler spieler, int logikgatterIndex, int zuInvertierendesBit) {
    if (spieler.getLogikgatter(logikgatterIndex) instanceof Not) // pruefe auf NOT Gatter
    {
      if (!(zuInvertierendesBit < 0 && zuInvertierendesBit > 5)) // Wiederhole bei falschem Index
      {
        this.bitfolge.invertBit(zuInvertierendesBit); // invertiere das Bit
        spieler.zieheNeuesLogikgatter(
            logikgatterIndex); // Loesche und ziehe neues Logikgatter des Spielers
        System.out.println("invertiert");
        return true; // Bit wurde invertiert (Not gelegt)
      } else {
        System.out.println("Falsche Zahl");
      }
    } else {
      System.out.println("Kein Not");
    }

    return false; // Logikgatter konnte nicht platziert werden!
  }
예제 #3
0
  /**
   * Fueht teil eines Spielzuges durchS
   *
   * @param spieler Aktueller SpielerS
   * @param gegner Gegner des SpielersS
   */
  private void spielen(Spieler spieler, Spieler gegner) {
    this.rundenzahl++; // Zaehlt die Runden

    spieler.getSpielfeld().entferneUngueltigeLogikgatter(this.bitfolge);

    spieler.generiereLogikgatter();

    if (spieler.getIsKI()) {
      spieler.spieleAlsKI(gegner.getSpielfeld(), this.bitfolge);
    }

    if (spieler.getSpielfeld().getLogikgatter(3, 0) != null) {
      this.isSpielende = true; // Spiel ist zu Ende.
      spieler.setIsWinner();
    }
  }