Python Turtle Kütüphanesi

14.01.2025
326

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

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.

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.

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
Python

Ekran Çı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
Python

Ekran Çı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
Python

Ekran Çı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
Python

Tam 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
Python

Ekran Çı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()
Python

Bu 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 :)
Python

Ekran 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:

https://docs.python.org/3/library/turtle.html#turtle.listen

Ö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.
Python

Python 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ŞUAKSİYON
spaceher 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 harfiher seferinde ekranı temizleyecektir.
H harfiher seferinde imleç (ok) başlangıç noktasına gidecektir.
N harfiher seferinde kalemi tahtadan kaldıracaktır.
Y harfiher 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.
Python

Kod 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()
Python

Oyunun 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.

ZİYARETÇİ YORUMLARI - 4 YORUM
  1. Ben ben dedi ki:

    Turtle ile gelişmiş oyun yazılabilir mi?

    1. Ömer ŞAHİN dedi ki:

      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.

  2. Ahmet dedi ki:

    Oyun tarafında istediğim sembolü kullanabilir miyim?

    1. Ömer ŞAHİN dedi ki:

      Evet kullanabilirsiniz. turtle.shape(“turtle”) yazan satırda değişiklik yapabilirsiniz.

Bu web sitesi, bilgisayarınıza bilgi depolamak amacıyla bazı tanımlama bilgilerini kullanabilir.
Bu bilgilerin bir kısmı sitenin çalışmasında esas rolü üstlenirken bir kısmı ise kullanıcı deneyimlerinin iyileştirilmesine ve geliştirilmesine yardımcı olur.
Sitemize ilk girişinizde vermiş olduğunuz çerez onayı ile bu tanımlama bilgilerinin yerleştirilmesine izin vermiş olursunuz.
Çerez bilgilerinizi güncellemek için ekranın sol alt köşesinde bulunan mavi kurabiye logosuna tıklamanız yeterli. Kişisel Verilerin Korunması,
Gizlilik Politikası ve Çerez (Cookie) Kullanımı İlkeleri hakkında detaylı bilgi için KVKK&GDPR sayfamızı inceleyiniz.
| omersahin.com.tr |
Copyright | 2007-2025