Rysowanie w Turtle - Kwadrat i Prostokąt
Kwadrat
(ang: square)
Aby narysować kwadrat należy cztery razy powtórzyć: narysuj bok, skręć w prawo (lub lewo) o 90 stopni.
Podczas rysowania żółw w sumie wykonuje obrót o 360 stopni a ponieważ robi 4 skręty więc każdy z nich ma 360/4 = 90 stopni.
import turtle turtle.forward(300) turtle.left(90) turtle.forward(300) turtle.left(90) turtle.forward(300) turtle.left(90) turtle.forward(300) turtle.left(90) turtle.mainloop()

W powyższym kodzie ostatni skręt w lewo właściwie nie jest potrzebny ale dzięki niemu na koniec rysowania żółw jest zwrócony w tą samą stronę jak był przed rysowaniem. Ułatwia to planowanie kolejnej figury.
Z powyższego widać też, że można to łatwo zapisać z użyciem for.
import turtle for _ in range(4): turtle.forward(200) turtle.left(90) turtle.mainloop()
Można z tego kodu zrobić funkcję aby narysować wiele kwadratów - np. różnej wielkości.
import turtle def kwadrat(bok): for _ in range(4): turtle.forward(bok) turtle.left(90) kwadrat(100) kwadrat(200) kwadrat(300) turtle.mainloop()

Można to zrobić także z użyciem petli for
import turtle def kwadrat(bok): for _ in range(4): turtle.forward(bok) turtle.left(90) for x in range(1, 4): kwadrat(x*100) turtle.mainloop()
lub wykorzystując możliwości range(początek, koniec, krok) pamiętając, że koniec nie wchodzi w zakres zwracanych wartości więc jeśli chcemy otrzymać 300 to koniec musi być 301 (lub większy)
import turtle def kwadrat(bok): for _ in range(4): turtle.forward(bok) turtle.left(90) for bok in range(100, 301, 100): kwadrat(bok) turtle.mainloop()
Można oczywiście zastosować też listę (lub tuplę/krotkę) zamiast range() i wtedy wartości mogą być bardziej "losowe"
import turtle def kwadrat(bok): for _ in range(4): turtle.forward(bok) turtle.left(90) for bok in [100, 200, 300]: kwadrat(bok) turtle.mainloop()
Jak widać użycie for pozwala więc łatwo zmieniać ilość.
---
Zamiast zmieniać wielkość kwadrata można też obracać żółwia przed narysowanie każdej z figur.
import turtle def kwadrat(bok): for _ in range(4): turtle.forward(bok) turtle.left(90) kwadrat(100) turtle.left(120) kwadrat(100) turtle.left(120) kwadrat(100) turtle.left(120) turtle.mainloop()

Tu ponownie widać, że kod się powtarza więc można zastosować pętlę for
import turtle def kwadrat(bok): for _ in range(4): turtle.forward(bok) turtle.left(90) for _ in range(3): kwadrat(100) turtle.left(120) turtle.mainloop()
Można też zmienić ilość powtórzeń i automatycznie wyliczać kąt
import turtle def kwadrat(bok): for _ in range(4): turtle.forward(bok) turtle.left(90) bok = 100 ilosc = 4 kat = 360/ilosc for _ in range(ilosc): kwadrat(bok) turtle.left(kat) turtle.mainloop()






Zamiast zmieniać kąt można też przesuwać żółwia przed narysowaniem kolejnego kwadrata.
import turtle def kwadrat(bok): for _ in range(4): turtle.forward(bok) turtle.left(90) bok = 100 ilosc = 4 for _ in range(ilosc): kwadrat(bok) turtle.forward(bok) turtle.mainloop()

Można też rysować kilka linii kwadratów - jedna nad drugą - aby stworzyć siatkę.
import turtle def kwadrat(bok): for _ in range(4): turtle.forward(bok) turtle.left(90) bok = 100 ilosc = 3 nawrot = 180 for _ in range(3): # rysowanie linii kwadratów for _ in range(ilosc): kwadrat(bok) turtle.forward(bok) # powrót na początek linii turtle.backward(ilosc*bok) # przejście do kolejnej linii turtle.left(90) turtle.forward(bok) turtle.right(90) turtle.mainloop()

Każda linia może mieć inną ilość kwadratów i tworzyć piramidę. W tym przykładzie w kwadratach skręcam w prawo zamiast w lewo.
import turtle def kwadrat(bok): for _ in range(4): turtle.forward(bok) turtle.right(90) bok = 100 for ilosc in range(1, 4): # każdy wiersz przesunięty o pół kwadratu względem poprzedniego wiersza turtle.backward(bok//2) # rysowanie linii kwadratów for _ in range(ilosc): kwadrat(bok) turtle.forward(bok) # cofniecie na początek linii turtle.backward(bok*ilosc) # przejście do niższej linii turtle.right(90) turtle.forward(bok) turtle.left(90) turtle.mainloop()

---
Można też połączyć rysowanie w linii i skręcanie
import turtle def kwadrat(bok): for _ in range(4): turtle.forward(bok) turtle.left(90) bok = 100 ilosc = 3 for _ in range(4): for _ in range(ilosc): kwadrat(bok) turtle.forward(bok) turtle.right(90) turtle.mainloop()

import turtle def kwadrat(bok): for _ in range(4): turtle.forward(bok) turtle.left(90) bok = 100 ilosc = 3 for _ in range(3): for _ in range(ilosc): kwadrat(bok) turtle.forward(bok) turtle.right(120) turtle.mainloop()

import turtle def kwadrat(bok): for _ in range(4): turtle.forward(bok) turtle.left(90) bok = 100 ilosc = 4 kat = 360/ilosc for _ in range(ilosc): kwadrat(bok) turtle.forward(bok) turtle.right(kat) turtle.mainloop()
ilosc = 4

ilosc = 5

Można też skręcać w lewo
import turtle def kwadrat(bok): for _ in range(4): turtle.forward(bok) turtle.left(90) bok = 100 ilosc = 5 kat = 360/ilosc for _ in range(ilosc): kwadrat(bok) turtle.forward(bok) turtle.left(kat) turtle.mainloop()
ilosc = 5

ilosc = 10

Pod dodaniu kreski do kwadrata mamy flagę
import turtle def kwadrat(bok): for _ in range(4): turtle.forward(bok) turtle.left(90) def flaga(bok, ): turtle.forward(100) # narysuj patyk kwadrat(bok) # narysuj kwadrat flagi turtle.backward(100) # wycofaj się na początkowe miejsce ilosc = 12 kat = 360/ilosc for _ in range(ilosc): flaga(50) turtle.left(kat) turtle.mainloop()

Można też zmieniać wielkość flagi
import turtle def kwadrat(bok): for _ in range(4): turtle.forward(bok) turtle.left(90) def flaga(bok, ): turtle.forward(100) # narysuj tyczkę kwadrat(bok) # narysuj kwadrat flagi turtle.backward(100) # wycofaj się na początkowe miejsce ilosc = 12 kat = 360/ilosc for x in range(ilosc): flaga(10 * x) turtle.left(kat) turtle.mainloop()

itd.
Prostokąt
(ang: rectangle)
Aby narysować prostokąt należy powtórzyć dwa razy: narysuj krótszy bok, skręć w prawo (lub lewo) o 90 stopni, narysuj dłuższy bok.
Podczas rysowania żółw w sumie wykonuje obrót o 360 stopni a ponieważ robi 4 skręty więc każdy z nich ma 360/4 = 90 stopni.
import turtle for _ in range(2): turtle.forward(300) turtle.left(90) turtle.forward(150) turtle.left(90) turtle.mainloop()

Można to zamienić na funkcję
import turtle def prostokat(a, b): for _ in range(2): turtle.forward(a) turtle.left(90) turtle.forward(b) turtle.left(90) prostokat(300, 150) turtle.mainloop()
Teraz można narysować wiele prostokątów z obracaniem
import turtle def prostokat(a, b): for _ in range(2): turtle.forward(a) turtle.left(90) turtle.forward(b) turtle.left(90) a = 150 b = 100 ilosc = 36 kat = 360/ilosc for _ in range(ilosc): prostokat(300, 150) turtle.left(kat) turtle.mainloop()
Ilosc = 5

Ilosc = 36

Z prostokątów można stworzyć wzorek
import turtle def prostokat(a, b): for _ in range(2): turtle.forward(a) turtle.left(90) turtle.forward(b) turtle.left(90) a = 200 b = 100 for _ in range(4): prostokat(a, b) turtle.forward(a-b) turtle.right(90) turtle.mainloop()

Można też dodać odstępy między prostokątami
import turtle def prostokat(a, b): for _ in range(2): turtle.forward(a) turtle.left(90) turtle.forward(b) turtle.left(90) a = 200 b = 100 for _ in range(4): prostokat(a, b) turtle.forward(a-b) turtle.right(90) turtle.penup() turtle.forward(30) turtle.pendown() turtle.mainloop()

Podobne wpisy
Starsze:
- Rysowanie kwiatka z użyciem żółwika w Pythonie
- Rysowanie kolorowego okręgu z Turtle
- Rysowanie planu mieszkania za pomocą Turtle w Pythonie
Nowsze:
Wpisy jeszcze nie gotowe:
Galeria
Figury
- Rysowanie z Turtle - Okrąg, Łuk, Koło i Elipsa
- Rysowanie z Turtle - Romb, Trapez i Gwiazda
- Rysowanie z Turtle - Wielobok
- Rysowanie z Turtle - Schodki
- Rysowanie z Turtle - Kwadrat, okrąg i inne figury
- Rysowanie z Turtle - Inne
Tkinter
- Rysowanie z Turtle - Wprowadzanie danych z textinput i numinput
- Rysowanie z Turtle - Płótno czyli Canvas i inne obiekty z Tkinter
- Rysowanie z Turtle - Wait On Click
Internet
Inne
Spis - powyższe linki na osobnej stronie
