Atölye › Candy Crush Tarzı Üçlü Eşleştirme › 16/29. adım
Şimdi iki yarının arasına bekleme koyuyoruz. Oyunun o an ne yaptığını bir değişkende tutacağız: phase (evre).
'idle' (boşta) → oyuncuyu bekliyor;'clearing' (siliniyor) → eşleşen mücevherler 14 kare (yaklaşık dörtte bir saniye) bekliyor.Bir de her karede çalışan update (güncelle) fonksiyonu: evre 'clearing' ise sayacı bir azaltır, sıfıra inince
collapse()'ı çağırır. Buna durum makinesi (state machine) denir: oyun her an bir evrededir ve her evrenin kendi
işi vardır.
```js
let phase // 'idle' or 'clearing' (matched gems flash)
let timer
function reset() {
// ...
phase = 'idle'
}
function startClearing() {
// ...
phase = 'clearing'
timer = 14
}
function collapse() {
// ...
phase = 'idle'
}
function update() {
if (phase === 'clearing') {
timer -= 1
if (timer === 0) collapse()
return
}
}
function loop() {
update()
draw()
```let phase, let timer → evre ve sayaç.phase = 'idle' (reset'in sonunda) → oyun boşta başlar.phase = 'clearing' ve timer = 14 (startClearing'in sonunda) → silme evresi başlar, 14 kare sürecek.trySwap içindeki collapse() satırı siliniyor: artık hemen değil, sayaç bitince.phase = 'idle' (collapse'ın sonunda) → silme bitti, yine oyuncuyu bekle.function update() { →if (phase === 'clearing') { → silme evresindeysek:timer -= 1 → sayacı bir azalt; if (timer === 0) collapse() → sıfırsa sil ve düşür.return → bu karede başka iş yok.update() (loop içinde, draw()'dan önce) → her karede önce durumu ilerlet, sonra çiz.let matched ... satırının üstüne let phase ... ve let timer yaz.reset içinde en sona phase = 'idle' yaz.startClearing içinde en sona phase = 'clearing' ve timer = 14 yaz.trySwap içindeki collapse() satırını sil.collapse içinde en sona, sütun döngüsünün kapanan } satırının altına phase = 'idle' yaz.function cellAt(event) { satırının üstüne update fonksiyonunu yaz; loop içinde draw()'un üstüne
update() yaz.Beceriler: Oyun durumları, Oyun döngüsü
← Silmenin iki yarısı Yanıp sön, dokunma →