Żółwik - przykładowe programy

Żółwik - przykładowe programy
Photo by Miriam Pereira / Unsplash

Moduł turtle jest świetnym narzędziem do  ćwiczenia pętli - widzimy na ekranie co żółwik robi, przez co łatwiej nam analizować błędy.

Poniżej kilka przykładowych programów z opisami.

Kwadrat

import turtle

zolwik = turtle.Turtle()
zolwik.speed(1)
zolwik.shape("turtle")

# kwadrat ma 4 boki tej samej dlugosci
# tym samym mozemy przy rysowaniu
# 4 x powtorzyc przemieszcenie sie do przodu
# i skret w lewo / prawo

for _ in range(4):
    zolwik.forward(80)
    zolwik.right(90)

zolwik.hideturtle()
turtle.exitonclick()

Wielokąty

Zasadę rysowania kwadratu możemy uogólnić tak żebyśmy byli w stanie narysować właściwie dowolny wielokąt foremny (np. hexa).
Wystarczy że wykonamy tyle powtórzeń ile mamy ścianek i skręcimy o odpowiedni kąt (360/ilość ścianek, czyli 60 dla hexa).

import turtle

zolwik = turtle.Turtle()
zolwik.speed(1)
zolwik.shape("turtle")

ilosc_scianek = 6
skret = 360 / ilosc_scianek

for _ in range(ilosc_scianek):
    zolwik.forward(80)
    zolwik.right(skret)

zolwik.hideturtle()
turtle.exitonclick()

Rozeta

Rysując prostą rozetę wystarczy, że powtórzymy rysowanie okręgu odpowiednią ilość razy, po czym obrócimy żółwika o odpowiedni kąt.

import turtle

zolwik = turtle.Turtle()
zolwik.speed(6)
zolwik.shape("turtle")

for _ in range(6):
    zolwik.circle(80)
    zolwik.left(60)

turtle.exitonclick()

Krzyżyk

Tu ponownie musimy coś powtórzyć 4 razy - każde ramię krzyżyka wymaga takich samych operacji.
Ale zwóćcie uwagę, że w każdym z nich też są powtórzone operacje - rysujemy niepełny kwadrat. Stąd też w z 4 pętli od ramion będziemy uruchamiali drugą, wewnętrzną pętlę.

import turtle

zolwik = turtle.Turtle()
zolwik.speed(1)
zolwik.shape("turtle")


for x in range(4):
    for y in range(2):
        zolwik.forward(80)
        zolwik.right(90)
    zolwik.forward(80)
    zolwik.left(90)

turtle.exitonclick()

Słupki

Z podobną sytuacją zetkniemy się rysując słupki.

import turtle

zolwik = turtle.Turtle()
zolwik.speed(1)
zolwik.shape("turtle")

ilosc_slupkow = 4

for i in range(ilosc_slupkow):
    for _ in range(2):
        zolwik.forward(80)
        zolwik.left(90)
        zolwik.forward(80 * (i + 1))
        zolwik.left(90)
    zolwik.penup()
    zolwik.forward(80)
    zolwik.pendown()

turtle.exitonclick()

W powyższym przykładzie .penup() i .pendown() to kosmetyka - nie chcę żeby żółwik rysował kilka razy po podstawie.

Kwadraty w kwadratach

Ponownie mamy tutaj sytuację gdy wykonujuemy pętlę w pętli. Pierwsza odpowiada za powtórzenie rysowania kwadratu 8 razy.

Druga za samo rysowanie kwadratu (bo już wiemy, że boki kwadratu możemy narysować z pomocą pętli).
Dzieje się tu jeszcze jedna ciekawa rzecz - po każdym wykonaniu pętli wewnętrznej (tej od rysowania kwadratu) zwiększamy zmienną rozmiar - przez co kolejne kwadraty są większe.

import turtle

zolwik = turtle.Turtle()
zolwik.speed(8)
zolwik.shape("turtle")

rozmiar = 80

for x in range(8):
    for y in range(4):
        zolwik.forward(rozmiar)
        zolwik.left(90)
    rozmiar += 20

turtle.exitonclick()