Merhaba genç oyun geliştiricileri!
Bu hafta inanılmaz bir şey başardık: bomboş bir siyah ekrandan, kendi kontrol ettiğimiz bir karakterin ve yakalama görevlerinin olduğu canlı bir dünyaya geçiş yaptık! Sadece birkaç sihirli komutla bilgisayara ne yapması gerektiğini öğrettik. Artık sizler birer oyun mimarısınız.
Gelin, bu hafta hangi adımları izleyerek ilk oyun mekaniğimizi yazdığımızı tekrar hatırlayalım.
Adım 1: Sahneyi Hazırlamak ve Oyuncuyu Çağırmak
Her şeyden önce oyun dünyamızın sınırlarını çizdik. Tıpkı bir ressamın tuvalinin boyutlarını belirlemesi gibi, biz de WIDTH (Genişlik) ve HEIGHT (Yükseklik) komutlarıyla sahnemizi hazırladık.
Sonra en heyecanlı kısım geldi: Aktörümüzü (Actor) sahneye davet etmek! Actor, içinde bir resim taşıyan ve sahnede istediğimiz yere koyabildiğimiz bir oyun nesnesidir. Ona bir adres (pos) vererek oyun dünyasının neresinde duracağını söyledik. Unutmayın, bilgisayar için adresler (x, y) sayılarından oluşur ve (0, 0) adresi her zaman ekranın sol üst köşesidir!
# Oyun dünyamızın boyutları
WIDTH = 800
HEIGHT = 600
# 'alien' resmini kullanarak bir karakter oluşturduk
# ve onu ekranın tam ortasına yerleştirdik.
karakter = Actor('alien')
karakter.pos = (400, 300)
Adım 2: Karakterimize Hayat Vermek
Karakterimiz sahnede harika görünüyordu ama bir heykel gibiydi. Onu canlandırmak için oyunumuzun kalbini, yani update() fonksiyonunu yazdık. Bu fonksiyon saniyede 60 kez çalışır ve sürekli olarak “Yeni bir komut var mı?” diye kontrol eder.
Klavyedeki ok tuşlarına bastığımızda ne olacağını keyboard nesnesi sayesinde bilgisayara öğrettik. if keyboard.right: dediğimizde, aslında bilgisayara “Eğer sağ ok tuşuna basılıyorsa, karakterin X adresini biraz artır.” komutunu verdik. Böylece karakterimiz sağa doğru hareket etti!
# update() fonksiyonu oyunun beyni gibidir.
def update():
# Klavye komutlarını dinleriz
if keyboard.right:
karakter.x += 5 # Sağa git
if keyboard.left:
karakter.x -= 5 # Sola git
if keyboard.up:
karakter.y -= 5 # Yukarı git
if keyboard.down:
karakter.y += 5 # Aşağı git
Adım 3: Dünyanın Sınırlarını Korumak
Karakterimiz hareketlenince bir sorun fark ettik: Ekranın dışına çıkıp kaybolabiliyordu! Çözüm olarak oyun dünyamızın kenarlarına görünmez duvarlar ördük. if (Eğer) komutunu kullanarak bilgisayara kurallar koyduk:
“Eğer karakterin sağ kenarı, ekranın genişliğini geçerse, onu daha fazla ilerletme!”
Bu sayede kahramanımız artık her zaman oyun alanının içinde kalıyor.
Adım 4: İlk Görev: Elmayı Yakala!
Sahnede tek başına dolaşan bir karakter yeterince eğlenceli değildi. Biz de ona bir görev verdik: elmayı yakalamak!
Bunun için sahneye elma adında ikinci bir aktör ekledik. Sonra en önemli sihirli kelimelerden birini öğrendik: colliderect. Bu komut, iki aktörün birbirine dokunup dokunmadığını kontrol eden bir çarpışma dedektifidir.
Artık kodumuz şunları yapabiliyordu:
- Bir
skordeğişkeni ile puanımızı aklında tutuyor. - Karakter elmaya her dokunduğunda (
colliderect), skoru 1 artırıyor. random(rastgele) komutuyla elmayı ekranın bambaşka bir noktasına ışınlıyor.
Haftanın Final Kodu: Hepsi Bir Arada!
İşte bu hafta yazdığımız ve tüm bu adımları birleştiren kodumuzun son hali. Bu kodu çalıştırdığınızda hareket eden, elma toplayan ve puan kazandıran ilk mini oyununuzu oynamış olacaksınız!
import random # Rastgelelik için bu sihirli kitabı çağırıyoruz
# --- AYARLAR ---
WIDTH = 800
HEIGHT = 600
skor = 0
# --- AKTÖRLER ---
karakter = Actor('alien', (400, 300))
elma = Actor('apple', (100, 100))
# --- ÇİZİM FONKSİYONU (Her saniye ekrana ne çizileceğini söyler) ---
def draw():
screen.clear() # Önce ekranı temizle
karakter.draw() # Karakteri çiz
elma.draw() # Elmayı çiz
# Skoru ekrana beyaz renkte yazdır
screen.draw.text(f"Skor: {skor}", (10, 10), color="white", fontsize=30)
# --- GÜNCELLEME FONKSİYONU (Oyunun kalbi, tüm mantık burada döner) ---
def update():
global skor # Dışarıdaki 'skor' değişkenini değiştireceğimizi söylüyoruz
# 1. Karakteri hareket ettir
if keyboard.right: karakter.x += 5
if keyboard.left: karakter.x -= 5
if keyboard.up: karakter.y -= 5
if keyboard.down: karakter.y += 5
# 2. Duvar kontrollerini ekleyebilirsin (Bonus!)
# 3. Çarpışma var mı diye kontrol et
if karakter.colliderect(elma):
skor += 1 # Puanı artır
# Elmayı rastgele yeni bir konuma gönder
elma.x = random.randint(50, WIDTH - 50)
elma.y = random.randint(50, HEIGHT - 50)
Tebrikler! Harika bir iş çıkardınız. Artık boş bir dosyayı, çalışan bir oyun mekaniğine dönüştürmenin temel adımlarını biliyorsunuz.
Şimdi Sıra Sende: Deneyebileceğin Fikirler
- Oyunu zorlaştırmak için karakterin hızını (
+= 5olan yerleri) düşürmeyi dene. imagesklasörüne kendi çizdiğin bir resmi atıp'alien'yerine onun adını yazarak karakterini değiştirebilirsin.- Elmayı yakaladıkça karakterin hızlanmasını sağlayabilir misin?
Unutmayın, kodlama bir keşif yolculuğudur. Haftaya bu oyunun üzerine yeni ve çok daha heyecanlı özellikler ekleyeceğiz
Hocam çok sağolun sayenizde MU Editor öğrenmek çok daha kolay 😊