Atölye › Scorched Earth Tarzı Topçu › 19/23. adım

Bilgisayar nişan alıyor

Ne yapıyoruz

Bilgisayar hayal ederek nişan alsın. Kafasında yaklaşık 17 açı × 17 güç = neredeyse 300 atış denesin; gerçek mermilerle aynı fly fonksiyonunu (gerçek rüzgârla) kullanarak. Sana en yakın düşeni hatırlasın. Sonra bilerek biraz şaşırsın; yoksa hiç ıskalamazdı.

```js
// The computer tries many shots in its head, picks the one landing closest to you, then misses a little.
function computerAim() {
  const me = tanks[1]
  let best = null
  for (let angle = -Math.PI + 0.2; angle < -Math.PI / 2; angle += 0.03) {
    for (let power = 4; power <= MAX_POWER; power += 0.5) {
      const s = { x: me.x + Math.cos(angle) * 14, y: me.y - 8 + Math.sin(angle) * 14, vx: Math.cos(angle) * power, vy: Math.sin(angle) * power }
      let hit = null
      for (let i = 0; i < 400 && !hit; i++) hit = fly(s)
      if (hit === 'away') continue
      const miss = Math.abs(s.x - tanks[0].x)
      if (!best || miss < best.miss) best = { miss, angle, power }
    }
  }
  me.angle = best.angle + (Math.random() - 0.5) * 0.08
  me.power = Math.min(MAX_POWER, best.power + (Math.random() - 0.5) * 0.8)
}

    computerAim()
```

Ne işe yarıyor

Sıra sende

  1. update'in üstüne yorumuyla computerAim fonksiyonunu yaz.
  2. update'te bilgisayarın fire() satırının üstüne computerAim() yaz. Çalıştır ve oyna.

Beceriler: Hız ve yerçekimi, Döngüler

Tüm adımlar

  1. Zemin
  2. Tepeler
  3. İki tank
  4. Namlu
  5. Oyun döngüsü
  6. Nişan al
  7. Açı ve güç
  8. Ateş!
  9. Uçuş
  10. Bum
  11. Kraterler
  12. Düşen tanklar
  13. Hasar
  14. Sırayla
  15. Bilgisayarın atışı
  16. Tanka isabet
  17. Kazan ya da kaybet
  18. Rüzgâr
  19. Bilgisayar nişan alıyor
  20. Fareyle nişan al
  21. Sürükle ve bırak
  22. atan2 tuzağı
  23. Kendin yap: iz