i

Übungen

Erweiterungen und Übungen zu "Schweine im Weltall"

Aufgabe 1 - Zufällig Springen

Wenn das Schwein das Ende seiner Welt erreicht, soll es an einem zufälligen Platz innerhalb der Welt erscheinen. Du musst dazu herausfinden, wie das Schwein überprüfen kann, ob es am Ende der Welt ist und wie es seine Position ändern kann (Hinweis: Vererbung). Eine Lösungsidee könnte dann sein: Wenn ich am Ende der Welt bin, dann ermittle ich zwei Zufallszahlen für x- und y-Koordinaten und springe dort hin.

Aufgabe 2 - Aus der Welt laufen

Ein Programmierer hat folgenden Code geschrieben:

Sprungfehler

Beschreibe was der Programmierer wohl erreichen wollte, erkläre warum der Code nicht das Gewünschte bewirkt und verbessere ihn.

Aufgabe 3 - Gewinnstufen

Wenn auf das Schwein geklickt wurde, soll überprüft werden, zu welchem Zeitpunkt dies geschehen ist. Zu früh bewirkt, dass das Schwein vor Wut explodiert. Ansonsten soll je nach Zeitpunkt die Grafik für ein trauriges, halbwegs zufriedenes oder ein glückliches Schwein eingestellt werden. Damit die Grafik schöner aussieht ist es vorteilhaft das Schwein wieder "gerade" zu stellen. Stelle die Lösungsidee als Flussdiagramm und Struktogramm dar. Welche Vorteile bieten die Darstellungen jeweils? Implementiere die Lösungsidee.

Aufgabe 4 - Eigene Ideen

Ergänze oder variiere das Spiel mit eigenen Ideen. Dies ist wahrscheinlich eine der wichtigsten Aufgaben! Anregungen dazu könnten sein:

  • Das Schwein soll sich immer nach genau 20 Schritten drehen.
  • Die Geschindigkeit von Greenfoot soll zufällig oder in Abhängigkeit vom Alter des Schweins variieren. (Hinweis: Greenfoot.setSpeed(60) setzt die Geschwindigkeit auf 60%.
  • Wenn man beim Klicken das Schwein verfehlt, also auf die Welt trifft, dann sollen Punkte abgezogen werden oder das Spiel kurz schneller laufen oder...
  • ... sei kreativ !!!

Weitere Übungen

Aufgabe 5 - Mathematische Funktionen

Die Klasse Math stellt einige Klassenmethoden zum Berechnen mathematischer Funktionen bereit. Dazu gehören z.B. die Methoden abs(...), max(...), pow(...), random(), sin(...) und sqrt(...)

Finde durch Experimente in der Direkteingabe (Codepad) in BlueJ heraus, was diese bewirken und wie sie zu benutzen sind. Erkläre warum die Java-Entwickler sich dazu entschieden haben diese Methoden als Klassenmethoden bereit zu stellen.

Aufgabe 6 - GeoCalc

Es soll ein Ausschnitt einer Klassenbibliothek zur Berechnung der Eigenschaften verschiedener geometrischer Figuren betrachtet werden:

Klassendiagramm geometrische Figuren
  1. Beschreibe die dargestellten Klassen. Benutze dabei unter anderem die Begriffe erben, überschreiben, ergänzen.
  2. Die Klasse GeoFigur wurde schon implementiert. Ergänze die Klasse Rechteck. Die x- und y-Koordinaten stellen bei einem Rechteck immer die linke untere Ecke dar. Die Breite und Höhe geben die Breite nach rechts und die Höhe nach oben an. Zur Abstandsberechnung zum Ursprung soll der Mittelpunkt des Rechtecks herangezogen werden. Erklärung zum Rechteck
  3. Teste die Klassen mit Hilfe der Direkteingabe (Codepad) oder eines Testprogramms ähnlich dem unten dargestelltem (Achtung: dieses enthält bewusst Fehler).
  4. Beschreibe Zeile für Zeile was im unten dargestellten Testprogramm passiert. Gehe dabei auf die oben dargestellte Vererbungsbeziehung ein. Erkläre warum manche Zeilen nicht compiliert werden können, also fehlerhaft sind.
    // Zur Erinnerung:
    // new GeoFigur() ruft den Konstruktor von GeoFigur auf,
    // erzeugt also ein Objekt der Klasse GeoFigur.
    // figur.setzeKoordinaten(0, 2) ruft die Methode
    // "setzeKoordinaten" am Objekt "figur" auf.
    class Testklasse
    {
        Testklasse() {
            GeoFigur figur = new GeoFigur();
            figur.setzeKoordinaten(0, 2);
            System.out.println(figur.getAbstandZumUrsprung());
            
            Rechteck rechteck = new Rechteck();
            rechteck.setzeKoordinaten(-2, 2);
            rechteck.setzeAusmasse(4, 4);
            rechteck.verschieben(0, 2);
            System.out.println(rechteck.getAbstandZumUrsprung());
            
            GeoFigur g = new Rechteck();
            g.setzeKoordinaten(0, 1);
            g.setzeAusmasse(1, 4);
            
            Rechteck r = new GeoFigur();
        }
    }
    
  5. Ergänze im Klassendiagramm eine Klasse Kreis und implementiere sie. Der Abstand zum Ursprung soll vom Kreismittelpunkt berechnet werden.
  6. Zusatzaufgaben:
    1. Ergänze eine Klasse Linie.
    2. Ergänze eine Methode skalieren(double faktor)
    3. Macht es Sinn die Klassen EindimensionaleFigur und ZweiDimensionaleFigur zu ergänzen?

Suche

v
7.1.2.2.4
inf-schule.de/oop/java/implementierung/siw/uebungen
inf-schule.de/7.1.2.2.4
inf-schule.de/@/page/trLs8D3IHguTFJuj

Rückmeldung geben