====== Programmier-Challenges ======
Diese Challenges richten sich an Schülerinnen und Schüler, die bereits die ersten Abschnitte bis und mit dem Abschnitt "Wiederholung" in den Kapiteln [[http://www.tigerjython.ch/index.php?inhalt_links=navigation.inc.php&inhalt_mitte=turtle/turtle.inc.php|Turtle Grafik]] und/oder [[http://www.tigerjython.ch/index.php?inhalt_links=navigation.inc.php&inhalt_mitte=grafik/grafik.inc.php|Grafik und Bilder]] bearbeitet haben.
Die folgenden Aufgaben sind einiges anspruchsvoller als die Aufgaben im TigerJython-Kurs.
===== spirale.py =====
Voraussetzungen: Die ersten zwei oder drei Abschnitte im Kapitel [[http://www.tigerjython.ch/index.php?inhalt_links=navigation.inc.php&inhalt_mitte=turtle/turtleBewegen.inc.php|"Turtlegrafik"]]. Sie brauche dazu "Wiederholungen", die aber auch im zweiten Kapitel von [[http://www.tigerjython.ch/index.php?inhalt_links=navigation.inc.php&inhalt_mitte=grafik/grafik.inc.php|Grafik und Bilder]] behandelt werden.
Mit Hilfe der **Turtle-Grafik** erstellen Sie folgende Grafik (Skalierung und Rotation dürfen unterschiedlich sein).
//Es geht natürlich auch mit Koordinatengrafik, ist aber mathematisch einiges anspruchsvoller.//
Um Flächen zu füllen, studieren Sie den Unterabschnitt "Gefüllte Flächen" im Abschnitt "Farben" von Kapitel "Turtle Grafik".
{{ :lehrkraefte:blc:informatik:glf19:spirale.png?direct |}}
from gturtle import *
wurzel2 = 2**0.5
makeTurtle()
hideTurtle()
# Startlaenge der ersten Katheten
lang = 2
# Startposition
setScreenPos(Point(200,300))
#
# Hier fehlt Ihr Code...
#
# Hinweis: Zeichnen Sie erst einmal ein
# gleichschenklig rechtwinkliges Dreieck
# mit einem Quadrat. Verwenden Sie dazu
# jeweils den Befehl forward(lang).
# Passen Sie die Variable lang nötigenfalls
# an, z.B. (hier nicht so brauchbar) mit
# lang = lang*42
#
# Wenn die erste Figur funktioniert, setzten Sie
# den ganzen Code in eine for-Schlaufe oder repeat-Schlaufe.
#
# Stellen Sie sicher, dass die Turtle nach der Figur am
# richtigen Ort ist und in die richtige Richtung schaut.
===== perspectivegrid.py =====
Voraussetzungen: Die ersten zwei Abschnitte vom Kapitel [[http://www.tigerjython.ch/index.php?inhalt_links=navigation.inc.php&inhalt_mitte=grafik/forInRange.inc.php|Koordinatengrafik]].
Erzeugen Sie ein Bild, das folgendem Bild ähnlich sieht:
{{ :lehrkraefte:blc:informatik:glf19:perspectivegrid.png?direct |}}
from gpanel import *
makeGPanel(-10, 10, -15, 5)
#
# Hier fehlt Ihr Code...
#
===== waben.py =====
Erstellen Sie ein Bild, das "Honigwaben" darstellt. Gehen Sie dazu in folgenden Stufen vor:
- Nur ein Sechseck, ohne Farbfüllung.
- Eine horizontale Zeile von 10 Sechsecken.
- Die ganze 10x10 Wabe. Verwenden Sie dazu pushState() und popState(), um die Position und Richtung der Turtle am Anfang einer Zeile zu speichern und am Ende einer Zeile wieder herzustellen.
- Für die Farbfüllung können Sie wie folgt vorgehen: Definieren Sie vor den Wiederholungen eine Variable farbe=1. Vor dem Zeichnen eines Sechsecks legen Sie die Füllfarbe fest und ändern die Variable farbe entsprechend.
farbe = 1
# Wiederholung:
# Wiederholung:
if farbe==1:
setFillColor("red")
farbe = 2 # Beim nächsten Durchgang Farbe 2 verwenden
elif farbe==2:
# etc
# etc
{{ :lehrkraefte:blc:informatik:glf19:waben.png?direct |}}
==== Hilfestellungen ====
* [[http://www.tigerjython.ch/index.php?inhalt_links=navigation.inc.php&inhalt_mitte=turtle/selektion.inc.php|Selektion]] (if-Abfragen, Code nur in bestimmten Fällen ausführen).
* Turtle Position speichern und wiederherstellen: ''pushState()'' und ''popState()''
*