Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- import javakarol.Roboter;
- /**
- * Realisierung eines Advent of Code Roboters Karol für BlueJ.
- */
- public class AocRoboter extends Roboter {
- private AocWelt welt;
- /**
- * Erzeuge Guard / Robot Karol an (x,y) in Welt
- */
- public AocRoboter(int startX, int startY, char startBlickrichtung, AocWelt inWelt) {
- super(startX, startY, startBlickrichtung, inWelt);
- this.welt = inWelt;
- }
- public void loeseTag06() {
- //
- final int defaultFlaeche = 100;
- int weltFlaeche = this.welt.getWeltLaenge() * this.welt.getWeltBreite();
- int verzoegerungMsec = Math.min(10, 300 * defaultFlaeche / weltFlaeche); // Default Welt 10 x 10 = 100
- this.VerzoegerungSetzen(verzoegerungMsec);
- int visitedCount = 0;
- while (true) {
- // zähle nur unbesuchte Felder (verhindert doppelt zählen)
- if(!this.IstMarke()) {
- visitedCount++;
- }
- this.MarkeSetzen();
- if (this.IstWand()) {
- break; // Wache Karol verlässt das Labor...
- } else if (this.IstZiegel()) {
- this.RechtsDrehen();
- } else {
- this.Schritt();
- }
- }
- System.out.println("Wache Karol hat das Labor verlassen...");
- System.out.println("Besuchte Kacheln: " + visitedCount);
- }
- /**
- * Der Roboter macht einen Schritt nach vorne
- */
- public void Schritt() {
- super.Schritt();
- }
- /**
- * Der Roboter dreht sich nach Rechts (im Uhrzeigersinn)
- */
- public void RechtsDrehen() {
- super.RechtsDrehen();
- }
- /**
- * Der Roboter setzt auf der Kachel unter ihm eine gelbe Marke
- */
- public void MarkeSetzen() {
- super.MarkeSetzen();
- }
- /**
- * Der Roboter setzt auf der Kachel unter ihm eine Marke der gewählten Farbe
- * Mögliche Farben: "rot","gelb","blau","grün","schwarz"
- */
- public void MarkeSetzen(String farbeMarke) {
- super.MarkeSetzen(farbeMarke);
- }
- /**
- * Der Roboter entfernt von der Kachel unter ihm eine Marke
- */
- public void MarkeLoeschen() {
- super.MarkeLoeschen();
- }
- /**
- * Abfrage ob der Roboter vor einer Wand bzw. einem Quader steht
- *
- * @return wenn zutrifft dann true
- */
- public boolean IstWand() {
- return super.IstWand();
- }
- /**
- * Abfrage ob vor dem Roboter ein Ziegel beliebiger Farbe liegt
- *
- * @return wenn zutrifft dann true
- */
- public boolean IstZiegel() {
- return super.IstZiegel();
- }
- /**
- * Abfrage ob sich unter dem Roboter eine Marke beliebiger Farbe befindet
- *
- * @return wenn zutrifft dann true
- */
- public boolean IstMarke() {
- return super.IstMarke();
- }
- /**
- * Abfrage ob sich unter dem Roboter eine Marke mit bestimmter Farbe befindet
- * Mögliche Farben: "rot","gelb","blau","grün","schwarz"
- *
- * @return wenn zutrifft dann true
- */
- public boolean IstMarke(String farbeMarke) {
- return super.IstMarke(farbeMarke);
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement