faecher:informatik:mittelstufe:robot:arbeitsauftraege:ab9:start

Unterschiede

Hier werden die Unterschiede zwischen zwei Versionen der Seite angezeigt.

Link zu der Vergleichsansicht

Beide Seiten, vorherige Überarbeitung Vorherige Überarbeitung
Nächste Überarbeitung
Vorherige Überarbeitung
faecher:informatik:mittelstufe:robot:arbeitsauftraege:ab9:start [30.09.2021 10:10] – [Aufgabe 9: Ablegen] sbelfaecher:informatik:mittelstufe:robot:arbeitsauftraege:ab9:start [19.10.2023 08:17] (aktuell) – [Einsatz 9] Frank Schiebel
Zeile 1: Zeile 1:
- 
 ====== Auftrag AB9: Methoden mit Parametern ====== ====== Auftrag AB9: Methoden mit Parametern ======
  
  
-Ein Platz für ein neues Endlager ist gefunden! In einem Bergwerk soll dies geschaffen werden. Sprengarbeiten müssen vorgenommen und Brennstäbe eingelagert werden. Eine Aufgabe wie gemacht für unsere Roboter … Ein Einsatzleiter wurde bestimmt, die anstehenden heiklen Arbeiten zu koordinieren.+Ein Platz für ein neues Endlager ist gefunden! In einem Bergwerk soll dies geschaffen werden. Sprengarbeiten müssen vorgenommen und Brennstäbe eingelagert werden. Eine Aufgabe wie gemacht für unsere Roboter … Eine Einsatzleiterin wurde bestimmt, die anstehenden heiklen Arbeiten zu koordinieren.
  
 **Ziel:** Du kannst Probleme mit Hilfe von flexibel einsetzbaren Methoden lösen. Diese Metho­den enthalten Parameter, mit denen sich das Verhalten der Roboter flexibel steuern lässt. **Ziel:** Du kannst Probleme mit Hilfe von flexibel einsetzbaren Methoden lösen. Diese Metho­den enthalten Parameter, mit denen sich das Verhalten der Roboter flexibel steuern lässt.
  
-Bei manchen Einsätzen müssen Roboter situationsgerecht agieren können. So legt beispielsweise  ein Roboter über den Methodenaufruf ''ablegen(...)'' eine Schraube, ein anderer einen Brennstab ab. Welchen Gegenstand der einzelne Roboter ablegen soll, bekommt er als sogenannten **Parameter** innerhalb der **Parameterklammer** ''( )'' mitgeteilt. So bewirkt ''ablegen("Schraube")'' etwas anderes als ''ablegen("Brennstab")''. Das kennst du schon seit AB3 Aufgabe 1. Als Parameter wird der Methode ''ablegen(...)'' ein ''String'', also ein Text mitgegeben. Dieser Text muss, wie du schon gelernt hast, in Java immer in Anführungszeichen geschrieben werden.+Bei manchen Einsätzen müssen Roboter situationsgerecht agieren können. So legt beispielsweise ein Roboter über den Methodenaufruf ''ablegen(...)'' eine Schraube, ein anderer einen Brennstab ab. Welchen Gegenstand der einzelne Roboter ablegen soll, bekommt er als sogenannten **Parameter** innerhalb der **Parameterklammer** ''( )'' mitgeteilt. So bewirkt ''ablegen("Schraube")'' etwas anderes als ''ablegen("Brennstab")''. Das kennst du schon seit AB3 Aufgabe 1.  
 + 
 +Als Parameter wird der Methode ''ablegen(...)'' ein ''String'', also ein Text mitgegeben. Dieser Text muss, wie du schon gelernt hast, in Java immer in Anführungszeichen geschrieben werden.
  
 Als weitere Methoden mit Parametern hast du beispielsweise schon diese aufgerufen: Als weitere Methoden mit Parametern hast du beispielsweise schon diese aufgerufen:
Zeile 15: Zeile 16:
   * ''istAufGegenstand("Brennstab")''   * ''istAufGegenstand("Brennstab")''
  
-Um den Robotern diese Variabilität beizubringen, muss der Kopf der Methoden­be­schreibung (oder auch Signatur der Methode genannt) wie folgt lauten:+Um den Robotern diese Variabilität beizubringen, muss der Kopf der Methoden­be­schreibung (oder auch //Signatur// der Methode genannt) wie folgt lauten:
  
 <code java> <code java>
Zeile 48: Zeile 49:
 ===== Aufgaben: ===== ===== Aufgaben: =====
  
-==== Aufgabe 1 ====+=== Aufgabe 1 ===
  
  
Zeile 60: Zeile 61:
  
  
- +----  
-==== Aufgabe 2 ====+=== Aufgabe 2 ===
  
 Du bist jetzt in Greenfoot im Level „AB9 – Methoden mit Parametern“. Alle Roboter haben (in der Klasse Roboter) schon einige Methoden mit Parametern implementiert. Du bist jetzt in Greenfoot im Level „AB9 – Methoden mit Parametern“. Alle Roboter haben (in der Klasse Roboter) schon einige Methoden mit Parametern implementiert.
Zeile 76: Zeile 77:
 gerufen werden. Dafür gibt es schon die Methode ''holeAufzug()''. gerufen werden. Dafür gibt es schon die Methode ''holeAufzug()''.
  
 +{{ .:ab9ks.png?300|}}
  
 +---- 
  
 +=== Aufgabe 3 ===
  
-{{ .:ab9ks.png?300|}} 
-==== Aufgabe 3 ==== 
  
 +**Drehe Roboter:** Vervollständige die Methode 
  
-**Drehe Roboter:** Vervollständige die Methode <code java>public void +<code java> 
-dreheRoboter(int richtung)</code>die den Roboter in die angegebene+public void dreheRoboter(int richtung) { ... } 
 +</code> 
 + 
 +die den Roboter in die angegebene
 Richtung dreht (0=Blick nach rechts, 90=Blick nach unten, …). Richtung dreht (0=Blick nach rechts, 90=Blick nach unten, …).
 Mit ''getRotation()'' kann man die aktuelle Richtung erfragen. Mit ''getRotation()'' kann man die aktuelle Richtung erfragen.
-Tipp1: Drehe den Roboter so lange, bis ''richtung'' erreicht ist. 
  
-Wie du schon richtig erkannt hast, schauen wir nun nicht mehr auf die+Tipp: Drehe den Roboter so lange, bis ''richtung'' erreicht ist. 
 + 
 +Wie du sicherlich schon erkannt hast, schauen wir nun nicht mehr auf die
 Roboterwelt von oben, sondern wir betrachten einen Querschnitt eines Roboterwelt von oben, sondern wir betrachten einen Querschnitt eines
 Bergwerks. Hier spielt – wie im wirklichen Leben – die **Schwerkraft** Bergwerks. Hier spielt – wie im wirklichen Leben – die **Schwerkraft**
 eine wichtige Rolle. Pass auf, dass deine Roboter nicht in den eine wichtige Rolle. Pass auf, dass deine Roboter nicht in den
 Aufzugschacht fallen. Aufzugschacht fallen.
-==== Aufgabe 4 ==== 
  
-**Laufe zu:** Vervollständige die Methode <code java>public void laufeZuXPos(int x)</code>die den Roboter zu+----  
 + 
 +=== Aufgabe 4 === 
 + 
 +**Laufe zu:** Vervollständige die Methode  
 + 
 +<code java> 
 +public void laufeZuXPos(int x) 
 +</code> 
 + 
 +die den Roboter zu
 der angegebenen x-Koordinate laufen lässt. Die y-Position kann sich auch aufgrund der Schwerkraft verändern. der angegebenen x-Koordinate laufen lässt. Die y-Position kann sich auch aufgrund der Schwerkraft verändern.
  
Zeile 104: Zeile 120:
 Bisher muss ein Roboter nach unten bzw. nach oben schauen und einsVor gehen, damit der Bisher muss ein Roboter nach unten bzw. nach oben schauen und einsVor gehen, damit der
 Aufzug ein Stockwerk nach unten bzw. nach oben fährt. Aufzug ein Stockwerk nach unten bzw. nach oben fährt.
-==== Aufgabe 5 ==== + 
-**Fahre Aufzug:** Vervollständige die Methode <code java>public void fahreAufzug(int stockwerke, + 
-boolean abwaerts)</code>die einen Roboter, der auf einem Aufzug steht +----  
-(''istAufGegenstand("Aufzug")''?)die angegebene Anzahl von Stockwerken (ein Stockwerk+=== Aufgabe 5 === 
 +**Fahre Aufzug:** Vervollständige die Methode  
 + 
 +<code java> 
 +public void fahreAufzug(int stockwerke, boolean abwaerts) 
 +</code> 
 + 
 +die einen Roboter, der auf einem Aufzug steht 
 +(''istAufGegenstand("Aufzug")'') die angegebene Anzahl von Stockwerken (ein Stockwerk
 entspricht einem Schritt) abwärts oder aufwärts fahren lässt. Diese Methode soll entspricht einem Schritt) abwärts oder aufwärts fahren lässt. Diese Methode soll
 funktionieren, egal in welche Richtung der Roboter am Anfang schaut. Steht der Roboter funktionieren, egal in welche Richtung der Roboter am Anfang schaut. Steht der Roboter
Zeile 114: Zeile 138:
 //Bedenke:// Die Roboter können in leere Aufzugsschächte stürzen, da man in diesem Level //Bedenke:// Die Roboter können in leere Aufzugsschächte stürzen, da man in diesem Level
 nicht von oben sondern von vorne auf die Welt schaut. nicht von oben sondern von vorne auf die Welt schaut.
-==== Aufgabe 6 ====+ 
 +----  
 +=== Aufgabe 6 ===
  
 Implementiere die Methode  Implementiere die Methode 
-<code java>public void fahreInsStockwerk(int stockwerk)</code>+ 
 +<code java>  
 +public void fahreInsStockwerk(int stockwerk) 
 +</code> 
 Dabei werden die Stockwerke vom Boden ab abwärts gezählt (blaue Koordinate). Dabei werden die Stockwerke vom Boden ab abwärts gezählt (blaue Koordinate).
-==== Aufgabe 7 ====+ 
 +----  
 + 
 +=== Aufgabe 7 ===
 **Bombe sichern:** Implementiere die Methode  **Bombe sichern:** Implementiere die Methode 
  
Zeile 127: Zeile 160:
 laufen lässt und dort eine Bombe einsammelt. Danach soll er zum Aufzug zurück kehren. laufen lässt und dort eine Bombe einsammelt. Danach soll er zum Aufzug zurück kehren.
  
- +----  
-==== Aufgabe 8 ====+=== Aufgabe 8 ===
  
  
Zeile 138: Zeile 171:
 zündet. zündet.
  
-==== Aufgabe 9 ====+=== Aufgabe 9 ===
  
 {{ .:legen.png|}} {{ .:legen.png|}}
Zeile 144: Zeile 177:
 ausreichend dabei hat) belegen. Implementiere dazu eine ausreichend dabei hat) belegen. Implementiere dazu eine
 Methode, die als Parameter die Breite des Raumes bekommt. Methode, die als Parameter die Breite des Raumes bekommt.
 +
 Die Schwerkraft bewirkt, dass ein abgelegter Brennstab nach Die Schwerkraft bewirkt, dass ein abgelegter Brennstab nach
 unten rutscht. D.h. legt man einen Brennstab auf einen Felsen, unten rutscht. D.h. legt man einen Brennstab auf einen Felsen,
Zeile 149: Zeile 183:
 da liegt. Beachte, dass der Roboter sich nicht mehr nach oben da liegt. Beachte, dass der Roboter sich nicht mehr nach oben
 bewegen kann. bewegen kann.
-==== Aufgabe 10: Anweisung 2 ==== 
  
-Damit der EinsatzLeiter fit ist für den Einsatz 9, musst du ihm noch beibringen, wie er mit einem Methodenaufruf einen Bereich sprengen lässt und dieser anschließend mit Brennstäben belegt wird.+=== Die Einsatzleiterin ===
  
-Die Methode soll den ''sprengRoboter2'' nutzenum den Schacht (2|4) oder (3|9) zu sprengen. Der ''legeRoboter'' soll anschließend den gesprengten Bereich mit Brennstäben belegen. Für die Kontaktplatten und Batterien gilt das gleiche wie in Aufgabe 8. Benenne die Methode sinnvoll und teste sie.+Nun kommt die **Einsatzleiterin** ins Spiel. Das ist die kleine Figur oben rechts. Die Einsatzleiterin kennt die vier Roboter. Der erste ganz links heißt ''aufzugRoboter'', der rechts daneben ''sprengRoboter1'', dann ''sprengRoboter2'' und unten steht der ''legeRoboter''.
  
 +{{ .:einsatzleiter.png |}}
  
 +Im Folgenden muss der Einsatzleiter jeweils Methoden bei einem der vier Roboter aufrufen. Im
 +Quelltext schreibt man dazu beispielsweise folgenden Befehl:
 +
 +<code java>
 +sprengRoboter2.fahreAufzug(2,true);
 +</code>
 +
 +Man schreibt also den Namen des Roboters, gefolgt von einem Punkt. Danach kommt der Name
 +der Methode und die dazugehörigen Parameter. (Merkhilfe für die Reihenfolge: Wer macht was?)
 +
 +Drückt man die Tastenkombination STRG+Leertaste nach der Eingabe des Punktes, so bekommt
 +man eine Liste aller Methoden, die man bei diesem Roboter aufrufen kann.
 +
 +=== Aufgabe 10 ===
 +
 +
 +Öffne die Klasse ''EinsatzLeiter'' und vervollständige die Methode 
 +
 +<code java>
 +public void holeBombeUndSprenge (int xBombe, int yBombe, int xPos, int yPos)
 +</code>
 +
 +Dabei sind ''(xBombe|yBombe)'' die Koordinaten, wo sich eine Bombe befindet und ''(xPos|yPos)'' die Koordinaten der Sprengposition. Der Einsatzleiter soll dazu dem ''aufzugRoboter'' und dem ''sprengRoboter1'' die passenden Befehle geben! (Wie das geht, siehst du im Quelltextbeispiel).
 ===== Einsatz 9 ===== ===== Einsatz 9 =====
 +<callout type="danger" icon="false">
 +Im Folgenden soll deine Einsatzleiterin den Einsatz im Endlager koordinieren. Die AB9-Roboter
 +haben alles gelernt, was sie für diesen Einsatz benötigen:
 +
 +
  
 +Sie können in einem Stollen Sprengarbeiten vornehmen und einen freigewordenen Bereich mit
 +Brennstäben belegen. Aber Achtung, die Ressourcen sind knapp – sowohl die Anzahl der
 +Sprengsätze, als auch die Energie der Roboter. Die Arbeit unter Tage ist nicht nur für Menschen
 +anstrengend…
  
-Nun übernehmen Sie die Verantwortung – Herr Einsatzleiter! +Deine Aufgabe ist es nun, den Einsatzleiter so zu programmieren, dass sie den Robotern klare 
-Im Folgenden soll dein Einsatzleiter den Einsatz im Endlager koordinierenDie AB9-Roboter haben alles gelernt, was sie für diesen Einsatz benötigen:+Anweisungen gibt, um die drei verschütteten Stollen zu erweitern. Der ''legeRoboter'' soll dann 
 +seine Brennstäbe wie unten abgebildet in den frei gewordenen Hohlräumen ablegenHoffentlich 
 +geht ihm dabei nicht die Puste aus. Alle Roboter müssen sich am Ende wieder im oberen 
 +Eingangsstollen befinden.
  
-{{ .:ab93.png|}} 
  
-Sie können in einem Schacht Sprengarbeiten vornehmen und einen freigewordenen Bereich mit Brennstäben belegen. Aber Achtung, die Ressourcen sind knapp – sowohl die Anzahl der Sprengsätze, als auch die Energie der Roboter. Die Arbeit unter Tage ist nicht nur für Menschen anstrengend...+{{  .:ab93.png  |}}
  
-Deine Aufgabe ist es nun dem Einsatzleiter klare Anweisungen zu geben, so dass die drei Sprengroboter (die jeweils eine Bombe mit sich tragen), die drei Schächte mit den Koordinaten (2|5), (6|7) und (11|8) sprengen und danach auf den Rücktransport nach oben warten, indem sie auf ein Portal stehen. Der legeRoboter soll anschließend all seine Brennstäbe (Anzahl variiert) in den frei gewordenen Schachtplätzen ablegen. Hoffentlich geht ihm dabei nicht die Puste aus. Auch der legeRoboter soll nach beendeter Arbeit auf seinen Rücktransport warten.+++++ Tipp | Geeignete Stelllen für Sprengungen befinden sich an den markierten Stellen: 
 +{{ :faecher:informatik:mittelstufe:robot:arbeitsauftraege:ab9:auswahl_004-tipp.png?600 |}} 
 +++++
  
 +</callout>
 ---- ----
    
-[[..:ab8:start|<<< Zurück zu Level 8]] **Level 9** [[..:ab10:start|Weiter zu Level 10 >>>]]+<btn>[[..:ab8:start|<<< Zurück zu Level 8]]</btn> **Level 9** <btn>[[..:ab10:start|Weiter zu Level 10 >>>]]</btn>
  
 ---- ----
 Alle Arbeitsaufträge in diesem Namensraum basieren auf den Materialien von ''Schaller/Zechnall'' zur Informatikfortbildung Baden-Württemberg 2016 und stehen unter einer [[https://creativecommons.org/licenses/by-nc-sa/2.0/de/|CC-BY-SA-NC Lizenz]]. Alle Arbeitsaufträge in diesem Namensraum basieren auf den Materialien von ''Schaller/Zechnall'' zur Informatikfortbildung Baden-Württemberg 2016 und stehen unter einer [[https://creativecommons.org/licenses/by-nc-sa/2.0/de/|CC-BY-SA-NC Lizenz]].
  • faecher/informatik/mittelstufe/robot/arbeitsauftraege/ab9/start.1632996621.txt.gz
  • Zuletzt geändert: 30.09.2021 10:10
  • von sbel