Atölye › Doodle Jump Tarzı Tırmanış › 14/24. adım
Altı sabit platform yerine bitmeyen, rastgele platformlar geliyor. fillPlatforms en yüksek platformun üstüne,
ekran (ve biraz fazlası) dolana kadar platform ekliyor. Aralarındaki boşluk zorlukla büyüyor ama bir sekişin
ulaşabileceğinden asla fazla olmuyor. Ekranın altına düşen platformlar unutuluyor; bellek şişmesin.
```js
// A bounce rises about JUMP * JUMP / (2 * GRAVITY) = 172 pixels, so a gap must stay well below that.
const MAX_GAP = 110
let platforms = [{ x: 170, y: START_Y, w: 60, h: 12 }]
let highest = START_Y // world y of the highest platform so far
// Add platforms above the highest one until the screen (and a little more) is full.
function fillPlatforms() {
while (highest > cameraY - 100) {
const d = difficulty(highest)
const gap = 45 + Math.random() * (MAX_GAP - 45) * (0.4 + 0.6 * d)
highest -= gap
platforms.push({ x: Math.random() * (canvas.width - 60), y: highest, w: 60, h: 12 })
}
}
fillPlatforms()
platforms = platforms.filter((p) => p.y < cameraY + canvas.height + 20)
fillPlatforms()
```let platforms = [...] → artık let: liste değişecek. Başta tek platform, START_Y'de.let highest = START_Y → şimdiye kadarki en yüksek platformun yüksekliği.while (highest > cameraY - 100) → en yüksek platform hâlâ ekranın tepesinin 100 piksel üstüne ulaşmadıysa ekle.
while koşul doğru olduğu sürece döner.const gap = 45 + Math.random() * (MAX_GAP - 45) * (0.4 + 0.6 * d) → en az 45; başta en fazla 45 + 65 × 0,4 = 71,
zorluk arttıkça en fazla 110. (110, bir sekişin ~172 pikselinin rahatça altında.)highest -= gap → bir üst platformun yüksekliği.x: Math.random() * (canvas.width - 60) → platform tamamen ekranda kalacak şekilde rastgele yatay yer.update'te: kamera kayınca yukarıya yenilerini ekle, ekranın 20 piksel altından aşağı düşenleri filter ile at.fillPlatforms() → oyun başlarken ekranı doldur.START_Y satırının altına yorumu ve MAX_GAP satırını yaz.const platforms = [...] listesini tek platformlu let platforms = [...] satırıyla değiştir;
cameraY satırının altına highest satırını yaz.difficulty fonksiyonunun altına yorumu ve fillPlatforms fonksiyonunu yaz.update içinde kamera satırının altına iki satırı yaz.requestAnimationFrame(loop) satırının üstüne fillPlatforms() yaz.Beceriler: Döngüler, Oyun durumları
← Ne kadar zor olsun? Iskala ve düş →