Atölye › Ay'a İniş › 1/31. adım
Motoru çalıştır ve iniş aracını eğerek pistin üstüne yumuşakça in. Rastgele arazi, sin ve cos ile bir açı boyunca yerçekimi ve itki, döndürülen çizimler, güvenli inişin kuralları ve işler ters gidince enkaz.
Ay'ın yüzeyini bir yükseklik listesi olarak tutacağız: her 40 pikselde bir nokta, her noktanın bir y'si.
Noktaları düz çizgilerle birleştirince tepeler çıkacak. Yükseklikler rastgele olacak; her oyunda başka bir arazi.
Bu adımda yalnız listeyi yapıyoruz; ekranda henüz bir şey görünmeyecek.
```js
const canvas = document.getElementById('game')
const ctx = canvas.getContext('2d')
const STEP = 40 // the ground is a line through a point every STEP pixels
let ground // y of the ground at x = 0, STEP, 2 * STEP, ...
function makeGround() {
const points = canvas.width / STEP + 1
ground = Array.from({ length: points }, () => 210 + Math.random() * 120)
}
makeGround()
```canvas, ctx → sayfadaki canvas ve onun 2D çizim kalemi.const STEP = 40 → iki zemin noktası arasındaki yatay mesafe.let ground → yükseklik listesi. Yorum ne tuttuğunu söylüyor: x = 0, 40, 80... noktalarındaki zeminin y'si.const points = canvas.width / STEP + 1 → 480 / 40 = 12 aralık, uçlarıyla birlikte 13 nokta.Array.from({ length: points }, () => ...) → points uzunluğunda yeni bir liste yapar; her yerine oktaki
küçük fonksiyonun verdiğini koyar.210 + Math.random() * 120 → Math.random() 0 ile 1 arasında rastgele bir sayı; 120 ile çarpıp 210 ekleyince
210 ile 330 arası bir yükseklik. (Canvas'ta y aşağı doğru büyür: bunlar alanın alt yarısı.)makeGround() → fonksiyonu bir kez çalıştırır.Kodu editördeki üç yorum satırının altına yaz; boş satırları da aynen bırak. Çalıştır'a bas: ekran boş kalır, ama alttaki kontroller yeşil olmalı.
Beceriler: Diziler ve nesneler