1 hafta önce gözüme carpan tatlı bir Python modülünden bahsetemek istiyorum sizlere. Kodlamak oldukça eğlenceli geldi bana sizlerele paylaşayım dedim.
Turtle Nedir?
Turtle Graphics, 1966'da Wally Feurzig ve Seymour Papert tarafından geliştirilen orijinal Logo programlama dilinin bir parçasıydı.
Ekranda (0,0) olan kordinatında olan bir kaplumbağa düşünelim. Bu kaplumbağaya istediğimizi yaptırabiliriz. Bir yere taşıyabilir, haraket ettirebilir, haraket ederken arkasında iz bırakabilirz.
Bi deneme yapalım:
Hiçbir ek modul kurmanıza gerek yok. Turtle, Python'un standart kütüphanesinde bulunur.
Sonuç:
Turtle, Tkinter kullanmaktadır. Hem OP(object-oriented) hem de PO(procedure-oriented) desteklemektedir.
Nasıl Kullanılır?
Bir turtle objesi oluşturmanız gerekmekte;
Kodu çalıştırınca ekranın ortasında - (0,0) noltası - bir ok işaretini göreceksiniz.

Ekranda bir cizgi cizelim.

Bu komut ekranda olan oku döndüremeye yarar. Parametre olarak açı değerini alır .right() sağa, .left() ise sola dödürecektir.


Bu method, daire cizemize yarar. radius, darenin capını extent ise dairenin derecesini alır. Varsayılan olarak 360.


Bu method size okun şuanki konumu tuple şeklinde verir - (x, y) -
İşte size kalp çizen kod
]

Burda göremediğimiz birkaç method var:
.speed() methodu cizim hızını belirler:
İmleci x ve y ye göre konumlandırır.
Turtle'yi bir kalem gibi düşünürsek anlamlı bir ismi vardır. Kalemi kaldırmamıza ve cizimi durdurmamıza yarar.
Kalemi tekrar cizim konumuna getirir. Genelde .penup() ile .pendown() arasında imlecin konumu belirlenir.
İnternette bulduğum çalışmalar.(Alıntıdır)
Turtle modulu tabikide bunlarla sınırlı değil. En güzel şekilde kendi dökumantasyonu açıklamış.
docs.python.org/3.3/library/turtle.html
Turtle Nedir?
Turtle Graphics, 1966'da Wally Feurzig ve Seymour Papert tarafından geliştirilen orijinal Logo programlama dilinin bir parçasıydı.
Ekranda (0,0) olan kordinatında olan bir kaplumbağa düşünelim. Bu kaplumbağaya istediğimizi yaptırabiliriz. Bir yere taşıyabilir, haraket ettirebilir, haraket ederken arkasında iz bırakabilirz.
Bi deneme yapalım:
Kod:
[font=monospace][color=#008000][b]from[/b][/color] [color=#0000FF][b]turtle[/b][/color] [color=#008000][b]import[/b][/color] [color=#666666]*[/color]
color([color=#BA2121]'red'[/color], [color=#BA2121]'yellow'[/color])
begin_fill()
[color=#008000][b]while[/b][/color] [color=#008000]True[/color]:
forward([color=#666666]200[/color])
left([color=#666666]170[/color])
[color=#008000][b]if[/b][/color] [color=#008000]abs[/color](pos()) [color=#666666]<[/color] [color=#666666]1[/color]:
[color=#008000][b]break[/b][/color]
end_fill()
done()
[/font]
Hiçbir ek modul kurmanıza gerek yok. Turtle, Python'un standart kütüphanesinde bulunur.
Sonuç:
Turtle, Tkinter kullanmaktadır. Hem OP(object-oriented) hem de PO(procedure-oriented) desteklemektedir.
Nasıl Kullanılır?
Bir turtle objesi oluşturmanız gerekmekte;
Kod:
[font=monospace][color=#008000][b]import[/b][/color] [color=#0000FF][b]turtle[/b][/color]
tt [color=#666666]=[/color] turtle[color=#666666].[/color]Turtle()
turtle[color=#666666].[/color]done() [color=#408080][i]# bu kod Tkinter penceresinin açık kalmasını sağlayacak[/i][/color]
[/font]
Kodu çalıştırınca ekranın ortasında - (0,0) noltası - bir ok işaretini göreceksiniz.

Ekranda bir cizgi cizelim.
Kod:
[SIZE="2"][COLOR="SandyBrown"].fd(distance)
.forward(distance)[/COLOR][/SIZE]
[INDENT][I][B]parametreler: distance -> int veya float[/B][/I][/INDENT]
Kod:
[font=monospace][color=#008000][b]import[/b][/color] [color=#0000FF][b]turtle[/b][/color]
tt [color=#666666]=[/color] turtle[color=#666666].[/color]Turtle()
tt[color=#666666].[/color]forward([color=#666666]100[/color]) [color=#408080][i]# okun yününe göre 100 birim ilerleyecektir.[/i][/color]
turtle[color=#666666].[/color]done() [color=#408080][i]# bu kod Tkinter penceresinin açık kalmasını sağlayacak[/i][/color]
[/font]

Kod:
.[COLOR="Orange"]rigt(angle)
.rt(angle)[/COLOR]
[INDENT][U][I]parametreler: angle -> int veya float[/I][/U][/INDENT]
Bu komut ekranda olan oku döndüremeye yarar. Parametre olarak açı değerini alır .right() sağa, .left() ise sola dödürecektir.
Kod:
[font=monospace][color=#008000][b]import[/b][/color] [color=#0000FF][b]turtle[/b][/color]
tt [color=#666666]=[/color] turtle[color=#666666].[/color]Turtle()
tt[color=#666666].[/color]forward([color=#666666]100[/color]) [color=#408080][i]# okun yününe göre 100 birim ilerleyecektir.[/i][/color]
tt[color=#666666].[/color]right([color=#666666]90[/color]) [color=#408080][i]#sağa dogru 90 derece döndürdük[/i][/color]
tt[color=#666666].[/color]forward([color=#666666]100[/color]) [color=#408080][i]# 100 birim ilerlemesini söyledik[/i][/color]
turtle[color=#666666].[/color]done() [color=#408080][i]# bu kod Tkinter penceresinin açık kalmasını sağlayacak[/i][/color]
[/font]

Kod:
[font=monospace][color=#008000][b]import[/b][/color] [color=#0000FF][b]turtle[/b][/color]
tt [color=#666666]=[/color] turtle[color=#666666].[/color]Turtle()
[color=#008000][b]for[/b][/color] _ [color=#AA22FF][b]in[/b][/color] [color=#008000]range[/color]([color=#666666]4[/color]):
tt[color=#666666].[/color]forward([color=#666666]100[/color])
tt[color=#666666].[/color]right([color=#666666]90[/color])
turtle[color=#666666].[/color]done() [color=#408080][i]# bu kod Tkinter penceresinin açık kalmasını sağlayacak[/i][/color]
[/font]

Kod:
[COLOR="SandyBrown"][SIZE="2"].circle(radius, extent=None, steps=None)[/SIZE][/COLOR][INDENT][B][I]parametreler:
[INDENT]radius -> int veya flat
extent -> int, float veya None
steps -> int, float veya None[/I][/B][/INDENT][/INDENT]
Bu method, daire cizemize yarar. radius, darenin capını extent ise dairenin derecesini alır. Varsayılan olarak 360.
Kod:
[font=monospace][color=#008000][b]import[/b][/color] [color=#0000FF][b]turtle[/b][/color]
tt [color=#666666]=[/color] turtle[color=#666666].[/color]Turtle()
tt[color=#666666].[/color]circle([color=#666666]90[/color]) [color=#408080][i]# 90 birim yarıçapına sahip bir daire çiz[/i][/color]
turtle[color=#666666].[/color]done() [color=#408080][i]# bu kod Tkinter penceresinin açık kalmasını sağlayacak[/i][/color]
[/font]

Kod:
[font=monospace][color=#008000][b]import[/b][/color] [color=#0000FF][b]turtle[/b][/color]
tt [color=#666666]=[/color] turtle[color=#666666].[/color]Turtle()
tt[color=#666666].[/color]circle([color=#666666]90[/color], [color=#666666]180[/color]) [color=#408080][i]# 90 birim yarıçapına sahip yarım daire çiz[/i][/color]
turtle[color=#666666].[/color]done() [color=#408080][i]# bu kod Tkinter penceresinin açık kalmasını sağlayacak[/i][/color]
[/font]

Kod:
[COLOR="Orange"][SIZE="2"].position()
.pos()[/SIZE][/COLOR]
Bu method size okun şuanki konumu tuple şeklinde verir - (x, y) -
Kod:
[font=monospace][color=#008000][b]import[/b][/color] [color=#0000FF][b]turtle[/b][/color]
tt [color=#666666]=[/color] turtle[color=#666666].[/color]Turtle()
tt[color=#666666].[/color]circle([color=#666666]90[/color], [color=#666666]180[/color]) [color=#408080][i]# 90 birim yarıçapına yarım daire çiz[/i][/color]
[color=#008000][b]print[/b][/color](tt[color=#666666].[/color]pos())
turtle[color=#666666].[/color]done() [color=#408080][i]# bu kod Tkinter penceresinin açık kalmasını sağlayacak[/i][/color]
[/font]
Kod:
>>>(0.00,180.00)
İşte size kalp çizen kod
Kod:
[font=monospace][color=#008000][b]import[/b][/color] [color=#0000FF][b]turtle[/b][/color]
[color=#008000][b]class[/b][/color] [color=#0000FF][b]Heart[/b][/color]:
tt [color=#666666]=[/color] turtle[color=#666666].[/color]Turtle()
screen [color=#666666]=[/color] turtle[color=#666666].[/color]Screen()
[color=#008000][b]def[/b][/color] [color=#0000FF]__init__[/color]([color=#008000]self[/color], speed[color=#666666]=[/color][color=#666666]10[/color], hide[color=#666666]=[/color][color=#008000]True[/color]):
[color=#008000]self[/color][color=#666666].[/color]tt[color=#666666].[/color]speed(speed)
[color=#008000][b]if[/b][/color] hide:
[color=#008000]self[/color][color=#666666].[/color]tt[color=#666666].[/color]hideturtle()
[color=#008000][b]def[/b][/color] [color=#0000FF]draw_half_circle[/color]([color=#008000]self[/color], pos[color=#666666]=[/color]([color=#666666]-[/color][color=#666666]300[/color],[color=#666666]100[/color]), state[color=#666666]=[/color][color=#666666]1[/color]):
[color=#008000]self[/color][color=#666666].[/color]tt[color=#666666].[/color]penup()
[color=#008000]self[/color][color=#666666].[/color]tt[color=#666666].[/color]setposition(pos)
[color=#008000]self[/color][color=#666666].[/color]tt[color=#666666].[/color]pendown()
[color=#008000]self[/color][color=#666666].[/color]tt[color=#666666].[/color]left([color=#666666]90[/color] [color=#008000][b]if[/b][/color] state[color=#666666]==[/color][color=#666666]1[/color] [color=#008000][b]else[/b][/color] [color=#666666]180[/color])
[color=#008000]self[/color][color=#666666].[/color]tt[color=#666666].[/color]circle([color=#666666]-[/color][color=#666666]100[/color],[color=#666666]180[/color])
[color=#008000][b]return[/b][/color] [color=#008000]self[/color][color=#666666].[/color]tt[color=#666666].[/color]position()
[color=#008000][b]def[/b][/color] [color=#0000FF]write_header[/color]([color=#008000]self[/color]):
end_pos [color=#666666]=[/color] [color=#008000]self[/color][color=#666666].[/color]draw_half_circle()
sec_pos [color=#666666]=[/color] [color=#008000]self[/color][color=#666666].[/color]draw_half_circle(pos[color=#666666]=[/color]end_pos, state[color=#666666]=[/color][color=#666666]2[/color])
[color=#008000][b]def[/b][/color] [color=#0000FF]write_body[/color]([color=#008000]self[/color]):
[color=#008000]self[/color][color=#666666].[/color]tt[color=#666666].[/color]right([color=#666666]40[/color])
[color=#008000]self[/color][color=#666666].[/color]tt[color=#666666].[/color]forward([color=#666666]300[/color])
[color=#008000]self[/color][color=#666666].[/color]tt[color=#666666].[/color]right([color=#666666]98[/color])
[color=#008000]self[/color][color=#666666].[/color]tt[color=#666666].[/color]forward([color=#666666]310[/color])
[color=#008000][b]def[/b][/color] [color=#0000FF]draw[/color]([color=#008000]self[/color]):
[color=#008000]self[/color][color=#666666].[/color]write_header()
[color=#008000]self[/color][color=#666666].[/color]write_body()
[color=#008000]self[/color][color=#666666].[/color]stay()
[color=#008000][b]def[/b][/color] [color=#0000FF]stay[/color]([color=#008000]self[/color]):
turtle[color=#666666].[/color]done()
heart [color=#666666]=[/color] Heart(speed[color=#666666]=[/color][color=#666666]10[/color])
heart[color=#666666].[/color]draw()
[/font]

Burda göremediğimiz birkaç method var:
Kod:
[COLOR="Orange"][SIZE="2"].speed(speed)[/SIZE][/COLOR]
[INDENT][B][I]parametreler: speed -> 1 ile 10 arasında bir değer[/I][/B][/INDENT]
.speed() methodu cizim hızını belirler:
docs.python' Alıntı:fastest: 0
fast: 10
normal: 6
slow: 3
slowest: 1
Kod:
[COLOR="Orange"][SIZE="2"].setposition(x,y)[/SIZE][/COLOR]
İmleci x ve y ye göre konumlandırır.
Kod:
[COLOR="Orange"][SIZE="2"].penup()[/SIZE][/COLOR]
Turtle'yi bir kalem gibi düşünürsek anlamlı bir ismi vardır. Kalemi kaldırmamıza ve cizimi durdurmamıza yarar.
Kod:
[COLOR="Orange"][SIZE="2"].pendown()[/SIZE][/COLOR]
Kalemi tekrar cizim konumuna getirir. Genelde .penup() ile .pendown() arasında imlecin konumu belirlenir.
İnternette bulduğum çalışmalar.(Alıntıdır)
Turtle modulu tabikide bunlarla sınırlı değil. En güzel şekilde kendi dökumantasyonu açıklamış.
docs.python.org/3.3/library/turtle.html
Son düzenleme:






