Lehrzeit

Schule & Informatik

Seite 2 von 147

Programmieraufgabe 95

Wow, es ist tatsächlich 10 Monate her seit ich das letzte Mal eine Programmieraufgabe hier vorstellte. Höchste Zeit das zu ändern. Diesmal natürlich zum Thema Array und for-Schleife. Kann man aber auch wunderbar in der 11. Jahrgangsstufe zum Üben des Kompositummusters nehmen.

Aufgabe

Schreibe, basierend auf der angefügten Vorlage, ein Programm mit den folgenden Eigenschaften:

  1. Durch Klicken auf den Hintergrund wird eine Blase erzeugt.
  2. Kommt man bei gedrückter Maustaste über eine Blase, so wird diese grau eingefärbt.
  3. Lässt man die Maustaste über einer Blase los, so zerplatzt sie.

Anhang: BubbleGameStart

Jetzt noch ein paar Erweiterungen für die guten Schüler:

  • Die Blasen sollen zufällige Farben haben
  • Je länger die Maustaste beim Erzeugen einer neuen Blase gedrückt wird, desto größer wird sie (Variante A: Radius hängt linear von den draw()-Aufrufen habe; Variante B: Die Fläche nimmt linear mit der Anzahl der draw()-Aufruf zu, d.h. die Fläche der Blase ist ein Maß für die Anzahl der Aufrufe)
  • Bewegung der Blasen ändern:
    1. Die Blasen sollen vom Rand abprallen
    2. Die Blasen prallen untereinander ab
    3. Es gibt eine Schwerkraft

#inktober2017

Im vergangenen Monat habe ich zum ersten Mal am #inktober teilgenommen. Der sogenannte Inktober wurde im Jahre 2009 von Jake Parker ins Lebens gerufen als Herausforderung an sich selbst jeden Tag im Monat Oktober eine Zeichnung anzufertigen. Dazu gibt er eine Liste mit Themenvorschlägen vor an die man sich aber nicht zwingend halten muss. Auch an meine eigene Liste habe ich mich nicht gehalten.

Aber ich habe immerhin jeden Tag etwas gezeichnet und für mich herausgefunden, was mir Spaß macht: Personen zeichnen mit vor allem Kugelschreiber. Fineliner geht auch. Es ist das Schraffieren, was Spaß macht.

Um mir selbst einen Überblick zu verschaffen, fasse ich meine Zeichnungen hier mal zusammen (unter den Bildern immer der Text, den ich auf instragram mit dazu schrieb.. auf Englisch… eine zweite Herausforderung).

Noch genügen die Zeichnungen nicht meinen Ansprüchen, aber ich denke es wird im Laufe der Zeit besser. Ich werde weiter im Zug zeichnen und auch ab und zu zu Hause oder in den Ferien. Und in einem Jahr, genauer in 11 Monaten werde ich dann sehen, wie weit ich gekommen bin.

Diese verdammte for-Schleife

Das ist, glaube ich, der Gedanke, den viele meiner 10. und leider auch 11.-Klässler haben, wenn mal wieder der Compiler meckert oder das Programm nicht das tut, was es soll. Ich versuche dann den Schülern  zu erklären, dass die Struktur, die sie sich einprägen müssen,  wie folgt aussieht (erstellt mit „meinem“ EBNF-Syntaxdiagramm-Wandler):

Aber irgendwie klappt das bei ganz vielen nicht. Meine neueste Vermutung, warum sich so viele damit schwer lautet: for-Schleife und Arrays habe ich bisher mehr oder weniger zusammen eingeführt. Damit habe ich aber zwei Konzepte miteinander verknüpft, die eigentlich gar nichts zwingend miteinander zu tun haben. Das möchte ich dieses Jahr trennen. Ich führe erstmal die for- und später auch die while-Schleife ein und viiiiiiieeeel später dann die Arrays.

Und damit das alles nicht so langweilig wird und die Schüler auch Programmierergebnisse sehen, greife ich auf Processing zurück. Darüber schrieb ich bereits schon einmal und möchte hier meinen Weg darstellen. Ob das dann alles so geklappt hat, werde ich in ein paar Wochen schreiben.

Basis für die Schüler ist ein fast leeres BlueJ-Projekt (FarbenSpielVorlage), das in einem +libs-Ordner die processing-Library enthält. Dazu noch zwei Klassen, damit die Schüler sich nicht lange mit der Startkonfiguration rumärgern müssen. Und um es gleich vorwegzunehmen: Man könnte auch gleich mit einem Online-Processing-Editor bzw. p5.js-Editor anfangen, aber es geht um Java und ich möchte nicht unnötig Verwirrungs stiften. Erst  „int“ und „double“  etc. bei Java einführen und dann JavaScript-Variablendefinitionen wie beispielsweise „let x=0;“ sind für Programmieranfänger dann doch ein wenig viel.

Das schöne bei processing ist, dass man als Programmierer gleich „coole“ Sachen programmieren kann. Anregungen findet man dazu bei processing selbst, aber auch bei p5 bzw. beim CodingTrain.

Bei meinem Startbeispiel (FarbenSpielVorlage) wird zwar nur ein weißer Punkt an der Stelle gezeichnet an die der Anwender  geklickt hat. Aber wer mal versucht hat, dies direkt in Java umzusetzen, wird den Unterschied erkennen:

 if (mousePressed) {
    fill(255);
    ellipse(mouseX, mouseY, 10, 10);
 }

Hier können die Schüler einzelne Parameter (Farbe, Größe) leicht unter meiner Anleitung verändern.

Sollen aber mehrer Punkt gezeichnet werden, so wird irgendeine Form der Zählwiederholung benötigt, wie die Schüler sie oftmals aus der 7. Klasse bei Karol kennengelernt haben. Und schon bin ich bei der for-Schleife und damit bei beispielsweise dem nebenstehenden Verlauf.

Daraufaufbauen ließe sich ein Funktionsplotter umsetzen oder Lissajous-Figuren realisieren. Auch einfache Spiele wären denkbar.

Für den Übergang zu den Arrays nehme ich dann wieder das Startprojekt, speichere aber dann die geklickten Punkt in diesem Array und iteriere über dieses Feld.  Mal schauen, wie es wird.

 

 

 

« Ältere Beiträge Neuere Beiträge »

© 2017 Lehrzeit

Theme von Anders NorénHoch ↑