/** * 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! }
/** * 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! }
/** * 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(); } }