Unterschiede

Hier werden die Unterschiede zwischen zwei Versionen der Seite angezeigt.

Link zu der Vergleichsansicht

Beide Seiten, vorherige Überarbeitung Vorherige Überarbeitung
Nächste Überarbeitung
Vorherige Überarbeitung
gf_informatik:christmas_art [2023-12-19 15:47] scagf_informatik:christmas_art [2023-12-22 08:53] (aktuell) – [Schneeflocke] sca
Zeile 7: Zeile 7:
  
 (*) Falls man lieber mit richtigem Python arbeiten möchte, kann man deren [[https://docs.python.org/3/library/turtle.html|Turtle-Module]] verwenden. (*) Falls man lieber mit richtigem Python arbeiten möchte, kann man deren [[https://docs.python.org/3/library/turtle.html|Turtle-Module]] verwenden.
-==== Wichtige Befehle ==== 
  
-TigerJython:+{{ :gf_informatik:snow.png?600 |}} 
 + 
 + 
 +==== Theorie ==== 
 + 
 +[[gf_informatik:programmieren_i_sca|TurtleGraphics Dossier (1M)]] 
 + 
 +++++Zusammenstellung wichtigste Befehle|
 <code python> <code python>
 from gturtle import * from gturtle import *
 +
 +Options.setPlaygroundSize(800,600) # Fenstergroesse veraendern
 +
 t = Turtle() # Turtle erstellen t = Turtle() # Turtle erstellen
  
Zeile 32: Zeile 41:
 t.left(45) # nach links drehen (Winkel angeben) t.left(45) # nach links drehen (Winkel angeben)
 t.right(45) # nach rechts drehen t.right(45) # nach rechts drehen
- 
- 
 </code> </code>
 +++++
  
 ==== Schneeflocke ==== ==== Schneeflocke ====
  
-   1. Wähle ein **Schneeflockenmuster** aus. Recherchiere im Internet, erfinde ein eigenes oder wähle eines der folgenden: {{ :gf_informatik:snowflakes.jpg?200 |}}+   1. Wähle ein **Schneeflockenmuster** aus. Recherchiere im Internet, erfinde ein eigenes oder wähle eines der folgenden: {{ :gf_informatik:snowflakes.jpg?400 |}} Falls du keine Lust auf Schneeflocken hast, kannst du auch einen einfachen Tannenbaum oder ein anderes weihnachtliches Bild zeichnen.\\ \\
    1. **Zeichne** nun eine Schneeflocke ins Zentrum des Bildschirms. Tipps:    1. **Zeichne** nun eine Schneeflocke ins Zentrum des Bildschirms. Tipps:
      1. Beginne mit `t.home()`, damit Turtle richtig ausgerichtet ist.       1. Beginne mit `t.home()`, damit Turtle richtig ausgerichtet ist. 
      1. Verwende **Schleifen** (while oder for) anstelle von Copy-Paste.      1. Verwende **Schleifen** (while oder for) anstelle von Copy-Paste.
      1. Verwende **Variablen** für Werte, die mehrfach benötigt werden.      1. Verwende **Variablen** für Werte, die mehrfach benötigt werden.
 +     1. Siehe **Theorie** oben.\\ \\
    1. Packe deinen Code vom letzten Punkt nun in eine **Funktion**. Dies erlaubt die, ganz viele Schneeflocken an verschiedenen Orten zu zeichnen:<WRAP>    1. Packe deinen Code vom letzten Punkt nun in eine **Funktion**. Dies erlaubt die, ganz viele Schneeflocken an verschiedenen Orten zu zeichnen:<WRAP>
 <code python> <code python>
-def schneeflocke(x,y):+def schneeflocke(x,y): # soll eine Schneeflocke, startend am Punkt (x,y) zeichnen
     t.home() # damit Turtle gerade nach oben schaut     t.home() # damit Turtle gerade nach oben schaut
     t.setPos(x,y) # setze Turtle an gewuenschte Startposition     t.setPos(x,y) # setze Turtle an gewuenschte Startposition
Zeile 63: Zeile 72:
 x = random.randint(-400,400) x = random.randint(-400,400)
 ... ...
 +</code></WRAP>
 +   1. **Optional:**
 +      1. Gib den Schneeflocken **verschiedene Farben**.
 +      1. Implementiere **verschiedene Formen**, z.B. mehrere verschiedene Schneeflocken.
 +      1. *Anspruchsvoll:* Generiere die Positionen der Schneeflocken **zufällig** und stelle sicher, dass es **keine Überlappungen** gibt.
 +
 +
 +<nodisp 2>
 +
 +++++Code sca|
 +
 +<code python>
 +from gturtle import *
 +import random
 +
 +colors = ["white","red","green","blue"]
 +
 +WIDTH = 1200
 +HEIGHT = 800
 +Options.setPlaygroundSize(WIDTH,HEIGHT)
 +t = Turtle()
 +t.setFillColor("black")
 +t.fill(0,0)
 +t.setPenColor("white")
 +t.setPenWidth(1)
 +t.hideTurtle()
 +
 +### dimensions
 +scale = 0.5
 +d = int(50 * scale)
 +d1 = int(15 * scale)
 +ang1 = 45
 +d2 = int(20 * scale)
 +d3 = int(15 * scale)
 +ang3 = 55
 +
 +def schneeflocke(x=0,y=0,color="white"):
 +    t.setPenColor(color)
 +    for i in range(6):
 +        t.home()
 +        t.setPos(x,y)
 +        t.left(60*i+30)
 +        t.forward(d)
 +        t.back(d1)
 +        t.left(ang1)
 +        t.forward(d1)
 +        t.back(d1)
 +        t.right(2*ang1)
 +        t.forward(d1)
 +        t.back(d1)
 +        t.left(ang1)
 +        t.back(d2)
 +    
 +        t.left(ang3)
 +        t.forward(d3)
 +        t.back(d3)
 +        t.right(2*ang3)
 +        t.forward(d3)
 +        t.back(d3)
 +        t.left(ang3)
 +
 +def get_nonoverlapping_positions(n=10,d_min=2,width=800,height=600):
 +    positions = []
 +    for i in range(n):
 +        while True:
 +            x = random.randint(-width//2,width//2)
 +            y = random.randint(-height//2,height//2)
 +            # list empty
 +            if len(positions) == 0:
 +                positions.append((x,y))
 +                break
 +            # check if point is far enough from other points
 +            too_close = False
 +            for (px,py) in positions:
 +                d = ((px-x)**2 + (py-y)**2)**0.5
 +                if d < d_min:
 +                    too_close = True
 +                    break
 +            if not too_close:
 +                positions.append((x,y))
 +                break
 +
 +    return positions
 +
 +positions = get_nonoverlapping_positions(n=120,d_min=70,width=WIDTH,height=HEIGHT)
 +
 +for x,y in positions:
 +    schneeflocke(x,y,random.choice(colors))
 +
 +#t.savePlayground("/Users/anschae/schneeflocken.png","png")
 +
 </code> </code>
-</WRAP> + 
-   1. **Optional:** Generiere die Positionen der Schneeflocken zufällig und stelle sicher, dass es **keine Überlappungen** gibt.+++++ 
 + 
 +</nodisp>
  • gf_informatik/christmas_art.1703000867.txt.gz
  • Zuletzt geändert: 2023-12-19 15:47
  • von sca