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-21 21:19] scagf_informatik:christmas_art [2023-12-22 08:53] (aktuell) – [Schneeflocke] sca
Zeile 18: Zeile 18:
 <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 43: Zeile 46:
 ==== Schneeflocke ==== ==== Schneeflocke ====
  
-   1. Wähle ein **Schneeflockenmuster** aus. Recherchiere im Internet, erfinde ein eigenes oder wähle eines der folgenden: {{ :gf_informatik:snowflakes.jpg?400 |}}+   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. 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>
Zeile 69: 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:** Gib den Schneeflocken verschiedene Farben. +++++ 
-   1. **Optional:** Generiere die Positionen der Schneeflocken zufällig und stelle sicher, dass es **keine Überlappungen** gibt.+ 
 +</nodisp>
  • gf_informatik/christmas_art.1703193590.txt.gz
  • Zuletzt geändert: 2023-12-21 21:19
  • von sca