At My Fingertips

Pulsierender Stern

Folgende Animation besteht aus 100 Bildern, die nacheinander abgespielt werden, wie ein Film.

opacity

Eine Form immer gleicher Dimension wird langsam sichtbar, also mehr undurchsichtig oder weniger durchsichtig.

Hier sehen Sie fünf mögliche Zwischenschritte:

basic0basic0basic0basic0basic0

Da zwei Dreiecke zur Sternform überlagern, verändert sich die Opazität (Undurchsichtigkeit) des Sterns ungleichförmig (heterogen).

Dekomposition / Arbeitsschritte

  1. die (Farb-) Konstanten erstellen
  2. eine erste Funktion verfassen, die die Figur im momentanen Zustand zeichnet und diese als immer gleichgrosse Grafik zurückgibt, also eigentlich die einzelnen Frames eines Films
  3. eine zweite Funktion verfassen, die diese Figurpositionen (oder -konfigurationen) zu einer Liste von Grafiken vereint und zurückgibt
  4. mit dem Ausgabebefehl show_animation die Grafikliste als Film abspielen

1. Konstanten

Loading...

1.a Opazität: Exkurs

Opazität bedeutet Undurchsichtigkeit, sie ist also das Gegenteil von Transparenz.

Jede Farbfunktion in PyTamaro bietet eine mit dem letzten Parameter eine (versteckte) Möglichkeit, die Farbopazität darzustellen:

rgb

hsl

hsv

  • opacity – (alpha) of the color, where 0 means fully transparent and 1 fully opaque. By default, all colors are fully opaque.
  • opazitaet - die Undurchsichtigkeit (alpha), wobei 0 komplett durchsichtig und 1 komplett undurchsichtig entspricht. Standardmässig sind alle Farben vollständig undurchsichtig.

Dank der Opazität kann man

  • in einem Film Formen erscheinen und verschwinden lassen (wie in der Titelanimation),
  • einen Filter über (einen Teil anderer Figuren) legen
  • eine Hintergrundfigur durch eine teil-opake Vordergrundfigur durchscheinen lassen

Beispiel

Loading...

Aufgabe

Legen Sie die dreieck_reihe vor ein weisses, ein schwarzes und ein grünes Rechteck (Breite = 300, Höhe = 100) und geben Sie diese Grafiken aus.

Loading...
show_graphic(overlay(dreieck_reihe, rectangle(300, 100, white)))
show_graphic(overlay(dreieck_reihe, rectangle(300, 100, green)))

Bei den transparent(er)en Dreiecken schimmert die Farbe des Hintergrundes durch, deshalb erscheinen die Figuren mit einem tieferen Opazitätswert heller, dunkler, grüner, grauer etc.

2. Einzelne Frames

Aufgabe

Ergänzen Sie folgende Funktion, so dass genau die Bilder aus der Tabelle (für die Titelgrafik) ausgegeben werden. op gibt Opacitiy an.

Loading...

Toolbox

Fügen Sie die Funktion Ihrer Toolbox hinzu.

3. Filmfunktion

Erstellen Sie eine neue Filmfunktion, die 100 Bilder oder Versionen der Figur erstellt und diese in eine Liste von Grafiken einfügt. Diese Liste von Grafiken ist der Rückgabewert der Filmfunktion. So kann dann die Liste von Grafiken als Titelanimation abgespielt werden. (Spicken Sie so wenig wie nötig bei der Funktion vom wachsenden Mond.)

Aufbau

  1. Filmfunktion, die eine Grösse entgegennimmt und eine Liste von Grafiken zurückgibt -> list[Graphic]
    1. Akkumulator als leere Liste erstellen, z. B. film oder frame_liste
    2. in einer for-Schleife die Liste mit den Grafiken der sich bewegenden Figur füllen
    3. die Grafikliste zurückgeben
  2. mit show_animation die Filmfunktion aufrufen und erhaltene Grafikliste als Film abspielen
Loading...

Toolbox

Fügen Sie die Funktion Ihrer Toolbox hinzu. Verwenden Sie die Framefunktion oben aus Ihrer Toolbox.

Umkehren

Sie kennen das Konzept [start:stop:step] nun schon von Strings und der range(start,stop,step)-Funktion. Man kann das in Python auch auf Listen anwenden. Praktischerweise können Sie sich damit wieder ganz viel Mühe ersparen, denn mit Slicings kann man die Filmfunktion aufrufen und die Ausgabe kurzerhand mit []::-1] umkehren.

umgekehrte_liste = erstelle_eine_liste(40, 2, magenta)[::-1]

Aufgabe

Ergänzen Sie folgende Zelle, um den Film rückwärts darzustellen.

Loading...

Listen konkatenieren

Listen können Sie auch mit + aneinanderhängen, Fachbegriff konkatenieren:

Loading...

Zwei Filme konkatenieren

Aufgabe

Erstellen Sie mittels Konkatenation folgende Animation:

film_konkateniert

Verwenden Sie die Funktion wieder, die einen Film erstellt. Sie müssen also nur 1-3 Zeilen Code schreiben.

Loading...

Toolbox

Fügen Sie auch diese Funktion Ihrer Toolbox hinzu.

Was Sie geübt und gelernt haben

Allgemein

  • Sie können bestehende Programme sinnvoll abändern und erweitern.
  • Sie können Probleme lösen, indem Sie diese in Teilprobleme zerlegen.
  • Sie können Datentypen und -strukturen sinnvoll einsetzen.
  • Sie können Funktionen in Ihre eigene Bibliothek aufnehmen.

Python

  • Sie können Listen in Schleifen neue Elemente hinzufügen.
  • Sie können Funktionen in Schleifen mit verschieden Argumenten, z. B. opacity für die Funktion rgb_color, aufrufen, um sich leicht ändernde Elemente zu erstellen.
  • Sie können Listen umkehren und konkatenieren.

PyTamaro

  • Sie können show_animation verwenden, um Listen von Grafiken als Animation auszugeben.

This activity has been created by Gall and is licensed under CC BY-SA 4.0.

Pulsierender Stern

Logo of PyTamaro

PyTamaro is a project created by the Lugano Computing Education Research Lab at the Software Institute of USI

Privacy PolicyPlatform Version b744b47 (Tue, 08 Oct 2024 16:30:14 GMT)