====== 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()'' *