• PL
  • EN

Rysowanie przy pomocy pętli.

Wiesz już jak rysować kształty podstawowe przy pomocy pętli. Czas nauczyć się czegoś nowego. Czegoś co jeszcze bardziej skróci czas Twojego kodowania. Narysowanie pojedynczego sześciokąta nie powinno sprawić Tobie trudności.


for i in range(6):
    t.fd(80)
    tom.lt(360/6)


Czasami, gdy nie masz pewności o jaki kąt obrócic się aby powstał oczekiwany przez Ciebie wielokąt, wystarczy wykonać działanie matematyczne - podziel 3600 przez liczbę boków, które ma dany wielokąt. Oczywiście możesz też wpisać w nawiasie wynik takiego dzielenia. W przypadku sześciokąta to oczywiście 60.

Samodzielnie wzbogać swój kod, aby narysować dokładnie taki sam sześciokąt - czerwony kontór i niebieskie wypełnienie. Możesz użyć takich samych kolorów jak na powyższym rysunku: "#ff0033" oraz "#6565ff". Jeśli nie wiesz jak zastosować tak sposób kodowania kolorów, wróć do poprzedniej lekcji i dowiedz się jak to zrobić.

Pętla zagnieżdżona.

Aby narysować kilka sześciokątów obok siebie, trzebaby skopiować ten kod wiele razy. Na szczęście znamy pętle. Jeśli umieścisz pętlę w pętli. Dla lepszego zobrazowania, najpierw spójrzmy na to w formie bloczków, dobrze znanych Ci z młodszych lat.


for i in range(3):
    for i in range(6):
        t.fd(40)
        t.lt(60)
    t.pu()
    t.fd(100)
    t.pd()


Pierwsza pętla ma za zadanie 3 razy wykonać drugą pętlę, która narysuje sześciokąt i wykona skok. Zwróć uwagę, że w pythonie z żółwiem nie ma polecenia skocz(). Zamiast tego użyto poleceń, które z logicznego punktu widzenia sprawią, że żółw przeniesie się o 100px bez rysowania. Najpierw trzeba podnieść pisak, później przenieść się dalej, a następnie opuscić, żeby móc dalej rysować.

Spróbuj wykorzystać ten kod, aby narysować dokładnie taki sam zestaw sześciokątów w takim samym kolorze obramowania jak poprzednio, ale bez wypełnienia.

jeszcze więcej możliwości.

narysowanie kilku kształtów obok siebie nie stanowi już problemu. Zróbmy coś jeszcze ciekawszego. Traz dołożymy do tego samego kodu jeszcze tylko jedno polecenie - rt(36). Dodatkowo zmienimy ilość powtórzeń z 3 na 10. W ten sposób narysujemy 10 sześciokątów.
Aby cały rysunek zmieścił się w oknie, zmniejszymy też nieco długość boku sześciokąta.


for i in range(10):
    for i in range(6):
        t.fd(25)
        t.lt(60)
    t.pu()
    t.fd(50)
    t.pd()
    t.rt(36)


Pierwsza pętla ma za zadanie 10 razy wykonać drugą pętlę, która narysuje sześciokąt, wykona skok i skręci w prawo o 36 stopni. Wiesz dokładnie o jaki kąt należy się obrócić, by narysować 10 sześciokątów. Wystarczy, że wykonasz proste działanie matematyczne: 360 / 10 = 36

Drawing with a loop.

You already know how to draw basic shapes using loops. It's time to learn something new. Something that will further reduce your coding time. Drawing a single hexagon should not cause you any difficulties.


for i in range(6):
    t.fd(80)
    tom.lt(360/6)


Czasami, gdy nie masz pewności o jaki kąt obrócic się aby powstał oczekiwany przez Ciebie wielokąt, wystarczy wykonać działanie matematyczne - podziel 3600 przez liczbę boków, które ma dany wielokąt. Oczywiście możesz też wpisać w nawiasie wynik takiego dzielenia. W przypadku sześciokąta to oczywiście 60.

Samodzielnie wzbogać swój kod, aby narysować dokładnie taki sam sześciokąt - czerwony kontór i niebieskie wypełnienie. Możesz użyć takich samych kolorów jak na powyższym rysunku: "#ff0033" oraz "#6565ff". Jeśli nie wiesz jak zastosować tak sposób kodowania kolorów, wróć do poprzedniej lekcji i dowiedz się jak to zrobić.

A nested loop.

To draw more than one hexagon side by side, you would have to copy this code many times. Fortunately, we know loops. If you put a loop in a loop. For a better illustration, let's first look at it in block form, well familiar to you from your younger years.


for i in range(3):
    for i in range(6):
        t.fd(40)
        t.lt(60)
    t.pu()
    t.fd(100)
    t.pd()


The first loop is to execute the second loop 3 times, which will draw a hexagon and make a jump. Note, that in python with turtle there is no command jump(). Instead, commands were used that would logically point of view will make the turtle move 100px without drawing. First you have to raise the pen, then move further, and then lower it to continue drawing.

Try using this code, but without filling.

Still more possibilities.

Drawing several shapes side by side is no longer a problem. Let's do something even more interesting. This time we will add just one more command to the same code - rt(36). In addition we'll change the number of repeats from 3 to 10. This way we'll draw 10 hexagons.
To make the whole drawing fit in the window, we will also slightly reduce the side length of the hexagon.


for i in range(10):
    for i in range(6):
        t.fd(25)
        t.lt(60)
    t.pu()
    t.fd(50)
    t.pd()
    t.rt(36)


The first loop is to make the second loop 10 times, which will draw a hexagon, make a jump and turn to the right by 36 degrees. You know exactly what angle to turn to draw 10 hexagons. All you have to do is perform a simple mathematical operation:
360 / 10 = 36