Scratch ile Oyun Yapma: İlk Oyununuzu Adım Adım Oluşturun
Oyun oynamak harikadır; ancak kendi kurallarınızı koyduğunuz, kendi karakterlerinizi yönettiğiniz bir video oyununu bizzat tasarlayıp kodlamak ve arkadaşlarınıza oynatmak bambaşka bir gurur kaynağıdır! Scratch platformu, oyun geliştirme mantığını en temel yapı taşlarıyla kavramak için dünyadaki en kusursuz araçtır.
Bu uygulamalı rehberde, oyun programlamanın "Merhaba Dünya"sı kabul edilen "Gökten Düşen Elmaları Sepetle Yakalama Oyunu"nu adım adım sıfırdan inşa ediyoruz. Bu proje sayesinde; klavye kontrollerini, yerçekimi fiziğini, çarpışma algılamayı (collision detection), skor sistemini ve oyun bitti (Game Over) ekranını kodlamayı öğreneceksiniz.
1. Oyunun Senaryosu ve Kuralları
Oyunumuzun dinamikleri son derece basittir:
2. Karakterleri ve Sahneyi Hazırlama
Scratch editörünü açın:
3. Sepet Kuklasının Kodlanması (Oyuncu Kontrolü)
Sepetimizin sadece sağa ve sola hareket etmesini istiyoruz. Bunun için iki yöntem vardır: tuş kontrolleri veya fare takibi. Biz en hassas olan sağ/sol ok tuşlarını kodlayacağız.
Sepet kuklasına tıklayın ve orta alana şu blokları dizin:
[yeşil bayrağa tıklandığında]
[x: 0 y: -140 konumuna git]
[sürekli tekrarla] (eğer <[sağ ok v] tuşuna basıldı mı?> ise) [x konumunu (10) değiştir] (eğer <[sol ok v] tuşuna basıldı mı?> ise) [x konumunu (-10) değiştir]Bu kod sayesinde sağ oka bastığınızda sepet pozitif X yönünde, sol oka bastığınızda negatif X yönünde akıcı bir şekilde kayacaktır.
4. Değişkenlerin Oluşturulması (Skor ve Can)
Oyunun bir amacı olması için hafıza kutularına ihtiyacımız var:
Sahnenin sol üst köşesinde Skor ve Can sayaçlarının belirdiğini göreceksiniz.
5. Elma Kuklasının Kodlanması (Düşme ve Çarpışma Fiziği)
Elma kuklasına tıklayın. Elmanın gökyüzünden rastgele düşmesi, sepete değdiğinde skor kazandırması ve yere düştüğünde can azaltması için şu blok mimarisini oluşturun:
[yeşil bayrağa tıklandığında]
[Skor v] değişkenini (0) yap
[Can v] değişkenini (3) yap
[sürekli tekrarla] [y: 160 x: ((-220) ile (220) arasında rastgele bir sayı) konumuna git] [görün] (tekrarla <(y konumu) < (-150)> olana kadar) [y konumunu (-7) değiştir] // Aşağıya doğru düşme hızı (eğer <[Bowl v]'a değiyor mu?> ise) [Chomp v sesini çal] [Skor v] değişkenini (1) kadar değiştir [gizlen] (bu döngüden çık) // Elmayı yakaladık, yukarı gönder! // Eğer elma sepete değmeden yere indiyse: (eğer <(y konumu) < (-145)> ise) [Can v] değişkenini (-1) kadar değiştir [Oops v sesini çal] (eğer <(Can) = (0)> ise) [2 saniye boyunca "OYUN BİTTİ!" de] [tümünü durdur]6. Oyunu Zenginleştirecek 3 Geliştirme Fikri (Challenges)
Temel oyun çalıştıktan sonra oyunu çok daha heyecanlı hale getirebilirsiniz:
7. Kapsamlı Sıkça Sorulan Sorular (SSS)
Elma sepete değdiği anda bazen 2-3 puan birden veriyor, neden?
Çünkü bilgisayar çok hızlıdır; elma sepetin içinden geçerken değme koşulu peş peşe 2 kez tetiklenebilir. Çözüm, çarpışma algılandığı anda elmayı hemen `gizlen` bloğuyla gizlemek veya anında tepeye ışınlamaktır.
Sepet sahnenin dışına çıkıp kayboluyor, nasıl sınırlarım?
Sepet koduna bir kontrol ekleyerek; `eğer x konumu > 220 ise x: 220 yap` diyerek sepetin ekran kenarlarından taşmasını engelleyebilirsiniz.
8. Elma Oyununa 2. Seviye (Level 2) ve Canavar Ekleme
Temel oyunu tamamladıktan sonra projenizi gerçek bir atari salonu klasiğine dönüştürmek için şu özellikleri ekleyin:
9. Oyun Programlamada Hata Ayıklama (Debugging) İpuçları
Scratch oyunlarında en sık yaşanan mantık hataları ve çözümleri:
9. Oyuna Can (Health Bar) ve Game Over Ekranı Tasarımı
Oyun dinamiklerini daha heyecanlı kılmak için oyuncuya belirli bir can hakkı tanımak ve can tükendiğinde oyunu durduran bir bitiş sahnesi eklemek gerekir:
Sonuç
Tebrikler! Sıfırdan değişkenleri, döngüleri, tuş kontrollerini ve çarpışma algoritmalarını barındıran gerçek bir 2D video oyunu inşa ettiniz. Bu temel oyun motoru mantığı, ileride yapacağınız uzay savaşları, platform oyunları ve labirent maceralarının yapı taşıdır. Daha fazla oyun fikri için sitemizin [Scratch Oyun Kodları](/blog/scratch-oyun-kodlari-10-eglenceli-proje) makalesini inceleyebilirsiniz!