Lehrzeit

Schule & Informatik

Kategorie: Java für Einsteiger (Seite 1 von 7)

Programmieraufgabe 99

Die zunächst letzte Programmieraufgabe unter Ausnutzung von processing lautet:

Aufgabe

Schreibe ein Programm bei dem zu Beginn zwischen 2 und 100 Bälle erscheinen, die „weg geklickt“ werden müssen. Sind alle Bälle weg, so erscheint der Text: „Gewonnen in 10.1s“. Die benötigte Zeit ist dabei optional.

Noch ein paar Gedanken zur Aufgabe:

  • Zunächst einmal muss ich sagen, dass der Einsatz von Processing im Unterricht prima ist. Selten hatte ich so engagierte Schüler. Das werde ich auf alle Fälle weiter verfolgen und ausbauen.
  • BlueJ eignet sich nur bedingt zum Arbeiten mit processing: Nicht nur die eingebetteten Klassen sind ein wenig merkwürdig. Vor allem die aktuelle BlueJ Version (4.1.1 auf Mac) macht Probleme (Abstürze, falsche Anzeigen). Zum Glück habe ich in der Schule noch die 3er Version.
  • Spiele und andere Programme in dieser Richtung ergeben nur Sinn mit einer ArrayList und einer „for each-Schleife“. Damit schieße ich über den Lehrplan hinaus. Auf der anderen Seiten empfinde ich eine ArrayList in der heutigen Zeit für angebrachter als ein „einfaches“ Array. Die Verwaltung der Bälle wäre ungleich schwieriger gewesen („Ist das Array groß genug?“, „Wie lösche ich Elemente?“, „Wie gehe ich mit null-Werten um.“)
    Nichts desto trotz behandle ich das Array natürlich auch, aber später
  • Das Einführen einer reinen Zählwiederholung war durch die „10 Bälle“ am Anfang gut zu motivieren. Und ich hing nicht sofort an einem Array – dafür hatte ich ja die ArrayList eingeführt. Damit habe ich eines meiner ursprünglich Probleme um 10% verringert.

Der ursprüngliche Ablauf war übrigens wie folgt:

  1. Klasse Ball definieren und 1 Ball über den Bildschirm flitzen und abprallen lassen.
    (Grundlegender Spielaufbau, Standardkonstruktor des Balls mit Zufallswerten und Basisverhalten)
  2. Auf Klick einen Ball erzeugen lassen, der sich wie unter 1 bewegt.
    (Konstruktor mit Parameter, alle erzeugten Bälle werden in einer ArrayList gespeichert)
  3. Funktion unter 2. wieder raus. 10 Bälle erzeugen und wenn diese angeklickt wurden, dann aus der Liste entfernen.

Lösung: Ballz_3

Programmieraufgabe 97

Basierend auf der letzten Programmieraufgabe wird nun, passend zur Weihnachtszeit und vor allem Silvester, ein Feuerwerk implementiert. Hierzu wird die Aufgabe in mehrere Teilaufgaben zerlegt und schrittweise bearbeitet. Ähnlich, wie es bei einem Agilen Projektmanagement vielleicht der Fall wäre. Hier wird das Endprodukt auch erst in seine einzelne Bestandteile zerlegt und priorisiert (Backlog). Anschließend wird mit dem wichtigsten Element, welches in Teilschritte zerlegt wird, begonnen. Was wichtig ist, entscheidet zwar eigentlich der Product Owner, aber den gibt es hier nicht bzw. es ist fast alles gleich wichtig. Ich fange mit der Rakete an, da ich die „Flugphysik“ für die bunten Funken auch benötige.

Es ergäben sich daher wahrscheinlich folgende Schritte und damit die folgende…

Aufgabe

Programmiere ein Feuerwerk mit Hilfe von processing. Gehe dabei wie folgt vor:

  1. Rakete, die vom unteren Bildschirmrand starten (-> class Rockets)
  2. Buntes Explodieren der Rakete an einer beliebigen Stelle (->class Sparkles)
  3. Eine Rakete explodiert und wird durch „Sparkles“ ersetzt.
  4. Löschen nicht mehr benötigter „Rockets“ und „Sparkles“, um den Speicher nicht unnötig zu belasten.

Rockets und Sparkles können in ArrayListen verwaltet werden.

Am Ende ergibt sich ein solches Bild:

Ein bisschen Text. wie „Happy New Year“ kann man ja noch ergänzen. Oder man macht gleich einen explodierenden Text. Sozusagen als neue Aufgabe.

Lösung: Firework2d

Programmieraufgabe 96

Processing hat sich in meinen Augen bislang als Erfolg gezeigt. Die Tatsache, dass die Schüler sofort eine sichtbare Reaktion bekommen motiviert sie mehr als vieles, was ich bisher versucht habe. Nachdem sie Processing ein wenig kennengelernt hatten und einen Ball automatisch im Fenster haben rumfliegen lassen war eine leicht fortgeschrittene Aufgabe das Programmieren eines Bildschirmschoners, wie er früher öfter zu sehen war.

Aufgabe

Erstelle mit Hilfe von Processing einen Bildschirmschoner, der wie folgt aussieht:

Der Ehrlichkeit halber muss ich aber dazu sagen, dass die Schüler nur eine dieser Linien selbst programmieren sollten. Ich habe dann das Einführen der zweiten Linie dazu genutzt, um das Definieren von Klassen zu erläutern. Dabei muss man allerdings etwas aufpassen, denn die gewünschte Klasse Linie muss innerhalb der Klasse Bildschirmschoner definiert sein, sonst kann Linie nicht die gewünschten Methoden von Processing direkt nutzen.

Weiter habe ich die Idee hinter diesem Schliereneffekt erklärt, da ich beim Erstellen der Musterlösung auch ein bisschen rumprobieren musste bis es klappte. Und mir kam es für die Schüler in erster Linie auf die if-Abfragen an.

Lösung: Bildschirmschoner

Ältere Beiträge

© 2018 Lehrzeit

Theme von Anders NorénHoch ↑