From 54856bd160ab32eaf250e5a1804805d151b91f78 Mon Sep 17 00:00:00 2001 From: Florian Fischer Date: Tue, 30 Jun 2026 09:39:49 +0200 Subject: planet: update Online-IDE code --- Info/25_26/05/12/11a_SP/test/_test.tex | 25 ------------------------- Info/25_26/05/12/11a_SP/test/_test_NS.tex | 25 +++++++++++++++++++++++++ Info/9/3/Planet/Planet.json | 16 ++++++++-------- 3 files changed, 33 insertions(+), 33 deletions(-) delete mode 100644 Info/25_26/05/12/11a_SP/test/_test.tex create mode 100644 Info/25_26/05/12/11a_SP/test/_test_NS.tex diff --git a/Info/25_26/05/12/11a_SP/test/_test.tex b/Info/25_26/05/12/11a_SP/test/_test.tex deleted file mode 100644 index 3c0c27b4..00000000 --- a/Info/25_26/05/12/11a_SP/test/_test.tex +++ /dev/null @@ -1,25 +0,0 @@ -\Datum{09.06.2026} -\TestNummer{Nachschrift 2} -\TestArt{Kurzarbeit} -\Klasse{11a\_SG} -\Fach{Informatik} - -\begin{document} -\Intro -\input{Aufgaben/statuscode_cookie.tex} -\begin{Bearbeitung} -\kariert[0.5cm]{24} -\end{Bearbeitung} -\input{Aufgaben/ki_kategorien.tex} -\begin{Bearbeitung} -\kariert[0.5cm]{20} -\end{Bearbeitung} -\input{Aufgaben/entscheidungsbaum_erstellen.tex} -\begin{Bearbeitung} -\kariert[0.5cm]{25} -\end{Bearbeitung} -\inputAufgVersion{1}{Aufgaben/ki_aussagen.tex} -\begin{Bearbeitung} -\kariert[0.5cm]{30} -\end{Bearbeitung} -\end{document} diff --git a/Info/25_26/05/12/11a_SP/test/_test_NS.tex b/Info/25_26/05/12/11a_SP/test/_test_NS.tex new file mode 100644 index 00000000..3c0c27b4 --- /dev/null +++ b/Info/25_26/05/12/11a_SP/test/_test_NS.tex @@ -0,0 +1,25 @@ +\Datum{09.06.2026} +\TestNummer{Nachschrift 2} +\TestArt{Kurzarbeit} +\Klasse{11a\_SG} +\Fach{Informatik} + +\begin{document} +\Intro +\input{Aufgaben/statuscode_cookie.tex} +\begin{Bearbeitung} +\kariert[0.5cm]{24} +\end{Bearbeitung} +\input{Aufgaben/ki_kategorien.tex} +\begin{Bearbeitung} +\kariert[0.5cm]{20} +\end{Bearbeitung} +\input{Aufgaben/entscheidungsbaum_erstellen.tex} +\begin{Bearbeitung} +\kariert[0.5cm]{25} +\end{Bearbeitung} +\inputAufgVersion{1}{Aufgaben/ki_aussagen.tex} +\begin{Bearbeitung} +\kariert[0.5cm]{30} +\end{Bearbeitung} +\end{document} diff --git a/Info/9/3/Planet/Planet.json b/Info/9/3/Planet/Planet.json index cb6e9c3b..4dc59c8b 100644 --- a/Info/9/3/Planet/Planet.json +++ b/Info/9/3/Planet/Planet.json @@ -4,11 +4,11 @@ "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}", + "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 void checkSequenz1() {\n report(Tile.getTileAt(5, 2, \"Rover\") != null, \"Rover Position\");\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 void checkSequenz2() {\n report(Tile.getTileAt(3, 4, \"Rover\") != null, \"Rover Position\");\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 void checkSequenz3() {\n report(Tile.getTileAt(5, 4, \"Rover\") != null, \"Rover Position\");\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 + 1; 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, + "repository_file_version": 9, "isFolder": false, "parent_folder_id": 3058715 }, @@ -103,31 +103,31 @@ }, { "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.", + "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.\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n// Dein Code sollte ueber dieser Zeile stehen.\nPlanet.checkSequenz1(); ", "id": 3059590, "identical_to_repository_version": true, "is_copy_of_id": 3059590, - "repository_file_version": 1, + "repository_file_version": 2, "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.", + "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.\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n// Dein Code sollte ueber dieser Zeile stehen.\nPlanet.checkSequenz2(); ", "id": 3059591, "identical_to_repository_version": true, "is_copy_of_id": 3059591, - "repository_file_version": -1, + "repository_file_version": 0, "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.", + "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.\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n// Dein Code sollte ueber dieser Zeile stehen.\nPlanet.checkSequenz3(); ", "id": 3060184, "identical_to_repository_version": true, "is_copy_of_id": 3060184, - "repository_file_version": -1, + "repository_file_version": 0, "isFolder": false, "parent_folder_id": 3059589 }, -- cgit v1.2.3