Yukleniyor...
Yukleniyor...
Ücretsiz deneme dersi ile kodlama dünyasına ilk adımı atın. Hiçbir taahhüt yok, sadece öğrenme keyfi.
Python'la hazır gelir, kurulum gerekmez. 18 temel komut, 4 adımda ilk çizim ve klavyeyle oynanan ilk oyunun bu sayfada; hepsi kopyala, çalıştır, gör. 10 yaş ve üzeri için.
import turtle
t = turtle.Turtle()
t.speed(0)
turtle.bgcolor("black")
renkler = ["red", "orange", "yellow", "#32cd32", "cyan", "magenta"]
t.pensize(2)
for i in range(90):
t.pencolor(renkler[i % 6])
t.forward(i * 3)
t.right(91)
turtle.done()Kısa cevap: turtle, Python'un içinde hazır gelen çizim kütüphanesidir ve kurulum gerektirmez. Ekranda bir "kaplumbağa" (ok işareti) komutlarınla hareket eder ve gittiği yere çizgi çizer: t.forward(100) ileri götürür, t.right(90) döndürür. Döngülerle birleşince kare, yıldız ve spiral; klavye komutlarıyla birleşince oyun ortaya çıkar. Kodlamaya yeni geçen çocukların Python'u görerek öğrenmesinin en iyi yoludur.
Her adımda tek bir yeni fikir var. Kodu kopyala, IDLE'da yeni bir dosyaya yapıştır, F5 ile çalıştır. Yandaki pencere o kodun gerçek çıktısı; başlık çubuğundaki "çizimi izle" ile kaplumbağanın nasıl çizdiğini gör.
forward ile kaplumbağa baktığı yöne ilerler ve arkasında çizgi bırakır. 150, çizginin piksel cinsinden uzunluğudur.
import turtle
t = turtle.Turtle()
t.speed(0)
t.forward(150)
turtle.done()left(90) kaplumbağayı olduğu yerde 90 derece sola çevirir. Ardından gelen forward yeni yöne doğru çizer.
import turtle
t = turtle.Turtle()
t.speed(0)
t.forward(100)
t.left(90)
t.forward(100)
turtle.done()circle(80) yarıçapı 80 piksel olan bir daire çizer. pencolor rengi, pensize çizgi kalınlığını belirler.
import turtle
t = turtle.Turtle()
t.speed(0)
t.pencolor("#dc143c")
t.pensize(3)
t.circle(80)
turtle.done()for döngüsü aynı iki komutu 4 kez tekrarlar. begin_fill ile end_fill arasında çizilen şeklin içi boyanır.
import turtle
t = turtle.Turtle()
t.speed(0)
t.color("navy", "lightskyblue")
t.begin_fill()
for i in range(4):
t.forward(120)
t.right(90)
t.end_fill()
turtle.done()# Kodu nerede çalıştıracağım: Python'la gelen IDLE yeterli: File > New File, kodu yapıştır, F5. Dosyanın adı turtle.py olmasın (nedeni aşağıdaki hatalar tablosunda).
18 temel çizim komutu ve oyun yaparken gereken 8 komut, ne işe yaradıklarına göre gruplu. Ödev yaparken bu sayfayı açık tut.
| Komut | Ne yapar |
|---|---|
t.forward(100) | İleri gider (100 piksel) |
t.backward(50) | Geri gider |
t.right(90) | Sağa döner (derece) |
t.left(45) | Sola döner |
t.goto(x, y) | Koordinata gider (merkez 0,0) |
t.setheading(0) | Yönü ayarlar (0 = sağ, 90 = yukarı) |
| Komut | Ne yapar |
|---|---|
t.circle(80) | Daire çizer (yarıçap 80) |
t.circle(80, 180) | Yarım daire (yay) çizer |
t.dot(20) | İçi dolu nokta koyar |
| Komut | Ne yapar |
|---|---|
t.penup() | Kalemi kaldırır, çizmeden gider |
t.pendown() | Kalemi indirir, tekrar çizer |
t.pensize(3) | Çizgi kalınlığı |
| Komut | Ne yapar |
|---|---|
t.pencolor("red") | Çizgi rengi (isim veya "#ff0000") |
t.fillcolor("gold") | Dolgu rengi |
t.color("navy", "gold") | Çizgi ve dolgu rengini birlikte |
t.begin_fill() / t.end_fill() | Aradaki şeklin içini boyar |
| Komut | Ne yapar |
|---|---|
t.speed(0) | Çizim hızı (0 = en hızlı) |
turtle.bgcolor("black") | Arka plan rengi |
| Komut | Ne yapar |
|---|---|
ekran.listen() | Pencere klavyeyi dinlemeye başlar |
ekran.onkeypress(f, "Left") | Tuşa basılınca f fonksiyonunu çalıştırır |
ekran.ontimer(f, 20) | 20 ms sonra f fonksiyonunu çalıştırır |
ekran.tracer(0) / ekran.update() | Otomatik çizimi kapatır, ekranı elle yeniler |
t.xcor() / t.ycor() | Kaplumbağanın x ve y konumunu verir |
t.setx(50) / t.sety(50) | Yalnız x ya da yalnız y konumunu değiştirir |
t.shape("circle") | Görünümü değiştirir (circle, square, turtle…) |
t.write("Skor", font=…) | Ekrana yazı yazar; t.clear() siler |
Komutlar tamam, şimdi bunlarla neler çizilebileceğine bak: 16 kopyala-çalıştır turtle örneği.
Çizim yapmayı öğrendiysen aynı kütüphaneyle oyun da yapabilirsin. Yukarıdan düşen topu, ok tuşlarıyla yönettiğin sepetle yakala; her yakalamada top hızlanır, 3 topu kaçırınca oyun biter.
Bu bölümde dört yeni fikir öğreneceksin:
Oyunun her parçası ayrı bir kaplumbağadır. Sepet, shape("square") ile kareye çevrilip shapesize ile 100 piksel genişliğe uzatılır. tracer(0) otomatik çizimi kapatır: ekranı her karede biz yenileyeceğimiz için animasyon titremez.
ekran = turtle.Screen()
ekran.setup(width=600, height=600)
ekran.tracer(0)
sepet = turtle.Turtle()
sepet.shape("square")
sepet.shapesize(stretch_wid=1, stretch_len=5)
sepet.penup()
sepet.goto(0, -250)onkeypress, bir tuşa basıldığında hangi fonksiyonun çalışacağını söyler. listen() olmadan pencere tuşları duymaz. if kontrolü sepetin ekrandan taşmasını engeller.
def sola_git():
if sepet.xcor() > -240:
sepet.setx(sepet.xcor() - 30)
ekran.listen()
ekran.onkeypress(sola_git, "Left")
ekran.onkeypress(saga_git, "Right")Oyunlar saniyede onlarca kez çalışan bir döngüyle canlanır. Turtle'da bunu ontimer yapar: oyun_dongusu kendini 20 ms sonra tekrar çağırır, top her seferinde hiz kadar aşağı iner.
def oyun_dongusu():
top.sety(top.ycor() - hiz)
ekran.update()
ekran.ontimer(oyun_dongusu, 20)Çarpışma iki koşulla kontrol edilir: top sepet hizasına inmiş mi (y) ve yatayda sepetin üstünde mi (x farkı 60'tan küçük mü)? Sepetin yarı genişliği 50, topun yarıçapı 10 piksel olduğu için sınır 60.
if -260 < top.ycor() < -230 and abs(top.xcor() - sepet.xcor()) < 60:
skor += 1
topu_basa_al()
if top.ycor() < -290:
can -= 1
topu_basa_al()write ile ekrana yazı yazılır, clear eski yazıyı siler. Her yakalamada hız biraz artar, oyun zorlaşır. Can bitince döngü kendini bir daha çağırmaz ve oyun durur.
def tabloyu_yaz():
yazici.clear()
yazici.write(f"Skor: {skor} Can: {can}", align="center")
if can > 0:
ekran.ontimer(oyun_dongusu, 20)
else:
yazici.write("Oyun bitti!", align="center")Parçaların hepsi bir arada. Kopyala, top_yakala.py olarak kaydet ve F5 ile çalıştır. Oyun penceresine bir kez tıklayıp ← → tuşlarıyla oyna.
import turtle
import random
# --- Ekran ---
ekran = turtle.Screen()
ekran.title("Top Yakala")
ekran.bgcolor("black")
ekran.setup(width=600, height=600)
ekran.tracer(0) # Çizimi biz yöneteceğiz, animasyon akıcı olur
# --- Sepet (oyuncu) ---
sepet = turtle.Turtle()
sepet.shape("square")
sepet.shapesize(stretch_wid=1, stretch_len=5) # 20x100 piksel
sepet.color("orange")
sepet.penup()
sepet.goto(0, -250)
# --- Top ---
top = turtle.Turtle()
top.shape("circle")
top.color("white")
top.penup()
top.goto(random.randint(-280, 280), 280)
# --- Skor yazısı ---
yazici = turtle.Turtle()
yazici.hideturtle()
yazici.penup()
yazici.color("white")
yazici.goto(0, 260)
skor = 0
can = 3
hiz = 4
def tabloyu_yaz():
yazici.clear()
yazici.write(f"Skor: {skor} Can: {can}", align="center", font=("Arial", 16, "normal"))
def sola_git():
if sepet.xcor() > -240:
sepet.setx(sepet.xcor() - 30)
def saga_git():
if sepet.xcor() < 240:
sepet.setx(sepet.xcor() + 30)
def topu_basa_al():
top.goto(random.randint(-280, 280), 280)
def oyun_dongusu():
global skor, can, hiz
top.sety(top.ycor() - hiz)
# Yakalama: top sepet hizasında ve yatayda sepetin üstünde mi?
if -260 < top.ycor() < -230 and abs(top.xcor() - sepet.xcor()) < 60:
skor += 1
hiz = min(hiz + 0.5, 15)
topu_basa_al()
tabloyu_yaz()
# Kaçırma: top ekranın altına düştü
if top.ycor() < -290:
can -= 1
topu_basa_al()
tabloyu_yaz()
ekran.update()
if can > 0:
ekran.ontimer(oyun_dongusu, 20)
else:
yazici.goto(0, 0)
yazici.write("Oyun bitti!", align="center", font=("Arial", 28, "bold"))
ekran.listen()
ekran.onkeypress(sola_git, "Left")
ekran.onkeypress(saga_git, "Right")
tabloyu_yaz()
oyun_dongusu()
ekran.mainloop()Kod çalışmıyorsa önce bu tabloya bak; öğrencilerin takıldığı noktaların neredeyse hepsi burada.
| Hata / belirti | Nedeni | Çözüm |
|---|---|---|
AttributeError: partially initialized module 'turtle' | Dosyanın adı turtle.py. Python kendi kütüphanesi yerine senin dosyanı içe aktarıyor. | Dosyanın adını cizim.py gibi bir şeyle değiştir. |
| Pencere açılıp hemen kapanıyor | Kodun sonunda pencereyi açık tutan satır yok. | Sona turtle.done() (oyunlarda ekran.mainloop()) ekle. |
IndentationError | for ya da def satırının altındaki satırlar içeride değil. | Bloğun içindeki satırları 4 boşluk içeri al. |
turtle.Terminator | Çizim sürerken pencere kapatıldı. | Kodu yeniden çalıştır; IDLE'da gerekirse Shell > Restart Shell. |
| Tuşlar çalışmıyor | listen() satırı eksik ya da pencere odakta değil. | ekran.listen() ekle ve oyun penceresine bir kez tıkla. |
No module named '_tkinter' | Bazı Linux kurulumlarında turtle'ın kullandığı Tk yüklü değil. | Ubuntu/Debian'da sudo apt install python3-tk ile kur. |
Yazarak kodlamanın en zor tarafı, yazdığının ne yaptığını görememektir. Turtle bu sorunu kökten çözer: her satır ekranda anında bir çizgiye dönüşür. Döngü kavramını anlatmanın en kısa yolu 4 satırlık kare kodudur; for i in range(4) yazan çocuk, döngünün ne olduğunu tanımdan değil çizimden öğrenir.
1e1kod müfredatında turtle, Scratch'ten Python'a geçişin köprüsüdür: blok mantığını bilen öğrenci aynı düşünceyi bu kez yazarak kurar. Henüz yazmaya hazır olmayan (7-10 yaş) çocuklar için Scratch örnekleriyle başlamak daha doğru. 10-17 yaş birebir Python derslerimizde ilk haftalar turtle projeleriyle ilerler; Python ile neler yapılabilir yazımızda sonraki adımları görebilirsin.
# kaplumbağanın rotası
Scratch · 7-10 yaş
Bloklarla sıra, döngü ve koşul mantığı
Python turtle · 10+ yaş
Aynı mantığı yazarak kurmak, çizim ve ilk oyun
Python projeleri · 12+ yaş
Fonksiyonlar, pygame ile oyun, veri ve yapay zeka
Kurulmaz: turtle, Python ile birlikte hazır gelir. Python yüklüyse "import turtle" yazdığınız anda kullanıma hazırdır. "pip install turtle" yazmanıza gerek yoktur (bu komut hata bile verebilir).
Kodun en sonuna turtle.done() satırını ekleyin. Bu satır, çizim bitince pencerenin açık kalmasını sağlar; siz kapatana kadar bekler. Oyunlarda aynı işi ekran.mainloop() yapar.
Evet. onkeypress ile klavye, ontimer ile oyun döngüsü, xcor/ycor ile çarpışma kontrolü yapılır. Bu sayfadaki Top Yakala oyunu yaklaşık 80 satırdır ve tamamen turtle ile yazılmıştır. Daha büyük oyunlar için sonraki adım genellikle pygame kütüphanesidir.
Kare, yıldız, daire gibi temel şekillerden spiral, kar tanesi, ay yıldız ve dama tahtası gibi desenlere kadar her şey. 16 hazır örnek için Python turtle örnekleri sayfamıza bakın.
Yazarak kodlamaya geçmiş çocuklar için idealdir, genelde 10 yaş ve üzeri. Daha küçük yaşlar için blok tabanlı Scratch öneririz; turtle, Scratch sonrası ilk Python adımı olarak çok iyi bir köprüdür.
Hayır. Turtle çok hafiftir; Python çalışan her bilgisayarda sorunsuz çalışır.
Birebir online Python derslerinde çocuğunuz turtle'dan oyunlara ve yapay zekâya uzanır. İlk ders ücretsiz; kameralı bir bilgisayar yeterli.