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