Atölye › Scorched Earth Tarzı Topçu › 20/23. adım
Telefonda ok tuşu yok; göstererek nişan alınabilsin: namludan parmağa (ya da fareye) olan yön açı, uzaklık
güç olsun. Math.atan2 bir yönü açıya çeviriyor. Oyun bitince bir dokunuş yeniden oynatsın.
```js
// Point from your tank: the direction is the aim, the distance is the power.
function pointAt(event) {
const rect = canvas.getBoundingClientRect()
const x = ((event.clientX - rect.left) * W) / rect.width
const y = ((event.clientY - rect.top) * H) / rect.height
const t = tanks[0]
const angle = Math.atan2(y - (t.y - 8), x - t.x)
t.angle = angle
t.power = Math.max(2, Math.min(MAX_POWER, Math.hypot(x - t.x, y - (t.y - 8)) / 12))
}
canvas.addEventListener('pointerdown', (event) => {
if (state === 'won' || state === 'lost') return reset()
if (state !== 'aiming' || turn !== 0) return
pointAt(event)
})
```(event.clientX - rect.left) * W / rect.width → dokunuşun yerini tuval pikseline çevirir; tuval ekranda büyük ya da
küçük gösterilse de doğru.Math.atan2(dy, dx) → (dx, dy) yönünün açısı. Dikkat: önce y. Namlunun dibinden (t.y - 8) ölçülüyor.Math.hypot(...) / 12 → her 12 piksellik uzaklık 1 güç; 2 ile 12 arasında tutulur.return reset() → oyun bittiyse dokunuş yeni oyun başlatır ve orada durur.draw'ın üstüne yorumuyla pointAt fonksiyonunu ve dokunma dinleyicisini yaz. Çalıştır ve tuvale tıkla.
Beceriler: Klavye ve fare girdisi, Hız ve yerçekimi
← Bilgisayar nişan alıyor Sürükle ve bırak →