Atölye › Kule Savunması › 19/42. adım
Kule saniyede defalarca aynı soruyu sorar: hangi düşmanı vurayım? Klasik cevap: menzilimdekiler arasında en
uzağa yürümüş olanı, çünkü geçip gitmeye en yakın o. d sayesinde "en uzağa" demek sadece "en büyük d".
Menzilde mi? Kuleden düşmana düz uzaklık, kulenin menzilinden küçük ya da eşitse.
```js
// The enemy in range that has walked the furthest: it is the closest to getting through.
function targetFor(tower) {
const range = TOWERS[tower.kind].range
let target = null
for (const e of enemies) {
const p = pointAt(e.d)
const inRange = Math.hypot(p.x - tower.col, p.y - tower.row) <= range
if (inRange && (!target || e.d > target.d)) target = e
}
return target
}
```const range = TOWERS[tower.kind].range → bu kulenin menzili.let target = null → şimdilik hedef yok.Math.hypot(p.x - tower.col, p.y - tower.row) → kuleden düşmana düz uzaklık (Pisagor: √(dx² + dy²)), kare olarak.if (inRange && (!target || e.d > target.d)) target = e → menzildeyse ve (henüz hedef yoksa ya da bu
düşman öncekinden uzağa yürümüşse) hedef bu olur. Parantez önemli: || önce kendi içinde değerlendirilir.return target → bulunan hedef, ya da kimse menzilde değilse null.function update() { satırının üstüne yorumu ve targetFor'u yaz.Beceriler: Çarpışma tespiti