Atölye › Pinball › 14/42. adım
İki küçük sorun var: kanalda bekleyen top yerçekimiyle tabana düşüp zıplıyor, ve Boşluk'a oyun sırasında basınca top havadayken yeniden fırlıyor.
İkisini tek bir değişkenle çözüyoruz: state (durum). Top ya 'ready' (kanalda, fırlatılmayı bekliyor) ya da
'playing' (oyunda):
'ready' iken fizik çalışmaz, top yerinde bekler;'ready' iken olur ve durumu 'playing' yapar.```js
let state // 'ready' (in the lane) or 'playing'
function newBall() {
ball = { x: LANE_X, y: 570, vx: 0, vy: 0 }
state = 'ready'
}
function update() {
if (state === 'ready') return
function launch() {
if (state !== 'ready') return
ball.vy = -16
state = 'playing'
}
```let state → topun durumu. Değerleri yazı (metin): 'ready' ya da 'playing'.state = 'ready' (newBall içinde) → her yeni top beklemeye başlar.if (state === 'ready') return → update'in ilk satırı. return fonksiyonu orada bitirir: bekleyen topa
yerçekimi de hareket de uygulanmaz.if (state !== 'ready') return → !== "eşit değil mi?". Top beklemiyorsa launch hiçbir şey yapmadan biter.state = 'playing' → fırlatılan top artık oyunda.let ball ... satırının altına let state ... satırını yaz.newBall içinde ball = { ... } satırının altına state = 'ready' yaz.update içinde en üste if (state === 'ready') return yaz.launch içinde en üste if (state !== 'ready') return, ball.vy = -16 satırının altına state = 'playing' yaz.Beceriler: Oyun durumları
← Küçük adımlar ve hız sınırı Sıradaki top →