Files
inf-kswo/RandomTurtle/Huhn.py
Janis Hutz ede0ee318b Format
There really is no hope of making this code even half-way decent without
spending the time to rewrite them all properly. Don't want to do any of
that
2025-11-03 17:08:35 +01:00

92 lines
2.4 KiB
Python
Executable File

import turtle
import math
import random
turtle.title("Huhn")
sideay = int(turtle.numinput("Huhn", "Punkt A, cord y", -100))
sideax = int(turtle.numinput("Huhn", "Punkt A, cord x", 200))
sideby = int(turtle.numinput("Huhn", "Punkt B, cord y", -100))
sidebx = int(turtle.numinput("Huhn", "Punkt B, cord x", -200))
sidecy = int(turtle.numinput("Huhn", "Punkt C, cord y", 200))
sidecx = int(turtle.numinput("Huhn", "Punkt C, cord x", 0))
anzahl_durchgaenge = int(
turtle.numinput("Huhn", "Anzahl Durchgänge", 10, minval=1, maxval=100)
)
stiftdicke = int(turtle.numinput("Huhn", "Stiftdicke", 2, minval=1, maxval=50))
durchgang = 0
turtle.speed(0)
cage = turtle.Turtle()
huhn = turtle.Turtle()
cage.ht()
huhn.pu()
huhn.ht()
def motion(sideay, sideax, sideby, sidebx, sidecy, sidecx, stiftdicke):
edge = random.randint(1, 3)
if edge == 1:
x = sideax
y = sideay
else:
if edge == 2:
x = sidebx
y = sideby
else:
x = sidecx
y = sidecy
huhn.setheading(huhn.towards(x, y))
nextpos = (math.sqrt((x - huhn.xcor()) ** 2 + (y - huhn.ycor()) ** 2)) / 2
huhn.fd(nextpos)
huhn.pd()
huhn.dot(stiftdicke)
huhn.pu()
def motion_pre(sideay, sideax, sideby, sidebx, sidecy, sidecx, stiftdicke):
edge = random.randint(1, 3)
if edge == 1:
x = sideax
y = sideay
else:
if edge == 2:
x = sidebx
y = sideby
else:
x = sidecx
y = sidecy
huhn.setheading(huhn.towards(x, y))
nextpos = (math.sqrt((x - huhn.xcor()) ** 2 + (y - huhn.ycor()) ** 2)) / 2
huhn.fd(nextpos)
def cagedraw(sideax, sideay, sidebx, sideby, sidecx, sidecy):
cage.pu()
cage.setpos(sideax, sideay)
cage.pd()
cage.setpos(sidebx, sideby)
cage.setpos(sidecx, sidecy)
cage.setpos(sideax, sideay)
print("Started drawing Triangle")
cagedraw(sideax, sideay, sidebx, sideby, sidecx, sidecy)
print("Started mapping... Printing Points of Tranche:")
turtle.tracer(1000)
print("initialisation")
for i in range(50):
motion_pre(sideay, sideax, sideby, sidebx, sidecy, sidecx, stiftdicke)
for i in range(anzahl_durchgaenge):
for i in range(1000):
motion(sideay, sideax, sideby, sidebx, sidecy, sidecx, stiftdicke)
durchgang += 1
print(durchgang, "/", anzahl_durchgaenge)
print("done, click to exit")
turtle.exitonclick()