Unterschiede
Hier werden die Unterschiede zwischen zwei Versionen der Seite angezeigt.
Beide Seiten, vorherige Überarbeitung Vorherige Überarbeitung Nächste Überarbeitung | Vorherige Überarbeitung | ||
gf_informatik:programmieren_iii_gra [2025-04-01 15:18] – [Lösungen] gra | gf_informatik:programmieren_iii_gra [2025-05-06 18:58] (aktuell) – [Lösungen] gra | ||
---|---|---|---|
Zeile 1: | Zeile 1: | ||
====== Programmieren Teil 3 – Listen (mit der while-Schleife) ====== | ====== Programmieren Teil 3 – Listen (mit der while-Schleife) ====== | ||
- | + | * Dieses Seite ist die Fortsetzung von [[gf_informatik: | |
- | Dieses Seite ist die Fortsetzung von [[gf_informatik: | + | * Weiter zu [[gf_informatik: |
++++Lernziele: | ++++Lernziele: | ||
Zeile 464: | Zeile 464: | ||
== Zusatzaufgabe 1 – Bruder Jakob == | == Zusatzaufgabe 1 – Bruder Jakob == | ||
- | Die Popcorn-Melodie ist einfach mit Blick auf die Rhythmus: Alle Töne sind gleich lang. Bei den meisten Liedern ist das nicht so. Zu m Beispiel | + | Die Popcorn-Melodie ist einfach mit Blick auf die Rhythmus: Alle Töne sind gleich lang. Bei den meisten Liedern ist das nicht so. Zum Beispiel |
{{: | {{: | ||
Zeile 472: | Zeile 472: | ||
* Erstelle dann eine zweite Liste für die Tondauern: Für jeden Ton der ersten Liste speichert diese Liste die entsprechende Dauer (Viertelton, | * Erstelle dann eine zweite Liste für die Tondauern: Für jeden Ton der ersten Liste speichert diese Liste die entsprechende Dauer (Viertelton, | ||
* In der while-Schleife kannst du dann beide Listen gleichzeitig durchgehen. | * In der while-Schleife kannst du dann beide Listen gleichzeitig durchgehen. | ||
+ | |||
+ | === Aufgabe L22 – Pixel-Art (für Fortgeschrittene) === | ||
+ | {{: | ||
+ | |||
+ | Für diese Aufgabe benötigst du [[gf_informatik: | ||
+ | |||
+ | Gehe von Aufgabe L20 aus und verändere sie wie folgt: | ||
+ | * Zeichne Quadrate statt kreisförmige Punkte. Erstelle hierzu eine Funktion '' | ||
+ | * Die zweidimensionale Liste für ein Bild ist nun mehrfarbig: Die Zahlen 0 bis 3 stehen für Positionen in der Farbliste '' | ||
+ | * Du kannst die [[https:// | ||
+ | |||
+ | <WRAP group> | ||
+ | <WRAP column half> | ||
+ | Folgende Listen... | ||
+ | <code python> | ||
+ | # 4 Farben: 1 für Hintgergrund, | ||
+ | colors = ("# | ||
+ | |||
+ | # Pixel-Liste: | ||
+ | pixels = [[0, 0, 0, 1, 1, 0, 0, 0], | ||
+ | [0, 0, 1, 1, 1, 1, 0, 0], | ||
+ | [0, 1, 1, 1, 1, 1, 1, 0], | ||
+ | [0, 1, 0, 1, 1, 0, 1, 0], | ||
+ | [0, 2, 2, 2, 2, 2, 2, 0], | ||
+ | [0, 0, 2, 0, 0, 2, 0, 0], | ||
+ | [0, 3, 0, 3, 3, 0, 3, 0], | ||
+ | [3, 0, 3, 0, 0, 3, 0, 3]] | ||
+ | </ | ||
+ | </ | ||
+ | |||
+ | <WRAP column half> | ||
+ | ...entsprechen diesem Bild: | ||
+ | |||
+ | {{: | ||
+ | </ | ||
+ | </ | ||
+ | |||
+ | == Aufgabe == | ||
+ | |||
+ | - Wähle ein Bild aus dieser {{ : | ||
+ | - Passe die Farbliste und die Pixel-Liste so an, dass sie deinem Bild entsprechen. | ||
+ | - Passe deinen Code an, sodass die Turtle das gewünschte Bild zeichnet. | ||
+ | |||
+ | == Zusatzaufgabe == | ||
+ | Erweitere deine Pixelliste um eine weitere Dimension: Die Liste enthält mehrere Bilder, die nacheinander angezeigt werden, sodass eine Animation entsteht. Tipp: Starte mit bloss zwei Bildern. Verändere im zweiten Bild nur einzelne Punkte und beobachte den Effekt. | ||
+ | |||
===== Lösungen ===== | ===== Lösungen ===== | ||
Zeile 770: | Zeile 816: | ||
</ | </ | ||
- | < | + | < |
- | ++++Lösungen L16-L21| | + | ++++Lösungen L16-L22| |
=== Aufgabe L16 === | === Aufgabe L16 === | ||
Zeile 940: | Zeile 986: | ||
playTone(popcorn[i], | playTone(popcorn[i], | ||
i = i + 1 | i = i + 1 | ||
+ | </ | ||
+ | |||
+ | === Aufgabe L22 === | ||
+ | <code python> | ||
+ | from gturtle import * | ||
+ | morla = Turtle() | ||
+ | |||
+ | morla.right(90) | ||
+ | morla.penUp() | ||
+ | morla.hideTurtle() | ||
+ | |||
+ | # 4 Farben: 1 für Hintgergrund, | ||
+ | colors = ("# | ||
+ | |||
+ | # Pixel-Liste: | ||
+ | pixels = [[0, 0, 0, 1, 1, 0, 0, 0], | ||
+ | [0, 0, 1, 1, 1, 1, 0, 0], | ||
+ | [0, 1, 1, 1, 1, 1, 1, 0], | ||
+ | [0, 1, 0, 1, 1, 0, 1, 0], | ||
+ | [0, 2, 2, 2, 2, 2, 2, 0], | ||
+ | [0, 0, 2, 0, 0, 2, 0, 0], | ||
+ | [0, 3, 0, 3, 3, 0, 3, 0], | ||
+ | [3, 0, 3, 0, 0, 3, 0, 3]] | ||
+ | |||
+ | # Ein Quadrat mit gewünschter Farbe zeichnen: | ||
+ | def square(color, | ||
+ | morla.setFillColor(color) | ||
+ | morla.startPath() | ||
+ | count = 0 | ||
+ | while count < 4: | ||
+ | morla.forward(side) | ||
+ | morla.right(90) | ||
+ | count += 1 | ||
+ | morla.fillPath() | ||
+ | |||
+ | # Pixel für Pixel gemäss Liste zeichnen: | ||
+ | px_size = 20 | ||
+ | row = 0 | ||
+ | xpos = 0 | ||
+ | ypos = 0 | ||
+ | while row < 8: | ||
+ | morla.setPos(xpos, | ||
+ | column = 0 | ||
+ | while column < 8: | ||
+ | square(colors[pixels[row][column]], | ||
+ | morla.forward(px_size) | ||
+ | column = column + 1 | ||
+ | ypos = ypos - px_size | ||
+ | row = row + 1 | ||
</ | </ | ||
++++ | ++++ | ||
</ | </ |