1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
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 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 void fillPlanet(Planet p) {\n for (int x = 0; x < p.breite; x++) {\n for (int y = 0; y < p.hoehe; y++) {\n boolean found = false;\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 if (!found) {\n new Huegel(x, y);\n }\n }\n }\n }\n\n static Rover starteGang() {\n Planet p = new Planet(9, 9);\n \n // Start Koordinaten des Ganges\n int x = 1;\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 // Rover STart-Position\n new Marke(x - 1, y);\n // Erster Schritt, um einen nicht komplett umschlossenen Gang am Rand zu verhindern\n new Marke(x, y);\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 - 2);\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), 6 - 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 fillPlanet(p);\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 Planet p = new Planet(16, 9);\n \n // Rover Startposition\n new Marke(0, 4);\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 - 2);\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), 6 - 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 fillPlanet(p);\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": 10,
"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.\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": 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.\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": 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.\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": 0,
"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
}
|