Wiederholungen mit veränderten Werten
Die folgende Zauberrolle zeichnet drei Quadrate.
Dabei sind die Zeilen zum Zeichnen eines Quadrates immer gleich! Wir nennen diese Zeilen hier den „Quadratblock“.
Davor werden in einer Zeile die Werte für die Position »p« und die Seitenbreite »s« gesetzt, die dann im der Quadratblock berücksichtig werden. Diese Zeilen nennen wir „Variablenzeile“.
Die Position »p« ist ein Paar aus zwei Zahlen: die erste gibt an, wie weit rechts vom Mittelpunkt die Position ist, die zweie wie weit oberhalb des Mittelpunktes sie sich befindet. Solche Paare schreibt man, indem man zwei Zahlen mit einem Komma getrennt in runde Klammern schreibt.
Die Zauberrolle enthält also jeweils abwechselnd eine Variablenzeile zum Festlegen veränderlicher Werte und einen immer gleichen Quadratblock.
- Zauberrolle
from turtle import *
bgcolor( 0, 0, 0 ); penup()# Variablenzeile
p = 0, 0; s = 20# Quadratblock
setpos( p ); fillcolor( 0, 1, 1 ); begin_fill()
forward( s ); right( 90 ); forward( s ); right( 90 )
forward( s ); right( 90 ); forward( s ); right( 90 )
end_fill()# Variablenzeile
p = 40, 40; s = 10# Quadratblock
setpos( p ); fillcolor( 0, 1, 1 ); begin_fill()
forward( s ); right( 90 ); forward( s ); right( 90 )
forward( s ); right( 90 ); forward( s ); right( 90 )
end_fill()# Variablenzeile
p = 40, 80; s = 15# Quadratblock
setpos( p ); fillcolor( 0, 1, 1 ); begin_fill()
forward( s ); right( 90 ); forward( s ); right( 90 )
forward( s ); right( 90 ); forward( s ); right( 90 )
end_fill()
Wir wollen nun auch noch die Farbe des Quadrates variabel gestalten.
- Zauberrolle
from turtle import *
bgcolor( 0, 0, 0 ); penup()p = 0, 0; s = 20
setpos( p ); fillcolor( 0, 1, 0 ); begin_fill()
forward( s ); right( 90 ); forward( s ); right( 90 )
forward( s ); right( 90 ); forward( s ); right( 90 )
end_fill()p = 40, 40; s = 10
setpos( p ); fillcolor( 0, 1, 1 ); begin_fill()
forward( s ); right( 90 ); forward( s ); right( 90 )
forward( s ); right( 90 ); forward( s ); right( 90 )
end_fill()p = 40, 80; s = 15
setpos( p ); fillcolor( 0, 0, 1 ); begin_fill()
forward( s ); right( 90 ); forward( s ); right( 90 )
forward( s ); right( 90 ); forward( s ); right( 90 )
end_fill()
Jetzt sind die verschiedenen Quadratblöcke aber nicht mehr genau gleich! Das ist unübersichtlich, weil es jetzt schwieriger wird, eventuelle Unterschiede der Blöcke zu erkennen.
Schreiben sie die zuletzt gezeigt Zauberrolle so um, daß alle drei Quadratblöcke wieder genau gleich sind, indem Sie nach dem Vorbild der Position »p« und Seitenbreite »s« für die drei Zahlenwerte der Füllfarbe einen Namen einsetzen, dessen Werte dann jeweils in der Variablenzeile vor dem Quadratblock festgelegt werden.
(Es ist auch möglich, diese Aufgabe mit dem Hinzufügen nur einer einzigen Variablen zu lösen, die – nach dem Vorbild der Position »p« – drei Zahlen enthält und dann als in den Klammern hintern »fillcolor« verwendet wird.)
Falls Sie noch Zeit haben, können Sie noch mehr verschiedene Quadrate zeichnen, indem Sie jeweils eine Variablenzeile und den dahinterstehenden Quadratblock an das Ende der Zauberrolle kopieren und die Werte der Variablenzeile dann ändern.