CodeBlanks Logo Icon CodeBlanks

Proje sonu - Mini oyun

JavaScript kursu · Uzman · Ders 52/63

Mini oyunu tamamlayıp sahne, hareket ve çarpışma akışını çalıştırırsın.

Hepsini birleştir

Son dersde oyunu tamamlıyoruz. Sahne, oyuncu, klavye hareketi ve çarpışma algılama hazır. Şimdi oyuna skor ekleyeceğiz. Oyuncu hedefe değince skor bir artar, hedef rastgele yeni bir konuma taşınır ve skor sayfada gösterilir.

Skoru ekranda göstermek için HTML'deki #score öğesini seçer ve textContent ile güncelleriz. Hedefin yeni konumu Math.random() ile canvas sınırları içinde rastgele seçilir.

Hedefi rastgele taşı

Çarpışma olduğunda hedefi canvas sınırları içinde rastgele bir noktaya taşırız. x için Math.random() * (canvas.width - target.width) ifadesini kullanırız: bu, 0 ile canvas genişliğinden hedef genişliğini çıkaran değer arasında bir sayı verir. Aynı şeyi y için de yaparız.

Böylece hedef her zaman canvas içinde kalır ve oyuncu onu tekrar yakalamak için hareket etmek zorundadır. Skor her çarpışmada score++ ile bir artar.

Uygulama Skoru ekle ve hedefi taşı

Dosyanın başında ctx tanımından sonra const scoreLabel = document.querySelector("#score"); satırını ekle. target tanımından sonra let score = 0; satırını ekle. Sonra update işlevinin sonuna, ok tuşu kodlarından sonra, bir if (hits(player, target)) bloğu ekle: içinde score++, scoreLabel.textContent = "Score: " + score, target.x = Math.random() * (canvas.width - target.width) ve target.y = Math.random() * (canvas.height - target.height) satırları olsun.

Örnek çözümü göster
const scoreLabel = document.querySelector("#score");
let score = 0;

// update işlevine ekle:
if (hits(player, target)) {
  score++;
  scoreLabel.textContent = "Score: " + score;
  target.x = Math.random() * (canvas.width - target.width);
  target.y = Math.random() * (canvas.height - target.height);
}

Kendini test et

  1. Oyun döngüsünde her karede önce ne yapılır?

    • Sahne temizlenir ve çizim yeniden yapılır
    • Skor sıfırlanır
    • Tuşlar kaydedilir
    • Hedef taşınır
    Cevabı göster

    Sahne temizlenir ve çizim yeniden yapılır — Doğru! Her kare clearRect ile başlar, sonra nesneler çizilir.

  2. Skoru ekrana yaz

    scoreLabel.textContent = ____;
    Cevabı göster
    scoreLabel.textContent = "Score: " + score;
  3. Proje parçalarını eşleştir

    Sahne
    Çizim yüzeyi
    Hareket
    Tuşlarla konum
    Çarpışma
    Kutu kesişimi
    Oyun döngüsü
    Kare kare yenile

Uzman bölümündeki tüm dersler