Post Detail

September 13, 2026 in Python Lanjutan

Kreasi Pola Spiral, Fraktal, dan Kontrol Interaktif dengan Python Turtle

Kreasi Seni Spiral, Fraktal, dan Kontrol Keyboard dengan Python Turtle (Ilustrasi AI)
Ilustrasi AI: Laptop menampilkan pola spiral pelangi, pohon fraktal, dan kontrol keyboard interaktif.

Selamat datang di bagian ketiga sekaligus penutup dari seri belajar pemrograman visual bersama Python Turtle! Setelah menguasai gerakan dasar di Bagian 1 dan otomasi bentuk bangun di Bagian 2, kini saatnya melangkah ke kreasi yang jauh lebih menantang dan memukau.

Di artikel ini, kamu akan mempelajari tiga teknik tingkat lanjut: membuat ilusi optik pola spiral tak hingga, memvisualisasikan konsep rekursi lewat pohon fraktal, dan menyulap kura-kura menjadi mini game interaktif yang dikendalikan tombol keyboard!

1. Pola Spiral Tak Hingga (Langkah Dinamis)

Pada bujur sangkar biasa, panjang langkah selalu tetap (misalnya 100 piksel). Namun, apa yang terjadi jika panjang langkah tersebut bertambah sedikit demi sedikit di setiap putaran?

Dengan memanfaatkan variabel indeks i pada perulangan for i in range(60):, kita bisa melipatgandakan panjang langkah: t.forward(i * 3). Hasilnya adalah garis yang terus mengembang ke luar membentuk pusaran spiral persegi:

import turtle

t = turtle.Turtle()
t.shape("turtle")
t.color("#0284c7")
t.pensize(2)
t.speed(0)

# Setiap langkah bertambah panjang 3 piksel
for i in range(60):
    t.forward(i * 3)
    t.right(90)

turtle.done()
Kanvas Turtle: Pola spiral persegi dengan pertambahan panjang bertahap
Pusaran spiral bujur sangkar yang mengembang secara konsisten seiring bertambahnya nilai indeks perulangan.

2. Spiral Pelangi Berputar Cepat

Untuk membuat pola spiral yang tampak bergerak dan memiliki efek ilusi optik dinamis, ada dua trik rahasia:

  1. Ubah Sudut Belokan Sedikit Saja: Alih-alih sudut heksagon sempurna (60 derajat), gunakan sudut 59 derajat. Selisih 1 derajat ini akan membuat setiap putaran sedikit bergeser miring, menghasilkan efek spiral 3D yang berputar.
  2. Maksimalkan Kecepatan: Perintah t.speed(0) mematikan jeda animasi kura-kura, dan t.hideturtle() menyembunyikan ikon kura-kura agar proses render garis berlangsung instan.
import turtle

t = turtle.Turtle()
t.hideturtle()
t.speed(0)
turtle.bgcolor("#ffffff")

# 6 variasi warna pelangi
warna = ["#ef4444", "#f59e0b", "#10b981", "#06b6d4", "#3b82f6", "#8b5cf6"]

# Sudut 59 derajat menghasilkan spiral heksagonal berputar dinamis
for i in range(120):
    t.pencolor(warna[i % len(warna)])
    t.pensize(i // 30 + 1)
    t.forward(i * 2)
    t.right(59)

turtle.done()
Kanvas Turtle: Pola spiral pelangi memutar dinamis sudut 59 derajat
Pola spiral pelangi yang memukau dihasilkan dari pergeseran sudut 59 derajat dengan rotasi 6 warna dinamis.

3. Memvisualisasikan Konsep Rekursi: Pohon Fraktal

Dalam ilmu komputer, rekursi (recursion) adalah konsep di mana sebuah fungsi memanggil dirinya sendiri untuk memecahkan masalah berskala lebih kecil. Konsep ini sering terasa rumit saat dipelajari lewat angka, namun menjadi sangat masuk akal saat digambar oleh kura-kura!

Sebuah pohon tersusun dari struktur fraktal: sebuah batang besar memiliki dua cabang. Setiap cabang tersebut sejatinya adalah “pohon kecil” yang juga memiliki dua ranting lagi, begitu seterusnya sampai ranting terkecil.

import turtle

t = turtle.Turtle()
t.hideturtle()
t.speed(0)
t.left(90)  # Hadapkan kura-kura ke atas

# Fungsi rekursif untuk menggambar cabang pohon
def gambar_pohon(panjang_cabang):
    if panjang_cabang > 10:
        # Warna batang semakin ke pucuk semakin hijau
        if panjang_cabang > 35:
            t.pencolor("#78350f")  # Cokelat batang
            t.pensize(panjang_cabang // 15)
        else:
            t.pencolor("#16a34a")  # Hijau daun
            t.pensize(2)
            
        t.forward(panjang_cabang)
        
        # Cabang kanan
        t.right(25)
        gambar_pohon(panjang_cabang - 15)
        
        # Cabang kiri
        t.left(50)
        gambar_pohon(panjang_cabang - 15)
        
        # Kembali ke pangkal cabang
        t.right(25)
        t.backward(panjang_cabang)

# Pindah ke bagian bawah kanvas
t.penup()
t.goto(0, -140)
t.pendown()

gambar_pohon(75)
turtle.done()
Kanvas Turtle: Cabang pohon fraktal rekursif dengan gradasi batang cokelat dan ranting hijau
Pohon fraktal alami yang tumbuh dari pemanggilan fungsi rekursif bertingkat.

Perhatikan syarat berhenti (base case): if panjang_cabang > 10:. Ketika panjang cabang sudah menyusut di bawah 10 piksel, fungsi berhenti memanggil dirinya dan kura-kura mundur kembali ke batang induknya.

4. Membuat Kura-kura Interaktif: Dikendalikan Keyboard

Turtle tidak hanya bisa menggambar pola otomatis, tetapi juga mendukung penanganan peristiwa (event handling). Kamu bisa menghubungkan tombol keyboard fisik di komputermu dengan fungsi aksi kura-kura menggunakan perintah screen.onkey(fungsi, "Tombol"):

import turtle

screen = turtle.Screen()
screen.title("Game Kontrol Kura-kura dengan Keyboard")
screen.setup(width=500, height=400)

t = turtle.Turtle()
t.shape("turtle")
t.color("#0284c7")
t.pensize(3)

# Fungsi aksi gerakan
def maju():
    t.forward(25)

def mundur():
    t.backward(25)

def belok_kiri():
    t.left(20)

def belok_kanan():
    t.right(20)

# Hubungkan tombol keyboard dengan fungsi aksi
screen.onkey(maju, "Up")
screen.onkey(mundur, "Down")
screen.onkey(belok_kiri, "Left")
screen.onkey(belok_kanan, "Right")

# Aktifkan pendengar tombol keyboard
screen.listen()
turtle.done()
Kanvas Turtle: Jalur garis yang digambar interaktif menggunakan tombol panah keyboard
Kura-kura yang berhasil digerakkan bebas di atas kanvas menggunakan tombol panah keyboard laptop.

Jalankan kode di atas pada Thonny IDE. Klik jendela kanvas grafis satu kali agar jendela aktif, lalu tekan tombol panah Atas, Bawah, Kiri, dan Kanan di keyboardmu. Kamu telah berhasil membuat game menggambar (Etch-a-Sketch) versimu sendiri!

Latihan Tantangan: Fitur Angkat Pena & Bersihkan Layar

Tingkatkan game kontrol kura-kura di atas dengan menambahkan dua kemampuan baru:

  1. Tekan tombol Spasi ("space") untuk berganti mode antara mengangkat pena (tidak mencoret) dan menurunkan pena (mencoret).
  2. Tekan tombol C ("c") untuk membersihkan seluruh coretan di kanvas (t.clear()).
Lihat pembahasan

Kita dapat menggunakan variabel status boolean is_down = True untuk melacak apakah pena sedang menempel atau terangkat:

import turtle

screen = turtle.Screen()
screen.title("Kanvas Menggambar Interaktif Lengkap")
screen.setup(width=500, height=400)

t = turtle.Turtle()
t.shape("turtle")
t.color("#0284c7")
t.pensize(3)

def maju():
    t.forward(25)

def mundur():
    t.backward(25)

def belok_kiri():
    t.left(20)

def belok_kanan():
    t.right(20)

# Fitur tambahan: toggle angkat/turunkan pena
is_down = True
def toggle_pena():
    global is_down
    if is_down:
        t.penup()
        is_down = False
    else:
        t.pendown()
        is_down = True

# Fitur bersihkan kanvas
def bersihkan():
    t.clear()

# Hubungkan tombol
screen.onkey(maju, "Up")
screen.onkey(mundur, "Down")
screen.onkey(belok_kiri, "Left")
screen.onkey(belok_kanan, "Right")
screen.onkey(toggle_pena, "space")
screen.onkey(bersihkan, "c")

screen.listen()
turtle.done()

Sekarang kamu bisa berjalan ke mana pun tanpa mencoret dengan menekan spasi, menggambar bentuk di titik baru, dan menghapus kanvas kapan saja dengan menekan tombol C.

Rangkuman Seluruh Seri Python Turtle

Selamat! Kamu telah menyelesaikan seluruh rangkaian trilogi belajar pemrograman visual bersama Python Turtle:

  1. Bagian 1: Mengenal Python Turtle — Mempelajari sejarah Seymour Papert 1967, koordinat kanvas, gerakan maju/mundur, sudut belok siku-siku, serta fungsi penup() dan pendown().
  2. Bagian 2: Menggambar Bangun Geometri & Warna — Mengotomatiskan pola dengan for loop, menguasai rumus sudut putar poligon (360 / n), mewarnai bidang dengan begin_fill(), dan membuat bunga geometri.
  3. Bagian 3: Kreasi Spiral, Fraktal, dan Interaksi Keyboard — Membuat pusaran spiral dinamis, visualisasi pohon rekursi, serta membangun game menggambar interaktif berbasis keyboard event.

Belajar coding terbukti tidak harus kaku atau membosankan. Melalui Turtle, logika pemrograman fundamental—seperti urutan eksekusi, variabel dinamis, perulangan bertingkat, fungsi rekursif, hingga event listener—dapat dipahami secara intuitif dan menyenangkan.




Leave a Reply

Your email address will not be published. Required fields are marked *