Atölye › Candy Crush Tarzı Üçlü Eşleştirme › 15/29. adım
Oyun çalışıyor ama her şey bir anda oluyor: bir tıklama ve tahta çoktan değişmiş. Oyuncu neyin olduğunu görmeli: eşleşen mücevherler bir an yanıp sönmeli, sonra kaybolmalı.
Bunun için işi iki yarıya bölüyoruz ki iki yarı farklı anlarda olabilsin:
startClearing() → eşleşmeleri bul ve puanla;collapse() → eşleşenleri sil ve mücevherleri düşür.İki fonksiyon da eşleşen hücrelere bakacağı için matched artık trySwap'ın içinde değil, en üstte tanımlı.
Bu adımda ekranda bir şey değişmeyecek; yalnız kodu hazırlıyoruz.
```js
let matched // the cells being cleared
startClearing()
collapse()
function startClearing() {
matched = findMatches()
score += matched.size * 10
}
// Remove the matched gems; everything above falls down to fill the gaps, and new gems drop in from the top.
function collapse() {
for (const cell of matched) board[Math.floor(cell / N)][cell % N] = -1
```let matched → eşleşen hücreler; artık en üstte. Bir fonksiyonun içinde const ile tanımlanan bir ad yalnız o
fonksiyonda yaşar; iki fonksiyonun paylaşması için dışarıda olmalı.function startClearing() { → matched = findMatches() (eşleşmeleri bul, başında const yok: yukarıdaki
değişkene yaz) ve puanla.collapse'ın ilk satırı artık eşleşen hücreleri -1 yapmak; yorumu da bunu anlatacak şekilde değişiyor.trySwap içinde üç satırın yerine startClearing() ve collapse(). Şimdilik ikisi arka arkaya; bir sonraki adımda
arasına bekleme koyacağız.let score satırının altına let matched ... yaz.trySwap içinde const matched = ..., score += ... ve for (const cell of matched) ... satırlarını sil; yerine
startClearing() yaz (collapse() altında kalsın).collapse'ın yorum satırının üstüne startClearing fonksiyonunu yaz.collapse'ın yorumunu koddaki gibi değiştir; for (const cell of matched) ... satırını collapse'ın içinde ilk
satır olarak yaz.Beceriler: Fonksiyonlar, Oyun durumları
← Mücevherler düşsün Silmeden önce bekle →