Atölye › Tuğla Kırma › 12/39. adım
Şimdi raket işe yarasın: top raketin üst yüzüne değince yukarı seksin. Topun değdiğini söylemek için birkaç şeyin aynı anda doğru olması gerekir:
Bu uzun sorunun cevabını (doğru ya da yanlış) bir ada koyuyoruz: onPaddle ("raketin üstünde").
```js
const onPaddle =
ball.vy > 0 &&
ball.y + BALL_R >= PADDLE_Y &&
ball.y + BALL_R <= PADDLE_Y + PADDLE_H + ball.vy &&
ball.x >= paddle.x &&
ball.x <= paddle.x + PADDLE_W
if (onPaddle) {
ball.vy = -Math.abs(ball.vy)
ball.y = PADDLE_Y - BALL_R
}
```&& → "ve": iki tarafı da doğruysa sonuç doğrudur. Beş parçayı && ile bağlayınca "hepsi doğru mu?" diye
sormuş oluruz. >= "büyük veya eşit mi?", <= "küçük veya eşit mi?" demek.&& durdukça bilgisayar devam ettiğini anlar.ball.vy > 0 → top aşağı gidiyor.ball.y + BALL_R >= PADDLE_Y → topun alt kenarı raketin üst yüzüne ulaştı.ball.y + BALL_R <= PADDLE_Y + PADDLE_H + ball.vy → ama raketi en fazla bir karelik hareket kadar geçti.ball.vy = -Math.abs(ball.vy) → eksisi atılıp başına eksi konan sayı her zaman eksidir: top yukarı gider.ball.y = PADDLE_Y - BALL_R → topu raketin tam üstüne oturtur.update içinde tavan if'inin kapanış }'i ile en alttaki if (ball.y - BALL_R > canvas.height) resetBall()
satırının arasına raket kontrolünü yaz. Üstünde ve altında birer boş satır kalsın.&& ile bitmeli.Beceriler: Çarpışma tespiti
← Açık zemin Raketle nişan al →