Riešenie úloh 11. cvičenia


  1. Riešenie:

    import turtle
    import random
    
    def bodka(velkost, farba):
        t.pensize(velkost)
        t.pencolor(farba)
        t.fd(0)
    
    turtle.delay(0)
    t = turtle.Turtle()
    
    for i in range(100):
        t.pu()
        t.setpos(random.randrange(-300, 300), random.randrange(-300, 300))
        t.pd()
        if random.randrange(3) == 0:
            bodka(50, 'red')
            #t.dot(50, 'red')
        else:
            bodka(30, 'blue')
            #t.dot(30, 'blue')
    

  1. Riešenie:

    import turtle
    
    def slnko(pocet, velkost):
        t.pencolor('gold')
        t.pensize(10)
        for i in range(pocet):
            t.fd(velkost)
            t.fd(-velkost)
            t.rt(360 / pocet)
        t.dot(velkost)
    
    turtle.delay(0)
    t = turtle.Turtle()
    
    slnko(12, 100)
    

  1. Riešenie:

    import turtle
    
    def terc(n):
        farba1, farba2 = 'blue', 'yellow'
        for i in reversed(range(1, n + 1)):
            t.dot(i * 15, farba1)
            farba1, farba2 = farba2, farba1
    
    turtle.delay(0)
    t = turtle.Turtle()
    
    terc(40)
    

  1. Riešenie:

    import turtle
    import random
    
    def strom(kmen, koruna):
        t.lt(90)
        t.pensize(15)
        t.pencolor('brown')
        t.fd(kmen)
        t.pensize(40)
        t.pencolor('green')
        t.fd(koruna)
        t.pu()
        t.bk(kmen+koruna)
        t.pd()
        t.rt(90)
    
    turtle.delay(0)
    t = turtle.Turtle()
    t.pu()
    t.setpos(-250, 0)
    t.pd()
    for i in range(8):
        strom(random.randint(30, 60), random.randint(10, 40))
        t.pu()
        t.fd(50)
        t.pd()
    

  1. Riešenie:

    import turtle
    import random
    
    def stvorec(velkost):
        t.fillcolor(f'#{random.randrange(256**3):06x}')
        t.begin_fill()
        for i in range(4):
            t.fd(velkost)
            t.lt(90)
        t.end_fill()
        t.fd(velkost)
    
    turtle.delay(0)
    t = turtle.Turtle()
    
    for i in range(10):
        stvorec(random.randint(20, 50))
    

  1. Riešenie:

    import turtle
    
    def kosostvorec(velkost, farba):
        t.fillcolor(farba)
        t.begin_fill()
        for i in range(2):
            t.fd(velkost)
            t.rt(45)
            t.fd(velkost)
            t.rt(135)
        t.end_fill()
    
    turtle.delay(0)
    t = turtle.Turtle()
    for i in range(8):
        kosostvorec(100, ('tan', 'tomato')[i % 2])
        t.lt(45)
    

  1. Riešenie:

    import turtle
    
    def domcek(d):
        for i in range(4):
            t.fd(d)
            t.lt(90)
        t.lt(45)
        d2 = d * 2**0.5
        t.fd(d2)
        t.lt(90)
        t.fd(d2/2)
        t.lt(90)
        t.fd(d2/2)
        t.lt(90)
        t.fd(d2)
        t.lt(45)
    
    turtle.delay(0)
    t = turtle.Turtle()
    t.rt(5)
    domcek(100)
    domcek(50)
    domcek(80)
    

  1. Riešenie:

    import turtle
    import random
    
    def kocka(d):
        t.fillcolor(f'#{random.randrange(256**3):06x}')
        t.begin_fill()
        for i in range(4):
            t.fd(d)
            t.rt(90)
        t.end_fill()
        t.fillcolor(f'#{random.randrange(256**3):06x}')
        t.begin_fill()
        t.lt(45)
        for i in range(2):
            t.fd(d/2)
            t.rt(45)
            t.fd(d)
            t.rt(135)
        t.end_fill()
        t.fillcolor(f'#{random.randrange(256**3):06x}')
        t.begin_fill()
        t.rt(45)
        t.fd(d)
        t.lt(45)
        for i in range(2):
            t.fd(d/2)
            t.rt(135)
            t.fd(d)
            t.rt(45)
        t.end_fill()
        t.rt(45)
        t.fd(-d)
    
    turtle.delay(0)
    t = turtle.Turtle()
    for i in range(4):
        kocka(50)
        t.pu()
        t.fd(75)
        t.pd()
    

  1. Riešenie:

    import turtle
    
    def polkruznica(velkost, smer):
        if smer:
            uhol = 10
        else:
            uhol = -10
        for i in range(18):
            t.fd(velkost)
            t.lt(uhol)
    
    turtle.delay(0)
    t = turtle.Turtle()
    
    t.lt(90)
    for i in range(10):
        polkruznica(3, i % 2)
    

  1. Riešenie:

    import turtle
    import random
    
    def polkruh(velkost, smer):
        if smer:
            uhol = 10
        else:
            uhol = -10
        t.fillcolor(f'#{random.randrange(256**3):06x}')
        t.begin_fill()
        for i in range(18):
            t.fd(velkost)
            t.lt(uhol)
        t.end_fill()
    
    turtle.delay(0)
    t = turtle.Turtle()
    
    t.lt(90)
    for i in range(10):
        polkruh(3, i % 2)
    for i in range(10):
        polkruh(3, i % 2 == 0)
    

  1. Riešenie:

    import turtle
    import random
    
    def bodky(n, m):
        t.pencolor('salmon')
        t.pu()
        for i in range(n):
            for j in range(m):
                t.dot(random.randint(20, 35))
                t.fd(30)
            t.fd(-m * 30)
            t.lt(90)
            t.fd(30)
            t.rt(90)
    
    turtle.delay(0)
    t = turtle.Turtle()
    
    bodky(10, 15)
    

  1. Riešenie:

    import turtle
    import random
    
    def stvorec(dlzka):
        t.fillcolor(f'#{random.randrange(256**3):06x}')
        t.begin_fill()
        for i in range(4):
            t.fd(dlzka)
            t.rt(90)
        t.end_fill()
    
    def stvorce(dlzka, krok):
        t.pu()
        while dlzka > 0:
            stvorec(dlzka)
            t.fd(krok / 2)
            t.rt(90)
            t.fd(krok / 2)
            t.lt(90)
            dlzka -= krok
    
    turtle.delay(0)
    t = turtle.Turtle()
    
    stvorce(200, 25)
    

  1. Riešenie:

    import turtle
    import random
    
    def stvorec(dlzka):
        t.fillcolor(f'#{random.randrange(256**3):06x}')
        t.begin_fill()
        for i in range(4):
            t.fd(dlzka)
            t.rt(90)
        t.end_fill()
    
    def veza(dlzka, krok):
        t.pu()
        while dlzka > 0:
            stvorec(dlzka)
            dlzka -= krok
            t.fd(krok / 2)
            t.lt(90)
            t.fd(dlzka)
            t.rt(90)
    
    turtle.delay(0)
    t = turtle.Turtle()
    
    veza(120, 30)
    

  1. Riešenie:

    import turtle
    
    def dom(d):
        for i in range(4):
            t.fd(d)
            t.rt(90)
        t.lt(60)
        t.fd(d)
        t.rt(120)
        t.fd(d)
    
    def dom1(d):
        for i in range(4):
            prerusovana_ciara(d)
            t.rt(90)
        t.lt(60)
        prerusovana_ciara(d)
        t.rt(120)
        prerusovana_ciara(d)
    
    def dom2(d):
        for i in range(4):
            cikcakova_ciara(d)
            t.rt(90)
        t.lt(60)
        cikcakova_ciara(d)
        t.rt(120)
        cikcakova_ciara(d)
    
    def prerusovana_ciara(d):
        for i in range(11):
            if i % 2 == 0:
                t.pd()
            else:
                t.pu()
            t.fd(d / 11)
    
    def cikcakova_ciara(d):
        for i in range(d // 5):
            t.lt(60)
            t.fd(5)
            t.rt(120)
            t.fd(5)
            t.lt(60)
    
    turtle.delay(0)
    t = turtle.Turtle()
    
    #dom(100)
    dom1(100)
    t.pu()
    t.lt(60)
    t.fd(30)
    t.pd()
    dom2(100)
    

  1. Riešenie:

    import turtle
    import random
    from math import sin, cos, radians
    
    def stvorec(velkost):
        t.fillcolor(f'#{random.randrange(256**3):06x}')
        t.begin_fill()
        for i in range(4):
            t.fd(velkost)
            t.rt(90)
        t.end_fill()
    
    def pytagoras(prepona, uhol):
        odvesna1 = prepona * cos(radians(uhol))
        odvesna2 = prepona * sin(radians(uhol))
        stvorec(prepona)
        t.lt(uhol + 90)
        stvorec(odvesna1)
        t.rt(90)
        t.fd(odvesna1)
        stvorec(odvesna2)
        print('stvorec nad preponou =', prepona**2)
        print('stvorec nad 1. odvesnou =', odvesna1**2)
        print('stvorec nad 2. odvesnou =', odvesna2**2)
        print('sucet =', odvesna1**2 + odvesna2**2)
    
    turtle.delay(0)
    t = turtle.Turtle()
    
    pytagoras(150, 17)
    

  1. Riešenie:

    import turtle
    import random
    from math import sin, radians
    
    def troj(rameno, uhol):
        zakladna = 2 * rameno * sin(radians(uhol / 2))
        t.fillcolor(f'#{random.randrange(256**3):06x}')
        t.begin_fill()
        t.fd(rameno)
        t.rt(90 +  uhol/2)
        t.fd(zakladna)
        t.rt(90 +  uhol/2)
        t.fd(rameno)
        t.rt(180 - uhol)
        t.end_fill()
    
    turtle.delay(0)
    t = turtle.Turtle()
    
    for i in range(36):
        troj(300, 10)
        t.rt(10)
    

  1. Riešenie:

    import turtle
    import math
    
    def kruznica(r):
        d = math.pi * r / 18
        t.pu()
        t.fd(r)
        t.rt(90)
        t.fd(-d / 2)
        t.pd()
        for i in range(36):
            t.fd(d)
            t.rt(10)
        t.pu()
        t.fd(d / 2)
        t.lt(90)
        t.fd(-r)
        t.pd()
    
    turtle.delay(0)
    t = turtle.Turtle()
    
    t.dot(200, 'yellow')
    kruznica(100)
    t.pu()
    t.fd(120)
    t.lt(90)
    t.fd(100)
    t.rt(37)
    t.pd()
    t.dot(140, 'gold')
    kruznica(70)
    

  1. Riešenie:

    import turtle
    import random
    
    def prechadzka(n):
        t.pu()
        for i in range(n):
            t.seth(random.randint(0, 359))
            t.fd(20)
            if t.distance(0, 0) > 70:
                t.bk(20)
            elif t.distance(0, 0) > 50:
                t.dot(5, 'red')
            else:
                t.dot(5, 'blue')
    
    turtle.delay(0)
    t = turtle.Turtle()
    
    turtle.tracer(0)
    prechadzka(2000)
    turtle.tracer(1)
    

  1. Riešenie:

    import turtle
    import random
    
    def vyrob(n, poz):
        zoz = []
    
        for i in range(n):
            t = turtle.Turtle()
            t.pu()
            t.setpos(random.randint(-300, 300), random.randint(-300, 300))
            t.pencolor(f'#{random.randrange(256**3):06x}')
            t.pensize(5)
            t.setheading(t.towards(poz))
            t.pd()
            zoz.append(t)
        return zoz
    
    def smerom(zoznam, poz):
        for i in range(50):
            for t in zoznam:
                vzd = t.distance(poz)
                t.fd(vzd / 10)
    
    turtle.delay(0)
    t = turtle.Turtle()
    
    pp = (0, -300)
    zoz = vyrob(100, pp)
    smerom(zoz, pp)