Atölye › Angry Birds Tarzı Sapan › 39/47. adım
Atış bitince (her şey bir saniye durunca) oyun karar verir:
'won'. Kullanmadığın her kuş 1000 puan eder.'lost'.'aiming'.Sakinliği beklemek burada önemli: bir kule çarpmadan sonra bir saniye daha yıkılmaya devam edebilir; en sonda ezilen domuz da sayılmalı. Kullanılmayan kuşa bonus ise oyuncuyu seviyeyi tekrar oynatır: tek mükemmel atış, üç atıştan 2000 puan fazla eder. Oyun bitince fizik de durur.
```js
let state // 'aiming', 'flying', 'won' or 'lost'
function update() {
if (state !== 'flying' && state !== 'aiming') return
...
if (pigs().length === 0) {
score += birdsLeft * 1000 // unused birds are worth a lot
state = 'won'
} else if (birdsLeft === 0) state = 'lost'
else state = 'aiming'
}
```let state yorumu → durum artık dört kelimeden biri olabilir.if (state !== 'flying' && state !== 'aiming') return → ne uçuyor ne nişan alıyorsak (oyun bittiyse) update
hiçbir şey yapmaz: fizik donar.pigs().length === 0 → domuz listesinin uzunluğu 0: hiç domuz kalmadı.score += birdsLeft * 1000 → kalan her kuş 1000 puan.state = 'won' → kazandın.else if (birdsLeft === 0) state = 'lost' → domuz var ama kuş yok: kaybettin.else state = 'aiming' → ikisi de değilse sapana yeni kuş.let state satırının yorumunu // 'aiming', 'flying', 'won' or 'lost' yap.update'in ilk satırı olarak if (state !== 'flying' && state !== 'aiming') return yaz.update'in sonundaki state = 'aiming' satırını sil; yerine karar bloğunu yaz.Beceriler: Oyun durumları