diff options
| author | Florian Fischer <florian.fischer@muhq.space> | 2026-05-13 13:56:15 +0200 |
|---|---|---|
| committer | Florian Fischer <florian.fischer@muhq.space> | 2026-05-13 13:56:15 +0200 |
| commit | f7f774e53e020631022604fc33df3a7f92e88ec5 (patch) | |
| tree | 0dbcc4405397d81c4bc0a1c7cd75a4891841fcbd /Info/9/3 | |
| parent | 5d2beccdabb6d05588cdfedb535f0da7220556db (diff) | |
| download | unterricht-f7f774e53e020631022604fc33df3a7f92e88ec5.tar.gz unterricht-f7f774e53e020631022604fc33df3a7f92e88ec5.zip | |
planet: add Online-IDE code
Diffstat (limited to 'Info/9/3')
| -rw-r--r-- | Info/9/3/Planet/Planet.json | 261 |
1 files changed, 261 insertions, 0 deletions
diff --git a/Info/9/3/Planet/Planet.json b/Info/9/3/Planet/Planet.json new file mode 100644 index 00000000..cb6e9c3b --- /dev/null +++ b/Info/9/3/Planet/Planet.json @@ -0,0 +1,261 @@ +{ + "name": "Planet", + "id": 935176, + "modules": [ + { + "name": "Planet", + "text": "class Planet extends World {\n Sprite boden;\n int breite = 16;\n int hoehe = 12;\n\n void erzeugeBoden() {\n boden = new Sprite(25, 25, SpriteLibrary.Planet, 0);\n boden.makeTiling(breite * 50, hoehe * 50);\n\n // Zentriere den erzeugten Boden im Koordinatensystem\n int volleBreite = breite * 50;\n int volleHoehe = hoehe * 50;\n int breitenUnterschied = (int)getWidth() - volleBreite;\n int hoehenUnterschied = (int)getHeight() - volleHoehe;\n setCoordinateSystem(-breitenUnterschied / 2, -hoehenUnterschied / 2, getWidth(), getHeight());\n }\n\n Planet() {\n erzeugeBoden();\n }\n\n Planet(int neueBreite, int neueHoehe) {\n breite = neueBreite;\n hoehe = neueHoehe;\n erzeugeBoden();\n }\n\n static Rover standardPlanet() {\n new Planet(10, 10);\n\n new Gestein(4, 3);\n new Gestein(5, 2);\n new Gestein(6, 3);\n \n new Huegel(3, 4);\n new Huegel(4, 4);\n new Huegel(5, 3);\n new Huegel(5, 4);\n\n new Marke(6, 4);\n return new Rover(2, 3);\n }\n\n static Rover starteMethodenTest() {\n Rover r = standardPlanet();\n return r;\n }\n\n static Rover starteSequenz1() {\n new Planet(6, 5);\n for (int i = 0; i < 6; i++) {\n new Huegel(i, 0);\n new Huegel(i, 4);\n }\n for (int i = 1; i < 6; i++) {\n new Huegel(i, 1);\n new Huegel(i, 3);\n }\n\n new Marke(5, 2);\n\n return new Rover(0, 2);\n }\n \n static Rover starteSequenz2() {\n new Planet(6, 5);\n for (int i = 0; i < 6; i++) {\n if (i != 2) {\n new Huegel(i, 0);\n new Huegel(i, 1);\n }\n if (i != 3) {\n new Huegel(i, 3);\n new Huegel(i, 4);\n }\n }\n\n new Marke(3, 4);\n\n return new Rover(0, 2);\n }\n\n static Rover starteSequenz3() {\n new Planet(7, 5);\n\n new Huegel(0, 0);\n new Huegel(0, 2);\n new Huegel(0, 3);\n new Huegel(0, 4);\n\n new Huegel(1, 0);\n new Huegel(1, 4);\n \n new Huegel(2, 0);\n new Huegel(2, 1);\n new Huegel(2, 2);\n new Huegel(2, 4);\n\n new Huegel(3, 0);\n new Huegel(3, 4);\n\n new Huegel(4, 2);\n new Huegel(4, 3);\n new Huegel(4, 4);\n\n new Huegel(5, 1);\n new Huegel(5, 2);\n\n new Huegel(6, 4);\n\n new Marke(5, 4);\n\n return new Rover(0, 1);\n }\n\n static Rover starteMethodenZusatzaufgabe1() {\n new Planet(8, 4);\n Gestein g = new Gestein(4, 1);\n g.setImageIndex(2); // rot\n g = new Gestein(4, 2);\n g.setImageIndex(1); // blau\n g = new Gestein(5, 1);\n g.setImageIndex(2); // rot\n g = new Gestein(5, 2);\n g.setImageIndex(2); // rot\n return new Rover(2, 1);\n }\n \n static Rover starteMethodenZusatzaufgabe2() {\n new Planet(8, 4);\n new Gestein(3, 1);\n new Gestein(6, 1);\n new Gestein(6, 2);\n return new Rover(1, 1);\n }\n\n static Rover starteSammleSteine() {\n int l = Random.randint(3, 6);\n Planet p = new Planet(4 + l, 3);\n \n for (int i = 2; i < p.breite - 1; i++) {\n new Gestein(i, 1);\n }\n \n return new Rover(1, 1);\n }\n\n static void checkSammleSteine() {\n for (int i = 2; i < ((Planet)World.getWorld()).breite - 1; i++) {\n report(Tile.getTileAt(i, 1, \"Gestein\") == null,\n \"Gestein aufgehoben (\" + i + \", 1)\");\n }\n }\n\n static Rover starteBergketteAbfahren() {\n int l = Random.randint(3, 6);\n \n Planet p = new Planet(4 + l, 4);\n for (int i = 2; i < p.breite - 2; i++) {\n new Huegel(i, 1);\n }\n for (int i = 1; i < p.breite - 1; i++) {\n new Huegel(i, 2);\n }\n \n return new Rover(2, 0);\n }\n \n static void checkBergketteAbfahren() {\n report(Tile.getTileAt(((Planet)World.getWorld()).breite - 2, 0, \"Rover\") != null,\n \"Rover Position\");\n }\n \n static Rover starteBedingteAnweisung() {\n new Planet(5, 3);\n new Huegel(2, 1);\n new Gestein(1, 1);\n return new Rover(1, 1);\n }\n \n static void checkBedingteAnweisung() {\n report(Tile.getTileAt(3, 1, \"Rover\") != null,\n \"Rover Position\");\n report(Tile.getTileAt(1, 1, \"Gestein\") == null,\n \"Gestein aufgehoben\");\n }\n\n static Rover starteNimmGesteinNebenZweiHuegel() {\n new Planet(12, 5);\n new Marke(10, 2);\n new Huegel(2, 1); new Huegel(2, 3);\n new Gestein(2, 2);\n new Huegel(4, 1); new Huegel(4, 3);\n new Gestein(4, 2);\n new Huegel(9, 1); new Huegel(9, 3);\n new Huegel(6, 1);\n new Huegel(7, 3);\n new Huegel(8, 1);\n new Gestein(9, 2);\n\n return new Rover(1, 2);\n }\n \n static void checkNimmGesteinNebenZweiHuegel() {\n report(Tile.getTileAt(2, 2, \"Gestein\") == null,\n \"Gestein aufgehoben\");\n report(Tile.getTileAt(4, 2, \"Gestein\") == null,\n \"Gestein aufgehoben\");\n report(Tile.getTileAt(9, 2, \"Gestein\") == null,\n \"Gestein aufgehoben\");\n }\n\n static Rover starteZaehleGestein() {\n new Planet(15, 3);\n new Marke(13, 1);\n new Gestein(2, 1);\n new Gestein(4, 1);\n new Gestein(6, 1);\n new Gestein(9, 1);\n\n return new Rover(1, 1);\n }\n \n static void checkZaehleGestein(int aufgehoben) {\n report(aufgehoben == 4, \"Zurueckgegebene Anzahl\");\n report(Tile.getTileAt(2, 1, \"Gestein\") == null && \n Tile.getTileAt(4, 1, \"Gestein\") == null && \n Tile.getTileAt(6, 1, \"Gestein\") == null && \n Tile.getTileAt(9, 1, \"Gestein\") == null,\n \"Gestein aufgehoben\");\n }\n \n static Rover starteRegelmaesigeTaeler() {\n new Planet(10, 5);\n\n for (int x = 0; x < 10; x++) {\n if (x > 0 && x % 2 == 0) {\n int depth = x / 2;\n for (int y = depth; y < 5; y++) {\n new Huegel(x, y);\n }\n new Gestein(x, depth);\n } else {\n for (int y = 1; y < 5; y++) {\n new Huegel(x, y);\n }\n }\n }\n\n return new Rover(0, 0);\n }\n\n static void checkRegelmaesigeTaeler() {\n report(Tile.getTileAt(3, 1, \"Gestein\") == null && \n Tile.getTileAt(5, 2, \"Gestein\") == null && \n Tile.getTileAt(7, 3, \"Gestein\") == null && \n Tile.getTileAt(9, 4, \"Gestein\") == null,\n \"Gestein aufgehoben\");\n }\n\n static Rover starteGang() {\n new Planet(9, 9);\n {\n int x = 0;\n int y = 4;\n \n // Ziel-Koordinaten\n int zX = 8;\n int zY = Random.randint(1, 7);\n new Gestein(zX, zY);\n \n // Eingang zum Gestein\n new Marke(zX - 1, zY);\n \n int richtung = Random.randint(1, 3);\n \n // Oben\n if (richtung == 1)\n { \n int up = Random.randint(Math.max(y - zY, 1), y);\n for (int j = 0; j < up; j++) {\n new Marke(x, y - 1 - j);\n }\n // Rechts\n for (int j = x; j < zX - 2; j++) {\n new Marke(j, y - 1 - up);\n }\n // Runter\n for (int j = y - 1 - up; j <= zY; j++) {\n new Marke(zX - 2, j);\n }\n }\n // Unten\n else if (richtung == 3)\n { \n int down = Random.randint(Math.max(zY - y, 1), 7 - y);\n for (int j = 0; j < down; j++) {\n new Marke(x, y + 1 + j);\n }\n\n // Rechts\n for (int j = x; j < zX - 2; j++) {\n new Marke(j, y + 1 + down);\n }\n\n // Rauf\n for (int j = y + 1 + down; j >= zY; j--) {\n new Marke(zX - 2, j);\n }\n }\n \n // Nach hinten\n else {\n // Runter\n if (zY > y) {\n for (int j = y; j <= zY; j++) {\n new Marke(x + 1, j);\n }\n }\n // Rauf\n else {\n for (int j = zY; j <= y; j++) {\n new Marke(x + 1, j);\n }\n }\n \n // Hinter\n for (int j = x + 1; j < zX; j++) {\n new Marke(j, zY);\n }\n }\n }\n // Fuelle die Hoehle\n for (int x = 0; x < 9; x++) {\n for (int y = 0; y < 9; y++) {\n boolean found = (x == 0 && y == 4);\n for (Shape shape : getWorld().getAllShapes()) {\n try {\n Tile t = (Tile)shape;\n if (t.getX() == x && t.getY() == y) {\n found = true;\n // Entferne die gefundene Marke\n if (t instanceof Marke) {\n t.destroy();\n }\n //break;\n }\n }\n catch(ClassCastException e) { }\n }\n if (!found) {\n new Huegel(x, y);\n }\n }\n }\n \n return new Rover(0, 4);\n }\n\n static void checkGang() {\n Rover r = (Rover)Tile.getFirstTile(\"Rover\");\n int x = r.getX();\n int y = r.getY();\n Gestein g = (Gestein)Tile.getTileAt(x, y, \"Gestein\");\n report(g != null, \"Gestein gefunden\");\n }\n\n static Rover starteKreuzung() {\n new Planet(3, 3);\n new Gestein(1, 1);\n new Huegel(0, 0);\n new Huegel(0, 2);\n new Huegel(2, 0);\n new Huegel(2, 2);\n switch(Random.randint(1, 3)) {\n case 1 : // oben\n (new Gestein(1, 0)).wassergehalt = 1;\n (new Gestein(2, 1)).wassergehalt = 0;\n (new Gestein(1, 2)).wassergehalt = 0;\n break;\n case 2 : // dahinter\n (new Gestein(1, 0)).wassergehalt = 0;\n (new Gestein(2, 1)).wassergehalt = 1;\n (new Gestein(1, 2)).wassergehalt = 0;\n break;\n case 3 : // unten\n (new Gestein(1, 0)).wassergehalt = 0;\n (new Gestein(2, 1)).wassergehalt = 0;\n (new Gestein(1, 2)).wassergehalt = 1;\n break;\n }\n \n return new Rover(0, 1);\n }\n\n static void checkKreuzung() {\n Rover r = (Rover)Tile.getFirstTile(\"Rover\");\n int x = r.getX();\n int y = r.getY();\n Gestein g = (Gestein)Tile.getTileAt(x, y, \"Gestein\");\n report((x != 1 || y != 1) && g != null && g.wassergehalt > 0, \"Wasser gefunden\");\n }\n\n static Rover starteDieHoehle() {\n new Planet(16, 9);\n \n // Platziere Kreuzungen\n Gestein[] kreuzungen = new Gestein[3];\n for (int i = 0; i < 3; i++) {\n int pX = 2;\n if (i > 0) {\n pX = kreuzungen[i - 1].getX();\n }\n \n int x = pX + i * 4 + Random.randint(0, 1);\n\n // Die erste Kreuzung ist schon sehr weit rechts\n if (i == 1 && pX == 3) {\n x = pX + i * 4;\n }\n // Letzte Moeglichkeit fuer eine Kreuzung\n else if (x > 11) {\n x = 11;\n }\n\n\n kreuzungen[i] = new Gestein(\n x, // random x\n Random.randint(2, 6)); // random y\n }\n \n // Platziere Mineralkreuzung\n Gestein mineralKreuzung = new Gestein(15, Random.randint(2, 6));\n\n int mX = mineralKreuzung.getX();\n int mY = mineralKreuzung.getY();\n if (Random.randint(1, 2) == 1) {\n new Mineral(mX, mY - 2);\n (new Gestein(mX, mY - 1)).wassergehalt = 1;\n (new Gestein(mX, mY + 1)).wassergehalt = 0;\n } else {\n new Mineral(mX, mY + 2);\n (new Gestein(mX, mY - 1)).wassergehalt = 0;\n (new Gestein(mX, mY + 1)).wassergehalt = 1;\n }\n\n // Grabe Gaenge\n int[] ausgaenge = { 0, 0, 0 };\n for (int i = 0; i < 3; i ++) {\n int x = kreuzungen[i].getX();\n int y = kreuzungen[i].getY();\n \n // Ziel-Koordinaten\n int zX = 0;\n int zY = 0;\n if (i < 2) {\n zX = kreuzungen[i + 1].getX();\n zY = kreuzungen[i + 1].getY();\n } else {\n zX = mineralKreuzung.getX();\n zY = mineralKreuzung.getY();\n }\n \n // Eingang zur naechsten Kreuzung\n new Marke(zX - 1, zY);\n \n ausgaenge[i] = Random.randint(1, 3);\n \n // Oben, falls moeglich (genug Platz nach rechts oder Ziel weiter oben)\n if (ausgaenge[i] == 1 && \n (zX - x > 5 || zY < y))\n {\n (new Gestein(x, y - 1)).wassergehalt = 1;\n (new Gestein(x + 1, y)).wassergehalt = 0;\n (new Gestein(x, y + 1)).wassergehalt = 0;\n\n new Marke(x, y+2);\n \n int up = Random.randint(Math.max(y - zY, 1), y - 1);\n for (int j = 0; j < up; j++) {\n new Marke(x, y - 2 - j);\n }\n // Rechts\n for (int j = x; j < zX - 2; j++) {\n new Marke(j, y - 1 - up);\n }\n // Runter\n for (int j = y - 1 - up; j <= zY; j++) {\n new Marke(zX - 2, j);\n }\n }\n \n // Unten, falls moeglich (genug Platz nach rechts oder Ziel weiter unten)\n else if (ausgaenge[i] == 3 && \n (zX - x > 5 || zY > y))\n {\n (new Gestein(x, y - 1)).wassergehalt = 0;\n (new Gestein(x + 1, y)).wassergehalt = 0;\n (new Gestein(x, y + 1)).wassergehalt = 1;\n\n new Marke(x, y-2);\n \n int down = Random.randint(Math.max(zY - y, 1), 7 - y);\n for (int j = 0; j < down; j++) {\n new Marke(x, y + 2 + j);\n }\n\n // Rechts\n for (int j = x; j < zX - 2; j++) {\n new Marke(j, y + 1 + down);\n }\n\n // Rauf\n for (int j = y + 1 + down; j >= zY; j--) {\n new Marke(zX - 2, j);\n }\n }\n \n // Nach hinten\n else {\n (new Gestein(x, y - 1)).wassergehalt = 0;\n (new Gestein(x + 1, y)).wassergehalt = 1;\n (new Gestein(x, y + 1)).wassergehalt = 0;\n \n // Runter\n if (zY > y) {\n for (int j = y; j <= zY; j++) {\n new Marke(x + 2, j);\n }\n }\n // Rauf\n else {\n for (int j = zY; j <= y; j++) {\n new Marke(x + 2, j);\n }\n }\n \n // Hinter\n for (int j = x + 2; j < zX; j++) {\n new Marke(j, zY);\n }\n }\n }\n \n // Gang zur ersten Kreuzung\n int zX = kreuzungen[0].getX();\n int zY = kreuzungen[0].getY();\n \n new Marke(1, zY);\n \n // Runter\n if (zY > 4) {\n for (int j = 4; j <= zY; j++) {\n new Marke(0, j);\n }\n }\n // Rauf\n else {\n for (int j = zY; j <= 4; j++) {\n new Marke(0, j);\n }\n }\n \n // Hinter\n for (int j = 1; j < zX; j++) {\n new Marke(j, zY);\n }\n \n // Fuelle die Hoehle\n for (int x = 0; x < 16; x++) {\n for (int y = 0; y < 9; y++) {\n boolean found = (x == 0 && y == 4);\n for (Shape shape : getWorld().getAllShapes()) {\n try {\n Tile t = (Tile)shape;\n if (t.getX() == x && t.getY() == y) {\n found = true;\n // Entferne die gefundene Marke\n if (t instanceof Marke) {\n t.destroy();\n }\n // TODO: Verhindere doppelte Marken aus Effizienzgruenden\n //break;\n }\n }\n catch(ClassCastException e) { }\n \n }\n if (!found) {\n new Huegel(x, y);\n }\n }\n }\n \n return new Rover(0, 4);\n }\n \n static void report(boolean result, String msg) {\n if (result) {\n println(\"ok - \" + msg, Color.green);\n }\n else {\n println(\"not ok - \" + msg, Color.red);\n }\n }\n}", + "id": 2695383, + "identical_to_repository_version": true, + "is_copy_of_id": 2695383, + "repository_file_version": 7, + "isFolder": false, + "parent_folder_id": 3058715 + }, + { + "name": "Rover", + "text": "class Rover extends Fahrzeug {\n\n Rover(int x, int y)\n {\n super(x, y);\n nachricht(\"Ich bin bereit\", 1);\n }\n\n void sammleSteine()\n {\n // TODO 4.2: Schreibe eine Wiederholung, die eine beliebige Anzahl\n // von Steinen aufhebt.\n }\n\n void bergketteAbfahren()\n {\n // TODO 4.2: Schreibe eine Wiederholung, die eine Bergkette entlang\n // faehrt.\n }\n\n void nimmGesteinFallsVorhanden()\n {\n // TODO 5.1.2: Schreibe eine bedingte Anweisung, die nur dann Gestein\n // aufnimmt, falls eines vorhanden ist.\n }\n\n void huegelUmfahren()\n {\n // TODO 5.1.3: Schreibe eine bedingte Anweisung, mit der ein Huegel\n // umfahren wird, falls ein Huegel vor dem Rover liegt.\n }\n\n void nimmGesteinNebenZweiHuegel()\n {\n // TODO 5.2.3: Schreibe eine Wiederholung, die bis zur Marke\n // alles Gestein aufgenimmt, falls links UND rechts\n // ein Huegel neben dem Rover vorhanden ist.\n }\n\n // TODO 6.1.1: Schreibe eine METHODE zaehlGestein, die alle Steine bis\n // zu einer Markierung einsammelt und Anzahl der\n // Gesteine zurueckgibt.\n // HINWEIS: Achte auf einen passenden Rueckgabetyp.\n // Verwende `return` um einen Wert zurueckzugeben.\n\n void sammleGesteinAusTaelern(int anzahlTaeler)\n {\n // TODO 6.2.1: Vervollstaendige die Methode.\n // Tipp: Orientiere dich an dem vorgeschlagenen Struktogramm\n // des letzten Teams.\n }\n\n // TODO: 6.2.2: Aendere die Methode hokuspokus so, dass man die Laenge des Quadrats\n // als Parameter beim Methodenaufruf angeben kann.\n void hokuspokus(/* FIXME: 6.2.2 */)\n {\n for (int i = 0; i < 4; i++)\n {\n for (int j = 0; j < 5; j++)\n {\n setzeMarke();\n fahre();\n }\n drehe(\"rechts\");\n }\n }\n\n void gesteinNebenHuegel()\n {\n while (!markeVorhanden())\n {\n fahre();\n if (huegelVorhanden(\"links\"))\n {\n nimmGestein();\n }\n }\n }\n\n /**\n * Der Rover bewegt sich ein Feld in Fahrtrichtung weiter.\n * Sollte sich in Fahrtrichtung ein Objekt der Klasse Huegel oder er \n * sich an der Grenze der Welt befinden, dann erscheint eine\n * entsprechende Meldung auf dem Display.\n */\n void fahre()\n {\n if (huegelVorhanden(\"vorne\"))\n {\n nachricht(\"Zu steil!\");\n }\n else\n {\n Planet planet = (Planet)getWorld();\n if (rotation == 90 && getY() == 0 || // Der Rover ist zu weit oben\n rotation == 270 && getY() == planet.hoehe - 1 || // Der Rover ist zu weit unten\n rotation == 180 && getX() == 0 || // Der Rover ist zu weit links\n rotation == 0 && getX() == planet.breite - 1) // Der Rover ist zu weit rechts\n {\n nachricht(\"Ich kann mich nicht bewegen\");\n }\n else\n {\n move(1);\n warte(0.5);\n }\n }\n }\n\n /**\n * Der Rover dreht sich um 90 Grad in die Richtung, die mit richtung („links“ oder „rechts“) übergeben wurde.\n * Sollte ein anderer Text (String) als \"rechts\" oder \"links\" übergeben werden, dann erscheint eine entsprechende Meldung auf dem Display.\n */\n void drehe(String richtung)\n {\n if (richtung == \"rechts\")\n {\n setzeRotation(rotation - 90);\n }\n else if (richtung == \"links\")\n {\n setzeRotation(rotation + 90);\n }\n else\n {\n nachricht(\"Befehl nicht korrekt!\");\n }\n }\n\n /**\n * Der Rover gibt durch einen Wahrheitswert (true oder false) zurück, ob sich auf seiner \n * Position ein Objekt der Klasse Gestein befindet.\n * Eine entsprechende Meldung erscheint auch auf dem Display.\n */\n boolean gesteinVorhanden()\n {\n if (getFirstCollidingTile(\"Gestein\") != null)\n {\n nachricht(\"Gestein gefunden!\");\n return true;\n }\n\n nachricht(\"Kein Gestein vorhanden!\");\n return false;\n }\n\n /**\n * Der Rover überprüft, ob sich in richtung (\"rechts\", \"links\", oder \"vorne\") ein Objekt der Klasse Huegel befindet.\n * Das Ergebnis wird auf dem Display angezeigt.\n * Sollte ein anderer Text (String) als \"rechts\", \"links\" oder \"vorne\" übergeben werden, dann erscheint eine entsprechende Meldung auf dem Display.\n */\n boolean huegelVorhanden(String richtung)\n {\n int offsetX = 0;\n int offsetY = 0;\n\n if (richtung == \"vorne\" && rotation == 0 || richtung == \"links\" && rotation == 270 || richtung == \"rechts\" && rotation == 90)\n {\n offsetX = 1;\n offsetY = 0;\n }\n else if (richtung == \"vorne\" && rotation == 180 || richtung == \"links\" && rotation == 90 || richtung == \"rechts\" && rotation == 270)\n {\n offsetX = -1;\n offsetY = 0;\n }\n else if (richtung == \"vorne\" && rotation == 270 || richtung == \"rechts\" && rotation == 0 || richtung == \"links\" && rotation == 180)\n {\n offsetX = 0;\n offsetY = 1;\n }\n else if (richtung == \"vorne\" && rotation == 90 || richtung == \"rechts\" && rotation == 180 || richtung == \"links\" && rotation == 0)\n {\n offsetX = 0;\n offsetY = -1;\n }\n else\n {\n // richtung != \"vorne\" && richtung != \"links\" && richtung != \"rechts\"\n nachricht(\"Befehl nicht korrekt!\");\n return false;\n }\n\n return getTileAtOffset(offsetX, offsetY, \"Huegel\") != null;\n }\n\n /**\n * Der Rover nimmt das Gestein auf seiner Position auf.\n * Sollte kein Objekt der Klasse Gestein vorhanden sein, dann erscheint\n * eine entsprechende Meldung auf dem Display.\n */\n void nimmGestein()\n {\n if (gesteinVorhanden())\n {\n warte(1);\n destroyColliding(\"Gestein\");\n }\n else \n {\n nachricht(\"Hier ist kein Gestein\");\n }\n }\n\n /**\n * Der Rover nimmt das Mineral auf seiner Position auf.\n * Sollte kein Objekt der Klasse Mineral vorhanden sein, dann erscheint\n * eine entsprechende Meldung auf dem Display.\n */\n void analsyiereMineral()\n {\n if (getFirstCollidingTile(\"Mineral\") != null)\n {\n \n warte(1);\n destroyColliding(\"Mineral\");\n nachricht(\"Mineral analyisert.\");\n println(\"Herzlichen Glueckwunsch! Du hast die Mission erfolgreich abgeschlossen!\");\n println(\"Die chemische Analyse des Minerals hat organische Molekuele gefunden.\");\n println(\"Molekuele die als Bausteine fuer Leben benoetigt werden.\");\n println(\"Neben Bestandteilen von DNA ist auch \" + new String(Mineral.m) + \" im Mineral enthalten, das vermutlich durch Meteroiten auf den Planet gebracht wurde.\");\n }\n else \n {\n nachricht(\"Hier ist kein Mineral\");\n }\n }\n\n /**\n * Der Rover ermittelt den Wassergehalt des Gesteins auf seiner Position und gibt diesen zurück.\n * Sollte kein Objekt der Klasse Gestein vorhanden sein, dann erscheint eine entsprechende Meldung auf dem Display\n * und er gibt -1 zurück.\n */\n int analysiereGestein()\n {\n if (gesteinVorhanden())\n {\n nachricht(\"Gestein untersucht!\");\n return((Gestein)getFirstCollidingTile(\"Gestein\")).getWassergehalt();\n }\n else \n {\n nachricht(\"Hier ist kein Gestein\");\n return -1;\n }\n }\n\n /**\n * Der Rover erzeugt ein Objekt der Klasse „Marke“ auf seiner Position.\n */\n void setzeMarke()\n {\n new Marke(getX(), getY());\n bringToFront();\n }\n\n /**\n * Der Rover gibt durch einen Wahrheitswert (true oder false) zurück,\n * ob sich auf seiner Position ein Objekt der Klasse Marke befindet.\n * Eine entsprechende Meldung erscheint auch auf dem Display.\n */\n boolean markeVorhanden()\n {\n if (getFirstCollidingTile(\"Marke\") != null)\n {\n nachricht(\"Marke gefunden!\");\n return true;\n }\n\n nachricht(\"Keine Marke vorhanden!\");\n return false;\n }\n /**\n * Der Rover entfernt eine vorhandene Marke auf seiner Position.\n */\n void entferneMarke()\n {\n if (markeVorhanden())\n {\n destroyColliding(\"Marke\");\n }\n }\n\n /**\n * Der Rover zeigt die Nachricht auf seinem Display an.\n */\n void nachricht(String neueNachricht)\n {\n display.setzeText(neueNachricht);\n }\n\n /**\n * Der Rover zeigt die Nachricht fuer eine festen Anzahl an\n * Sekunden auf seinem Display an.\n */\n void nachricht(String neueNachricht, int sekunden)\n {\n display.setzeText(neueNachricht);\n warte(sekunden);\n display.schalteAus();\n }\n}", + "id": 2695411, + "identical_to_repository_version": true, + "is_copy_of_id": 2695411, + "repository_file_version": 11, + "isFolder": false + }, + { + "name": "Tile", + "text": "class Tile extends Sprite {\n Tile(int x, int y, int idx) {\n super(x * 50 + 25, y * 50 + 25, SpriteLibrary.Planet, idx);\n }\n \n /**\n * Gibt die X-Koordinate zurueck.\n */\n int getX() {\n double x = getCenterX();\n return(int)(x / 50);\n }\n \n /**\n * Gibt die Y-Koordinate zurueck.\n */\n int getY() {\n double y = getCenterY();\n return(int)(y / 50);\n }\n\n /**\n * Warte fuer eine gewisse Anzahl an Sekunden.\n */\n void warte(double sekunden) {\n Thread.currentThread().sleep((int)(sekunden * 1000));\n }\n\n /**\n * Pruefe ob ein Shape Objekt von einem bestimmten Tile-Typ ist.\n */\n static boolean pruefeTileTyp(Shape shape, String type) {\n switch(type) {\n case \"Marke\" : \n return shape instanceof Marke;\n case \"Huegel\" : \n return shape instanceof Huegel;\n case \"Gestein\" : \n return shape instanceof Gestein;\n case \"Mineral\" : \n return shape instanceof Mineral;\n case \"Rover\" : \n return shape instanceof Rover;\n default : \n return false;\n }\n }\n \n Tile getFirstCollidingTile(String type) {\n for (Shape shape : getWorld().getAllShapes()) {\n if (shape == this) continue;\n \n if (!pruefeTileTyp(shape, type)) continue;\n \n if (collidesWith(shape)) {\n return(Tile)shape;\n }\n }\n return null;\n }\n\n static Tile getTileAt(int x, int y, String type) {\n for (Shape shape : World.getWorld().getAllShapes()) {\n if (!pruefeTileTyp(shape, type)) continue;\n\n Tile t = (Tile)shape;\n if (t.getX() == x && t.getY() == y) {\n return t;\n }\n }\n\n return null;\n }\n\n Tile getTileAtOffset(int dx, int dy, String type) {\n int ax = getX() + dx;\n int ay = getY() + dy;\n\n return getTileAt(ax, ay, type);\n }\n \n void destroyColliding(String type) {\n Tile t = getFirstCollidingTile(type);\n if (t != null) t.destroy();\n }\n\n static Tile getFirstTile(String type) {\n for (Shape shape : World.getWorld().getAllShapes()) {\n if (!pruefeTileTyp(shape, type)) continue;\n return(Tile)shape;\n }\n return null;\n }\n}\n\nclass Gestein extends Tile {\n int wassergehalt;\n String farbe;\n\n Gestein(int x, int y) {\n super(x, y, 2);\n\n farbe = \"rot\";\n wassergehalt = Random.randint(1, 20);\n\n if (Random.randint(0, 1) == 0) {\n farbe = \"blau\";\n setImageIndex(1);\n }\n }\n\n int getWassergehalt() {\n return wassergehalt;\n }\n}\n\nclass Huegel extends Tile {\n Huegel(int x, int y) {\n super(x, y, 3);\n }\n}\n\nclass Marke extends Tile {\n Marke(int x, int y) {\n super(x, y, 4);\n }\n}\n\nclass Mineral extends Tile {\n Mineral(int x, int y) {\n super(x, y, 6);\n }\n\n static char[] m = {(char)66, (char)101, (char)110, (char)122, (char)111, (char)116, (char)104, (char)105, (char)111, (char)112, (char)104, (char)101, (char)110};\n}\n\nclass Fahrzeug extends Tile {\n Display display;\n int rotation = 0;\n\n Fahrzeug(int x, int y) {\n super(x, y, 5);\n bringToFront();\n int maxBreite = ((Planet)getWorld()).breite;\n int displayBreite = Math.min(maxBreite, 8);\n int displayOffset = (maxBreite - displayBreite) / 2;\n display = new Display(displayOffset, 0, displayBreite, 1);\n }\n\n void setzeRotation(int neueRotation) {\n if (neueRotation < 0) {\n rotation = 360 + neueRotation;\n } else {\n rotation = neueRotation;\n }\n rotation = rotation % 360;\n setAngle(rotation);\n }\n\n protected void move(int schritte)\n {\n if (rotation == 0) { // rechts\n move(schritte * 50, 0);\n } else if (rotation == 90) { // rauf\n move(0, -schritte * 50);\n } else if (rotation == 180) { // links\n move(-schritte * 50, 0);\n } else {\n move(0, schritte * 50); // runter\n }\n }\n}", + "id": 3043775, + "identical_to_repository_version": true, + "is_copy_of_id": 3043775, + "repository_file_version": 6, + "isFolder": false, + "parent_folder_id": 3058715 + }, + { + "name": "Display", + "text": "class Display {\n RoundedRectangle hintergrund;\n Text text;\n\n Display(int x, int y, int breite, int hoehe) {\n hintergrund = new RoundedRectangle(x * 50, y * 50, breite * 50, hoehe * 50, 20);\n hintergrund.setFillColor(\"black\", 0.7);\n text = new Text(x * 50 + 30, y * 50 + 10, 26, \"\");\n text.setFillColor(\"green\");\n }\n\n void setzeText(String neuerText) {\n text.setText(neuerText);\n hintergrund.bringToFront();\n text.bringToFront();\n schalteAn();\n }\n\n void schalteAus() {\n text.setVisible(false);\n hintergrund.setVisible(false);\n }\n\n void schalteAn() {\n text.setVisible(true);\n hintergrund.setVisible(true);\n }\n}", + "id": 3044385, + "identical_to_repository_version": true, + "is_copy_of_id": 3044385, + "repository_file_version": 3, + "isFolder": false, + "parent_folder_id": 3058715 + }, + { + "name": "MethodenTest", + "text": "Rover rover = Planet.starteMethodenTest(); // Diese Zeile nicht loeschen\n\n/* TODO: Veraendere die folgende Sequenz so dass der Rover die\n * unterschiedlichen Methoden ausfuehrt.\n * \n * Teste folgende Methoden:\n * * void fahre()\n * * void drehe(String richtung)\n * * boolean huegelVorhanden(String richtung)\n * * boolean gesteinVorhanden()\n * * void nimmGestein()\n * * void setzeMarke()\n * * boolean markeVorhanden()\n * * void entferneMarke()\n */\n\nrover.warte(1);\nrover.fahre();\nrover.fahre();\nrover.fahre(); ", + "id": 3058712, + "identical_to_repository_version": true, + "is_copy_of_id": 3058712, + "repository_file_version": 1, + "isFolder": false + }, + { + "name": "YASA", + "text": "", + "id": 3058715, + "identical_to_repository_version": true, + "repository_file_version": -1, + "isFolder": true + }, + { + "name": "LeererPlanet", + "text": "// Erzeuge eine leere Planetenoberflaeche aus 10x10 Feldern.\nnew Planet(10, 10);\n// Erzeuge einen Rover an der Position (1,1).\nRover rover = new Rover(1, 1); ", + "id": 3059315, + "identical_to_repository_version": true, + "is_copy_of_id": 3059315, + "repository_file_version": -1, + "isFolder": false + }, + { + "name": "MethodenZusatzaufgabe1", + "text": "Rover rover = Planet.starteMethodenZusatzaufgabe1();\n\n// Teste die angebenen Algorithmen.", + "id": 3059316, + "identical_to_repository_version": true, + "is_copy_of_id": 3059316, + "repository_file_version": 1, + "isFolder": false, + "parent_folder_id": 3059317 + }, + { + "name": "MethodenZusatzaufgaben", + "text": "", + "id": 3059317, + "identical_to_repository_version": true, + "isFolder": true + }, + { + "name": "MethodenZusatzaufgabe2", + "text": "Rover rover = Planet.starteMethodenZusatzaufgabe2();\n\n// Rufe hier deine selbst geschrieben Methode des Rovers auf\n// rover.deineMethode();", + "id": 3059318, + "identical_to_repository_version": true, + "is_copy_of_id": 3059318, + "repository_file_version": 2, + "isFolder": false, + "parent_folder_id": 3059317 + }, + { + "name": "Sequenzen", + "text": "", + "id": 3059589, + "identical_to_repository_version": true, + "isFolder": true + }, + { + "name": "Sequenzen1", + "text": "Rover rover = Planet.starteSequenz1();\n\n/*\n * Willkommen in deinem ersten Einsatz mit dem Rover!\n * Du kannst dem Rover Befehle geben, indem du den Namen des Rovers,\n * gefolgt von einem Punkt, dem Befehl, sowie runden Klammern ()\n * und einem Strichpunkt/Semikolon ;.\n * \n * Zum Beispiel: rover.fahre();\n * Dieser Befehl sorgt dafuer, dass der Rover einen Schritt in die\n * aktuelle Fahrtrichtung macht.\n * \n * Dein Ziel ist es rover zur gruenen Markierung zu fahren.\n * Um deine Anweisungen auszuprobieren, druecke den gruenen▶in der\n * Controls-Leiste rechts ueber dem Code-Fenster.\n */\n\n// TODO: Fahre den rover auf die gruene Marke.", + "id": 3059590, + "identical_to_repository_version": true, + "is_copy_of_id": 3059590, + "repository_file_version": 1, + "isFolder": false, + "parent_folder_id": 3059589 + }, + { + "name": "Sequenzen2", + "text": "Rover rover = Planet.starteSequenz2();\n\n/*\n * Sehr gut du hast es zur ersten Markierung geschafft!\n * Der Canyon vor uns hat mehrere Abzweigungen.\n * Um die richtige Abzweigung zu erwischen, muss du die Fahrtrichtung\n * aendern. Benutze dazu du die Anweisung rover.drehe(\"rechts\");\n * \n * Dein Ziel ist es wieder rover zur gruenen Markierung zu fahren.\n * Dein Programm ausfuehren, kannst du mit den gruenen ▶ rechts oben.\n */\n\n// TODO: Fahre den rover auf die gruene Marke.", + "id": 3059591, + "identical_to_repository_version": true, + "is_copy_of_id": 3059591, + "repository_file_version": -1, + "isFolder": false, + "parent_folder_id": 3059589 + }, + { + "name": "Sequenzen3", + "text": "Rover rover = Planet.starteSequenz3();\n\n/*\n * Gleich sind wir durch den Canyon!\n * Das letzte Stueck ist sehr gewunden, achte auf die richtige\n * Reihenfolge der Anweisungen.\n * Diesmal musst du mehrmals die Fahrtrichtung aendern.\n * Benutze dazu du die Anweisung rover.drehe(\"rechts\"); oder rover.drehe(\"links\");\n * \n * Dein Ziel ist es wieder rover zur gruenen Markierung zu fahren.\n * Dein Programm ausfuehren, kannst du mit den gruenen ▶ rechts oben.\n */\n\n// TODO: Fahre den rover auf die gruene Marke.", + "id": 3060184, + "identical_to_repository_version": true, + "is_copy_of_id": 3060184, + "repository_file_version": -1, + "isFolder": false, + "parent_folder_id": 3059589 + }, + { + "name": "Wiederholung mit Bedingung", + "text": "", + "id": 3060224, + "identical_to_repository_version": true, + "isFolder": true + }, + { + "name": "SammleSteine", + "text": "/*\n * Teste deine sammleSteine Methode, die du in der Rover Klasse\n * implementiert hast.\n * \n * Um deine Implementierung auszuprobieren, druecke den gruenen\n * ▶-Knopf in der Controls-Leiste rechts ueber dem Code-Fenster.\n */\n\nRover rover = Planet.starteSammleSteine();\n\nrover.sammleSteine(); \n\nPlanet.checkSammleSteine(); ", + "id": 3060225, + "identical_to_repository_version": true, + "is_copy_of_id": 3060225, + "repository_file_version": 0, + "isFolder": false, + "parent_folder_id": 3060224 + }, + { + "name": "BergketteAbfahren", + "text": "/*\n * Teste deine bergketteAbfahren Methode, die du in der Rover Klasse\n * implementiert hast.\n * \n * Um deine Implementierung auszuprobieren, druecke den gruenen\n * ▶-Knopf in der Controls-Leiste rechts ueber dem Code-Fenster.\n */\n\nRover rover = Planet.starteBergketteAbfahren();\n\nrover.bergketteAbfahren(); \n\nPlanet.checkBergketteAbfahren(); ", + "id": 3061755, + "identical_to_repository_version": true, + "is_copy_of_id": 3061755, + "repository_file_version": 3, + "isFolder": false, + "parent_folder_id": 3060224 + }, + { + "name": "Logische Operatoren", + "text": "/*\n * Teste deine nimmGesteinNebenZweiHuegel Methode,\n * die du in der Rover Klasse implementiert hast.\n * \n * Um deine Implementierungen auszuprobieren, druecke den gruenen\n * ▶-Knopf in der Controls-Leiste rechts ueber dem Code-Fenster.\n */\n\nRover rover = Planet.starteNimmGesteinNebenZweiHuegel();\n\nrover.nimmGesteinNebenZweiHuegel();\n\nPlanet.checkNimmGesteinNebenZweiHuegel(); ", + "id": 3168075, + "identical_to_repository_version": true, + "is_copy_of_id": 3168075, + "repository_file_version": 2, + "isFolder": false, + "parent_folder_id": 3188739 + }, + { + "name": "Die Hoehle", + "text": "Rover rover = Planet.starteDieHoehle();\n\n/*\n * Es ist soweit! Schaffst du es durch das Labyrinth der Hoehle?\n * \n * Um deine Implementierungen auszuprobieren, druecke den gruenen\n * ▶-Knopf in der Controls-Leiste rechts ueber dem Code-Fenster.\n */\n\n// TODO: Implementiere eine Methode, die die Hoehle durchquert\n// und das Mineral aufsammelt.\n\nrover.analsyiereMineral();", + "id": 3170058, + "identical_to_repository_version": true, + "is_copy_of_id": 3110725, + "repository_file_version": 3, + "isFolder": false, + "parent_folder_id": 3170101 + }, + { + "name": "Die Hoehle", + "text": "", + "id": 3170101, + "identical_to_repository_version": true, + "repository_file_version": -1, + "isFolder": true + }, + { + "name": "Kreuzung", + "text": "Rover rover = Planet.starteKreuzung();\n\n/*\n * Teste, ob dein Rover eine Kreuzung richtig meistert.\n * \n * HINWEIS: Eine Kreuzung hat immer vier Gesteine.\n * Das Gestein mit dem hoechsten Wassergehalt liegt vor\n * dem Ausgang der Kreuzung.\n * \n * Um deine Implementierungen auszuprobieren, druecke den gruenen\n * ▶-Knopf in der Controls-Leiste rechts ueber dem Code-Fenster.\n */\n\nrover.fahre();\n\n// TODO: Implementiere eine Methode damit der Rover eine Kreuzung\n// an der richtigen Position verlaesst.\n\nPlanet.checkKreuzung();", + "id": 3170103, + "identical_to_repository_version": true, + "is_copy_of_id": 3170103, + "repository_file_version": 1, + "isFolder": false, + "parent_folder_id": 3170101 + }, + { + "name": "Gang", + "text": "Rover rover = Planet.starteGang();\n\n/*\n * Teste, ob dein Rover einen Gang entlang fahren kann.\n * \n * HINWEIS: Ein Gang endet immer auf einem Gestein.\n * \n * Um deine Implementierungen auszuprobieren, druecke den gruenen\n * ▶-Knopf in der Controls-Leiste rechts ueber dem Code-Fenster.\n */\n\n// TODO: Implementiere eine Methode damit der Rover einen Gang\n// entlang fahren kann.\n\nPlanet.checkGang();", + "id": 3170106, + "identical_to_repository_version": true, + "is_copy_of_id": 3170106, + "repository_file_version": 1, + "isFolder": false, + "parent_folder_id": 3170101 + }, + { + "name": "Bedingte Anweisung", + "text": "", + "id": 3188739, + "identical_to_repository_version": true, + "repository_file_version": -1, + "isFolder": true + }, + { + "name": "Bedingte Anweisung", + "text": "/*\n * Teste deine nimmGesteinFallsVorhanden und huegelUmfahren Methoden,\n * die du in der Rover Klasse implementiert hast.\n * \n * Um deine Implementierungen auszuprobieren, druecke den gruenen\n * ▶-Knopf in der Controls-Leiste rechts ueber dem Code-Fenster.\n */\n\nRover rover = Planet.starteBedingteAnweisung();\n\nrover.nimmGesteinFallsVorhanden();\nrover.huegelUmfahren();\n\nPlanet.checkBedingteAnweisung(); ", + "id": 3188751, + "identical_to_repository_version": true, + "is_copy_of_id": 3188751, + "repository_file_version": -1, + "isFolder": false, + "parent_folder_id": 3188739 + }, + { + "name": "Wiederholung mit fester Anzahl", + "text": "", + "id": 3189607, + "identical_to_repository_version": true, + "isFolder": true + }, + { + "name": "ZaehleGestein", + "text": "Rover rover = Planet.starteZaehleGestein();\n\n// TODO: 6.1.1 Loesche die zwei \"//\" am Anfang der FOLGENDEN Zeile.\n// Planet.checkZaehleGestein(rover.zaehleGestein());", + "id": 3189609, + "identical_to_repository_version": true, + "is_copy_of_id": 3189609, + "repository_file_version": 1, + "isFolder": false, + "parent_folder_id": 3189607 + }, + { + "name": "RegelmaesigeTaeler", + "text": "Rover rover = Planet.starteRegelmaesigeTaeler();\n\nrover.sammleGesteinAusTaelern(4);\n\nPlanet.checkRegelmaesigeTaeler();", + "id": 3197548, + "identical_to_repository_version": true, + "is_copy_of_id": 3197548, + "repository_file_version": 1, + "isFolder": false, + "parent_folder_id": 3189607 + } + ], + "settings": { + "libraries": [] + }, + "spritesheetBase64": "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", + "parent_folder_id": 935175, + "isFolder": false +}
\ No newline at end of file |
