Advertisement
Guest User

Advent of Code 2024-Day06 - Robot Karol Roboter

a guest
Dec 16th, 2024
19
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 3.18 KB | None | 0 0
  1. import javakarol.Roboter;
  2.  
  3. /**
  4.  * Realisierung eines Advent of Code Roboters Karol für BlueJ.
  5.  */
  6. public class AocRoboter extends Roboter {
  7.     private AocWelt welt;
  8.  
  9.     /**
  10.      * Erzeuge Guard / Robot Karol an (x,y) in Welt
  11.      */
  12.     public AocRoboter(int startX, int startY, char startBlickrichtung, AocWelt inWelt) {
  13.         super(startX, startY, startBlickrichtung, inWelt);
  14.  
  15.         this.welt = inWelt;
  16.     }
  17.  
  18.     public void loeseTag06() {
  19.         //
  20.         final int defaultFlaeche = 100;
  21.         int weltFlaeche = this.welt.getWeltLaenge() * this.welt.getWeltBreite();
  22.         int verzoegerungMsec = Math.min(10, 300 * defaultFlaeche / weltFlaeche);  // Default Welt 10 x 10 = 100
  23.         this.VerzoegerungSetzen(verzoegerungMsec);
  24.  
  25.         int visitedCount = 0;
  26.         while (true) {
  27.             // zähle nur unbesuchte Felder (verhindert doppelt zählen)
  28.             if(!this.IstMarke()) {
  29.                 visitedCount++;
  30.             }
  31.             this.MarkeSetzen();
  32.  
  33.             if (this.IstWand()) {
  34.                 break;  // Wache Karol verlässt das Labor...
  35.             } else if (this.IstZiegel()) {
  36.                 this.RechtsDrehen();
  37.             } else {
  38.                 this.Schritt();
  39.             }
  40.         }
  41.         System.out.println("Wache Karol hat das Labor verlassen...");
  42.         System.out.println("Besuchte Kacheln: " + visitedCount);
  43.     }
  44.  
  45.     /**
  46.      * Der Roboter macht einen Schritt nach vorne
  47.      */
  48.     public void Schritt() {
  49.         super.Schritt();
  50.     }
  51.  
  52.     /**
  53.      * Der Roboter dreht sich nach Rechts (im Uhrzeigersinn)
  54.      */
  55.     public void RechtsDrehen() {
  56.         super.RechtsDrehen();
  57.     }
  58.  
  59.     /**
  60.      * Der Roboter setzt auf der Kachel unter ihm eine gelbe Marke
  61.      */
  62.     public void MarkeSetzen() {
  63.         super.MarkeSetzen();
  64.     }
  65.  
  66.     /**
  67.      * Der Roboter setzt auf der Kachel unter ihm eine Marke der gewählten Farbe
  68.      * Mögliche Farben: "rot","gelb","blau","grün","schwarz"
  69.      */
  70.     public void MarkeSetzen(String farbeMarke) {
  71.         super.MarkeSetzen(farbeMarke);
  72.     }
  73.  
  74.     /**
  75.      * Der Roboter entfernt von der Kachel unter ihm eine Marke
  76.      */
  77.     public void MarkeLoeschen() {
  78.         super.MarkeLoeschen();
  79.     }
  80.  
  81.     /**
  82.      * Abfrage ob der Roboter vor einer Wand bzw. einem Quader steht
  83.      *
  84.      * @return wenn zutrifft dann true
  85.      */
  86.     public boolean IstWand() {
  87.         return super.IstWand();
  88.     }
  89.  
  90.     /**
  91.      * Abfrage ob vor dem Roboter ein Ziegel beliebiger Farbe liegt
  92.      *
  93.      * @return wenn zutrifft dann true
  94.      */
  95.     public boolean IstZiegel() {
  96.         return super.IstZiegel();
  97.     }
  98.  
  99.     /**
  100.      * Abfrage ob sich unter dem Roboter eine Marke beliebiger Farbe befindet
  101.      *
  102.      * @return wenn zutrifft dann true
  103.      */
  104.     public boolean IstMarke() {
  105.         return super.IstMarke();
  106.     }
  107.  
  108.     /**
  109.      * Abfrage ob sich unter dem Roboter eine Marke mit bestimmter Farbe befindet
  110.      * Mögliche Farben: "rot","gelb","blau","grün","schwarz"
  111.      *
  112.      * @return wenn zutrifft dann true
  113.      */
  114.     public boolean IstMarke(String farbeMarke) {
  115.         return super.IstMarke(farbeMarke);
  116.     }
  117. }
  118.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement