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()
