Atölye › Pong › 16/26. adım
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)
```let ball → top artık baştan değer almıyor; onu serve kuracak.function serve(direction) → direction yön: 1 sağa, -1 sola.x: canvas.width / 2 - BALL / 2 → tam orta (topun genişliğinin yarısı kadar sola, ki ortası ortaya gelsin).vx: 4 * direction → hızın işaretini yön belirler: 4 ya da -4.Math.random() < 0.5 ? -3 : 3 → koşul ? evetse : hayırsa: yarı yarıya yukarı (-3) ya da aşağı (3).if (ball.x + BALL < 0) serve(-1) → topun sağ kenarı bile sol duvarı geçtiyse sol oyuncu kaçırdı: servis ona
doğru, sola.else if (ball.x > canvas.width) serve(1) → sağdan çıktıysa sağa doğru.serve(1) → oyun başlarken ilk top.let ball = { x: 295, ... } satırını yalnız let ball yap.clamp fonksiyonunun altına bir boş satır bırakıp serve fonksiyonunu yaz.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).requestAnimationFrame(loop) satırının hemen üstüne serve(1) yaz.Beceriler: Oyun durumları, Fonksiyonlar
← Raketler geri vurur Skoru tut →