Unterschiede
Hier werden die Unterschiede zwischen zwei Versionen der Seite angezeigt.
Nächste Überarbeitung | Vorherige Überarbeitung | ||
faecher:informatik:mittelstufe:breakout:breakout05:start [04.12.2019 12:58] – angelegt - Externe Bearbeitung 127.0.0.1 | faecher:informatik:mittelstufe:breakout:breakout05:start [12.10.2023 19:25] (aktuell) – [Reflexion] Frank Schiebel | ||
---|---|---|---|
Zeile 2: | Zeile 2: | ||
+ | ===== Der Spielgegenstand Block ===== | ||
+ | Die Blöcke tun nichts. Lösche allen überflüssigen Code aus der Klasse Block. | ||
+ | |||
+ | ===== Der Spielgegenstand Paddel ===== | ||
+ | |||
+ | Das Paddel soll mit den Pfeiltasten <- und -> bis zum linken und rechten Spielfeldrand bewegt werden können. | ||
+ | |||
+ | Finde in der Dokumentation zu den Klassenbibliotheken von Greenfoot heraus, welche Methoden es in der Klasse Greenfoot zur Tastensteuerung gibt. | ||
+ | |||
+ | Ergänze nun den Quellcode in der Methode '' | ||
+ | |||
+ | < | ||
+ | falls Links-Taste gedrückt | ||
+ | setzeAnPosition(x-Position - 1, y-Position); | ||
+ | falls Rechts-Taste gedrückt | ||
+ | setzeAnPosition(x-Position + 1, y-Position); | ||
+ | </ | ||
+ | |||
+ | Teste, ob dein Paddel das Gewünschte leistet (vorher ist die Run-Schaltfläche zu drücken). Der Geschwindigkeitsregler sollte dabei auf etwa 50% stehen. | ||
+ | Wenn sich dein Paddel zu langsam bewegt, kannst du die x-Position anstatt um 1 Pixel z.B. um 2, 3, oder vielleicht 10 Pixel ändern. Finde einen geeigneten Wert. | ||
+ | |||
+ | **Für Experten:** Du wirst bemerkt haben, dass sich dein Paddel etwas über die Spielfeldgrenzen links und rechts hinaus bewegen lässt. Sorge dafür, dass sich das Paddel nur bis an die Spielfeldränder bewegen lässt. | ||
+ | |||
+ | ===== Startzustand ===== | ||
+ | |||
+ | Es ist umständlich, | ||
+ | Füge in deine Welt das Paddle, einige Blöcke und einen Ball ein. Klicke dann mit der rechten Maustaste auf die Welt und wähle "Save the world" | ||
+ | |||
+ | ===== Reflexion ===== | ||
+ | |||
+ | Der Ball soll nun am Paddel reflektiert werden, falls er es trifft. Wenn ein Actor-Objekt auf ein zweites Actor-Objekt trifft, erhält man das zweite Actor-Objekt mit der Actor-Methode '' | ||
+ | |||
+ | Falls diese beiden Objekte sich nicht überlappen, | ||
+ | |||
+ | Der zugehörige Quelltextschnipsel, | ||
+ | <code java> | ||
+ | if (getOneIntersectingObject(Paddel.class) != null) { | ||
+ | ... | ||
+ | } | ||
+ | </ | ||
+ | |||
+ | Dann soll sich die Richtung des Balls so ändern, als wenn er am unteren Spielfeldrand reflektiert worden wäre. | ||
+ | |||
+ | Der Parameter '' | ||
+ | |||
+ | |||
+ | Erstelle eine neue Methode '' | ||
+ | |||
+ | Nun fehlt nur noch die Reflexion des Balls an den Blöcken und das Entfernen des getroffenen Blocks. Erstelle dazu eine Methode '' | ||
+ | <code java> | ||
+ | private void reflektiereBlock() { | ||
+ | Actor block = getOneIntersectingObject(Block.class); | ||
+ | if (block != null) { | ||
+ | dy = -dy; | ||
+ | getWorld().removeObject(block); | ||
+ | } | ||
+ | } | ||
+ | </ | ||
+ | |||
+ | Im Unterschied zu '' | ||
+ | |||
+ | Mit dem Methodenaufruf '' | ||