Atölye › Pong › 16/26. adım

Yeniden servis

Ne yapıyoruz

Top bir raketi geçince sonsuza kadar kayboluyor. Bir servis fonksiyonu yazıyoruz: yeni topu ortaya koyar ve kaçıran oyuncuya doğru yollar. Yukarı mı aşağı mı gideceği ise rastgele olsun, her servis aynı olmasın.

```js
let ball

function serve(direction) {
  ball = {
    x: canvas.width / 2 - BALL / 2,
    y: canvas.height / 2 - BALL / 2,
    vx: 4 * direction,
    vy: Math.random() < 0.5 ? -3 : 3,
  }
}

  if (ball.x + BALL < 0) serve(-1)
  else if (ball.x > canvas.width) serve(1)

serve(1)
```

Ne işe yarıyor

Sıra sende

  1. let ball = { x: 295, ... } satırını yalnız let ball yap.
  2. clamp fonksiyonunun altına bir boş satır bırakıp serve fonksiyonunu yaz.
  3. update fonksiyonunun sonunda, sağ raket bloğunun kapanan } işaretinin altına bir boş satır bırak ve iki satırı yaz (fonksiyonun kendi } işaretinden önce).
  4. En alttaki requestAnimationFrame(loop) satırının hemen üstüne serve(1) yaz.
  5. Çalıştır ve bir topu kaçır: yenisi ortadan gelmeli.

Beceriler: Oyun durumları, Fonksiyonlar

Tüm adımlar

  1. Canvas'ı ve kalemi al
  2. Siyah saha
  3. Filenin bir parçası
  4. Bütün file
  5. İki raket
  6. Çizen bir fonksiyon
  7. Oyun döngüsü
  8. Basılı tuşları hatırla
  9. Raketleri oynat
  10. Sahada kal
  11. Top
  12. Top hareket eder
  13. Üstten ve alttan sek
  14. Top rakete değiyor mu?
  15. Raketler geri vurur
  16. Yeniden servis
  17. Skoru tut
  18. Skoru göster
  19. Beşe ilk ulaşan
  20. Kim kazandı?
  21. Yeniden oyna
  22. Raketle nişan al
  23. Her vuruşta hızlan
  24. Bilgisayar rakip
  25. Tek ya da iki oyuncu
  26. Kendin yap: servis beklemesi