Python Turtle Kütüphanesi
Python Turtle Kütüphanesi, Bir grafik arayüz ortamı sağlayan son derece kullanışlı ve sade bir python kütüphanesidir. İç içe girift şekiller oluşturabileceğiniz ve aynı zamanda da input form girişleri sağlayabileceğiniz Turtle kütüphanesi oldukça eğlencelidir.

Python Turtle Kütüphanesi, Bir grafik arayüz ortamı sağlayan son derece kullanışlı ve sade bir python kütüphanesidir. İç içe girift şekiller oluşturabileceğiniz ve aynı zamanda da input form girişleri sağlayabileceğiniz Turtle kütüphanesi oldukça eğlencelidir.
Turtle modülü Python içerisinde yüklü olarak geliyor. Bu nedenle ekstra bir yükleme işlemi yapmanıza gerek kalmadan -import turtle yazarak kullanmaya başlayabilirsiniz.
Index
Turtle Kütüphanesi Dökümantasyonu
Python Turtle ile ilgili tüm python kodlarını
https://github.com/omersahintr/pyTurtles
adlı GitHub reposunda inceleyebilirsiniz.
Turtle Kütüphanesi ile ilgili Google araması yaptığınızda dökümantasyon olarak birkaç internet sitesi önerebilirim.
- https://docs.python.org/3/library/turtle.html
- https://realpython.com/beginners-guide-python-turtle/
- https://pythonsandbox.com/turtle
Bu yazıda bulunan tüm Python kodları Python 3.12 versiyonu ile test edilerek yayınlanmıştır.
Örnek Turtle Kodları
Aşağıdaki kodları yazıp çalıştırın. Satırların yanında “#” ile açıklama satırında işlev hakkında bilgi verilmiştir.
import turtle
yazi_tahtasi = turtle.Screen() #yazi_tahtası adında turtle object
yazi_tahtasi.bgcolor("yellow") #Sayfa arkaplan rengi "#880033" veya "red" vs.
yazi_tahtasi.title("Yazı Tahtası") #Sayfa Başlığı
turtle_ins = turtle.Turtle() #turtle object oluştur.
turtle_ins.forward(100) #100px ileri git
turtle.done() #turtle kapat
PythonEkran Çıktısı:

İki Doğruya Açı Yaptırarak Çizmek İçin
İki vektörü birbirine açı yapacak şekilde çizdirmek için:
import turtle
yazi_tahtasi = turtle.Screen()
yazi_tahtasi.bgcolor("yellow") #Sayfa arkaplan rengi
yazi_tahtasi.title("Yazı Tahtası") #Sayfa Başlığı
turtle_ins_1 = turtle.Turtle() #turtle nesnesi oluştur
turtle_ins_1.forward(100) #100px ileri git
turtle_ins_2 = turtle.Turtle() #Ikinci turtle objesi
turtle_ins_2.left(60) #sola 60 derece aci yap
turtle_ins_2.forward(100) #100 pixel ileri git
turtle.done() #turtle kapat
PythonEkran Çıktısı:

Turtle İle Dörtgen yada Kare Çizdirmek İçin
Tek turtle objesi ile üçgen, kare, dikdörtgen, beşgen veya çokgen çizdirmek için:
### KARE ÇİZDİREN KODLAR ###
import turtle
yazi_tahtasi = turtle.Screen()
yazi_tahtasi.bgcolor("yellow") #Sayfa arkaplan rengi
yazi_tahtasi.title("Yazı Tahtası") #Sayfa Başlığı
turtle_ins = turtle.Turtle() #turtle çalıştır
turtle_ins.forward(100) #100px ileri git
turtle_ins.left(90) #sola 90 derece aci yap
turtle_ins.forward(100) #100 pixel ileri git
turtle_ins.left(90) #sola 90 derece aci yap
turtle_ins.forward(100) #100 pixel ileri git
turtle_ins.left(90) #sola 90 derece aci yap
turtle_ins.forward(100) #100 pixel ileri git
turtle.done() #turtle kapat
PythonEkran Çıktısı:

Son yazdığımız kare şekli için sanırım “kod hamallığı” yaptık biraz. Yani altı üstü bir kare çizdirmek için bu kadar satır kod yazmaya gerek var mı?
Sizce Python Döngülerden faydalanarak tek satırda çizebilir miyiz?
### MATH SHAPES DRAWING ###
import turtle
kose = 0
koseSay = int(input("Köşe Sayısını giriniz: "))
kenarUzunluk = int(input("Kenar Uzunluğu giriniz: "))
yazi_tahtasi = turtle.Screen()
yazi_tahtasi.bgcolor("yellow") #Sayfa arkaplan rengi
yazi_tahtasi.title("Yazı Tahtası") #Sayfa Başlığı
turtle_ins = turtle.Turtle() #turtle çalıştır
while(True):
if kose!=koseSay:
turtle_ins.forward(kenarUzunluk) #100px ileri git
turtle_ins.left(360/koseSay) #sola X derece aci yap
kose+=1
else:
break
turtle.done() #turtle kapat
PythonTam bir Python işi oldu artık kodlarımız. Eminim şöyle diyenleriniz oldu:
– “2 satır daha az yazdık, bu mudur?”
Açı = 360/Kenar Sayısı
Programı dışarıdan veri girişi ile dinamik hale getirelim dedik. Üstteki açı formülünü Python’da Turtle kütüphanesi ile entegre ettiğimizde kullanıcının ekrandan gireceği kenar sayısı kadar çokgen çizecektir.
Yıldız Şekli Çizmek İçin
Düzgün bir yıldız şekli çizmek istersek:
### STAR SHAPING ###
import turtle
kose = 0
koseSay = 5
kenarPx = int(input("Kenar Uzunluğu Giriniz: "))
yazi_tahtasi = turtle.Screen()
yazi_tahtasi.bgcolor("yellow") #Sayfa arkaplan rengi
yazi_tahtasi.title("Yazı Tahtası") #Sayfa Başlığı
turtle_ins = turtle.Turtle() #turtle çalıştır
for i in range(koseSay):
turtle_ins.forward(kenarPx)
turtle_ins.left(144) #yıldızın bir iç açısı 144 derecedir
turtle.done() #turtle kapat
PythonEkran Çıktısı:

Projenin bu aşamaya kadar yazdığımız kısmını dilerseniz GitHub üzerinde yayınlayabilirsiniz. GitHub hakkında yardım almak için “Git Komutları” başlıklı yazımıza göz atabilirsiniz.
İç İçe Dönen Kareleri Çizen Turtle Kodları
### SQUARE in SQUARE Drawing ###
import turtle as tur #shortname is tur
shape = tur.Screen()
shape.bgcolor("light blue") #background color
shape.title("Black Board - Square in Square") #titled
shape = tur.Turtle() #new objective defined
shape.color("yellow") #arrow color set
tur.speed(0.22) #animation speed value
def square(dim,angle): #define drawing method
for i in range(4):
tur.forward(dim)
tur.left(angle)
dim-=1
angle+=1
for i in range(60):
square(120,90)
tur.done()
PythonBu Kodun Ekran Çıktısı:

Burada görüldüğü üzere matematiksel değişkenleri bir döngü içerisinde değerlerini değiştirdiğimizde ilginç çizimler ortaya çıkıyor.
Her Seferinde Farklı Renklerde Üretilen İki Çember Birbiri Etrafında Dönsün
Bu örnek Math kütüphanesinde Pİ sayısını çağıracağız ve bunun bir fonksiyonu olarak bir animasyon üreteceğiz.
Eğer form nesneleri ile Python tabanlı uygulama yazmak istiyorsanız Tkinter Python kütüphanesini kullanmanız gerekir.
### COLORFUL HELIX SPIRAL SHAPE DRAWING ###
import turtle as tur
import secrets as sec
from math import pi
helix = tur.Screen() #define screen
helix.title("Helix Spinner") #title name
helix.bgcolor("black") #background color set
spinner = tur.Turtle() #new turtle object created
spinner.speed(0.22) #object animation speed has changed
spinner.color("red") #default line color set
for i in range(150): #150 times for loop
spinner.circle(pi * i) #pi=3.14 calculate
spinner.circle(-pi * i) #-pi=-3.14
spinner.circle(20 * (i / 100), 10 * (i / 100), (1)) #circle animation formula
scolor = ""
x = 0
while x<6: #this loop generate to color hexcode
scolor += sec.choice("0123456789ABCDEF") #secret code generated for base hexcode
x += 1
spinner.color("#"+scolor)
tur.done() #turtle has closed
#tur.mainloop() #mainloop function, always loop :)
PythonEkran Video Çıktısı :
Turtle Modülü ile Kullanıcı Etkileşimli Kod Yazma
Şimdiye kadar Python Turtle Kütüphanesi ile hep kod satırında verdiğimiz parametreler ile çizim yaptırdık. Bu aşamadan sonra Turtle modülünde kullanıcı girişi yaptırarak çizim yapmayı öğreneceksiniz. Bunun için kullanıcının klavyeden hangi tuşa bastığını alacak kodlara bakıyoruz.
Turtle listen() ve onkey() Fonksiyonu
Bu iki fonksiyon ile klavye aksiyonları algılanarak python turtle modülü ile yazdığınız program kodlarına aktarılır. Klavye (keypress) işlemleri ile ilgili döküman linklerini buraya bırakıyorum:
Öncelikle listen() fonksiyonunu çağırıp sonrasında onkey(function, key) fonksiyonu ile klavyeden aksiyonu almamız gerekiyor
### Action Drawing Board Created
import turtle as tur #turtle imported and its names tur
blackBoard = tur.Screen() #blackBoard Screen created
blackBoard.bgcolor("black") #set bg color
blackBoard.title("Action Black Board") #set board title
blackIns = tur.Turtle() # blackIns Turtle object has created
blackIns.color("white") # arrow and line color sets
def drawing(): #a function defined
blackIns.forward(150) #forward XXX px action
blackBoard.listen() #keyboard listen has started
blackBoard.onkey(fun=drawing,key="space") # press to space button on keyboard
tur.mainloop() #loop func.
PythonPython Kodunun Ekran Çıktısı:
Python kodlarını çalıştırdıktan sonra klavyeden “Space” (boşluk) tuşuna her bastığınızda sağa doğru 150 px çizgi çizecektir.

Turtle ile Çocuklar için İnteraktif Mini Oyun Geliştirme
Python Turtle kütüphanesini kullanarak aşağıdaki kod satırları yazılmış ve çalıştırıldığında ise çocuklar için başlangıç seviyesinde bir oyun geliştirdik. Klavyeden girilen farklı tuşlar ile etkileşimli olarak çalışan programdaki tuşların işlevi şu şekildedir:
KLAVYE TUŞU | AKSİYON |
---|---|
space | her seferinde 150 px çizgi çizecektir. |
right (sağ ok tuşu) | her seferinde sağa 30 derece açı yapacaktır. |
left (sol ok tuşu) | her seferinde sola 30 derece açı yapacaktır. |
C harfi | her seferinde ekranı temizleyecektir. |
H harfi | her seferinde imleç (ok) başlangıç noktasına gidecektir. |
N harfi | her seferinde kalemi tahtadan kaldıracaktır. |
Y harfi | her seferinde kalemi tahtaya değdirecektir. |
### Action Drawing Board Created
import turtle as tur #turtle imported and its names tur
blackBoard = tur.Screen() #blackBoard Screen created
blackBoard.bgcolor("black") #set bg color
blackBoard.title("Action Black Board") #set board title
blackIns = tur.Turtle() # blackIns Turtle object has created
blackIns.color("white") # arrow and line color sets
### Drawing Functions ###
def drawing(): #a function defined
blackIns.forward(150) #forward XXX px action
def chanegAngleRight(): #rotate right angle
blackIns.right(30)
def changeAngleLeft(): #Rotate left angle
blackIns.left(30)
def cleanBoard(): #clear black board funvtion
blackIns.clear()
def returnLastPoint(): #REturn home or last point
blackIns.penup() #pen up from board
blackIns.home() #jump to home point
blackIns.pendown() #pen down to board
def noPen(): #pen up function
blackIns.penup()
def onPen(): #pen down function
blackIns.pendown()
### @@@ Drawing Functions @@@ ###
blackBoard.listen() #keyboard listening has started
blackBoard.onkey(fun=drawing,key="space") # press to space button on keyboard
blackBoard.onkey(fun=chanegAngleRight,key="Right") # press to Right button on keyboard
blackBoard.onkey(fun=changeAngleLeft,key="Left") # press to Left button on keyboard
blackBoard.onkey(fun=cleanBoard,key="c") # press to C button on keyboard
blackBoard.onkey(fun=returnLastPoint,key="h") # press to H button on keyboard
blackBoard.onkey(fun=noPen,key="n") # press to N button on keyboard
blackBoard.onkey(fun=onPen,key="o") # press to O button on keyboard
tur.mainloop() #loop func.
PythonKod Bloğunun Ekran Çıktısı:

Python Turtle ile Oyun Geliştirmek
Bir Python kütüphanesi olan Turtle ile oyun geliştirmek ister misiniz? Turtle yazımızın finalinde oldukça eğlenceli bir oyun geliştireceğiz.
Oyunumuzun adı, “Escape Turtle: Kaplumbağayı Yakala“
import turtle as tur
import random
### GLOBAL VARIABLES ####################
table_size = 12 #table size set #
score=0 # scoreboard reset #
xVals = [30,20,10,0,-10,-20] #
yVals = [-30,-20,-10,0,10,20] #
turtleList =[] #
timerVal=600 #
countDown=15 #
gameOver = False #
#########################################
gameBoard = tur.Screen()
gameBoard.bgcolor("light yellow") #screen backcolor set
gameBoard.title("Escape the Turtle") #screenboard title set
countIns = tur.Turtle() #count of click turtle
count_down = tur.Turtle()
def count_turtle():
countIns.color("dark green")
countIns.penup() #pen up on the board
countIns.hideturtle() #turtle arrow is hide
top = gameBoard.window_height()/2 #top on the gameBoard Screen
yAxis = top*0.9 #y-axis value
countIns.setpos(0,yAxis) #set position on the screen
countIns.write(arg="Count:0", move=False, align="center",
font=("Verdana", 25, "bold")) # Write on the Turtle screen object
def create_turtle(x,y): #Turtle show position on screen function
t = tur.Turtle()
def detect_click(x,y):
global score
global gameOver
score+=1
if not gameOver:
countIns.clear()
countIns.write(arg=f"Count:{score}", move=False, align="center",
font=("Verdana", 25, "bold")) # Write on the Turtle screen object
#print(x,y)
t.onclick(detect_click)
t.penup()
t.shape("turtle")
t.shapesize(3,3)
t.color("red")
t.goto(x * table_size, y * table_size) #distance turtles calculate
turtleList.append(t) #List array has added
def show_turtles(): #all turtle show func.
for yy in yVals:
for xx in xVals:
create_turtle(xx,yy)
def hide_turtles(): #all turtles hide func.
for t in turtleList:
t.hideturtle()
def random_show_turtle(): # random choice turtle function
if not gameOver:
hide_turtles()
random.choice(turtleList).showturtle()
gameBoard.ontimer(random_show_turtle,timerVal) #recursive function: running function in self
def count_down_func(countDown):
global gameOver
count_down.color("dark green")
count_down.penup() # pen up on the board
count_down.hideturtle() # turtle arrow is hide
top = gameBoard.window_height() / 2 # top on the gameBoard Screen
yAxis = top * 0.9 # y-axis value
count_down.setpos(0, yAxis-30) # set position on the screen
if countDown>0:
count_down.clear()
count_down.write(arg=f"Timer:{countDown}", move=False, align="center",
font=("Verdana", 25, "bold")) # Write on the Turtle screen object
gameBoard.ontimer(lambda: count_down_func(countDown-1),1000)
else:
gameOver=True
count_down.clear()
hide_turtles()
count_down.write(arg="Game Over", move=False, align="center",
font=("Verdana", 25, "bold")) # Write on the Turtle screen object
def start_the_game():
tur.tracer(0) #turtle shaping is now start (NO ANIMATION)
count_turtle() #write count value on top of the screen
show_turtles() #all turtles show
hide_turtles() #all turtles hide
random_show_turtle() #random a turtle show
count_down_func(countDown)
tur.tracer(1) #turtle shaping is now finish
start_the_game()
tur.mainloop()
PythonOyunun Ekran Görüntüsü:
Oyun kodlarını kopyalayıp kendi python ortamınızda çalıştırabilirsiniz. Dilerseniz kod satırının en başında bulunan GLOBAL VARIABLES bölümündeki parametreleri değiştirerek oyunu farklı senaryolarda oynayabilirsiniz.
Her satırın yanında İngilizce dilinde açıklaması yapılmıştır. Sormak istediğiniz bir yer olursa aşağıdaki yorumlar bölümünden bizimle paylaşabilirsiniz.
Hatta yazılan kodlarda bile değişiklik yaparak oyunun bir sonraki versiyonunu geliştirebilirsiniz.
Turtle ile gelişmiş oyun yazılabilir mi?
Gelişmiş ile neyi kastettiniz anlamadım. Ancak akıllı telefonlarda yada bilgisayarda çalışan oynuları Turtle ile yapmanız mümkün değil. Turtle daha çok oyun algoritmalarına giriş için bir başlangıç sayılabilir. Yani bir sıçrama tahtası gibi düşünebilirsiniz Python Turtle Kütüphanesini. Daha farklı Python kütüphanelerini kullanarak bahsettiğiniz oyunları yazabilirsiniz. Python’da gelişmiş oyun yazmak için Pygame kütüphanesini kullanabilirsiniz.
Oyun tarafında istediğim sembolü kullanabilir miyim?
Evet kullanabilirsiniz. turtle.shape(“turtle”) yazan satırda değişiklik yapabilirsiniz.