Atölye › Candy Crush Tarzı Üçlü Eşleştirme › 10/29. adım

Bütün eşleşmeleri bul

Ne yapıyoruz

Oyunun kalbi: tahtada aynı renkten üç ya da daha fazla yan yana ya da alt alta dizilmiş mücevherleri bulmak. findMatches (eşleşmeleri bul) böyle bir sıranın parçası olan her hücreyi bulacak.

Yöntem: her hücreden iki yöne bakarız, sağa ve aşağı. O yönde aynı renk kaç hücre devam ediyor, sayarız; 3 ya da fazlaysa hepsini listeye ekleriz. Bir incelik: bir sırayı yalnız ilk mücevherinden sayarız; sıranın ortasındaki bir hücreden yeniden saymayız.

Ekranda bir şey değişmeyecek; kontroller fonksiyonu deniyor.

```js
// Every cell that is part of three or more of the same color in a row or a column.
function findMatches() {
  const cells = new Set()
  for (let r = 0; r < N; r++) {
    for (let c = 0; c < N; c++) {
      const gem = board[r][c]
      for (const [dr, dc] of [[0, 1], [1, 0]]) {
        // Only start counting at the first gem of a run.
        const pr = r - dr
        const pc = c - dc
        if (pr >= 0 && pc >= 0 && board[pr][pc] === gem) continue
        let length = 1
        while (r + dr * length < N && c + dc * length < N && board[r + dr * length][c + dc * length] === gem) length++
        if (length >= 3) for (let i = 0; i < length; i++) cells.add((r + dr * i) * N + (c + dc * i))
      }
    }
  }
  return cells
}
```

Ne işe yarıyor

Sıra sende

  1. Yorum satırını ve findMatches fonksiyonunu function swap(a, b) { satırının üstüne yaz; altında bir boş satır kalsın.
  2. Uzun while satırını dikkatle yaz: tek satır.
  3. Çalıştır: ekran değişmez; kontroller fonksiyonu deniyor.

Beceriler: Diziler ve nesneler, Döngüler

Tüm adımlar

  1. Tahtanın yeri
  2. Damalı ızgara
  3. Oyun döngüsü
  4. Rastgele mücevherli tahta
  5. Mücevherleri çiz
  6. Eşleşmesiz başla
  7. Bir mücevhere tıkla
  8. Seçimi göster
  9. İki komşuyu takas et
  10. Bütün eşleşmeleri bul
  11. Eşleşme yoksa takas yok
  12. Skor ve yeni başlangıç
  13. Eşleşeni sil
  14. Mücevherler düşsün
  15. Silmenin iki yarısı
  16. Silmeden önce bekle
  17. Yanıp sön, dokunma
  18. Zincirleme
  19. Mücevher nereden geldi
  20. Kayarak in
  21. Üstün altından çık
  22. Hiç hamle var mı?
  23. Asla sıkışma
  24. Beş saniye sonra ipucu
  25. İpucunu göster
  26. Yirmi hamle
  27. Oyunun sonu
  28. En iyi skoru hatırla
  29. Kendin yap: kaydırarak takas