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

Hiç hamle var mı?

Ne yapıyoruz

Bir tahtada hamle bitebilir: hiçbir takas eşleşme yapmaz ve oyuncu sonsuza kadar takılır kalır. Oyun bunu fark etmeli.

Herhangi bir hamle var mı? En basit dürüst cevap: hepsini dene. Yalnız 112 komşu çifti var (her hücre sağındaki ve altındaki komşusuyla). Her biri için takas et, bak, geri takas et. Tahta tam eski hâline döner; biz de hamle olup olmadığını ve hangisi olduğunu öğreniriz. Satranç programları da böyle düşünür: hamleyi kendi tahtasında oynar, bakar ve geri alır.

```js
// Is there any swap that would make a match? Try each one, look, and swap back.
function hasMove() {
  for (let r = 0; r < N; r++) {
    for (let c = 0; c < N; c++) {
      for (const [dr, dc] of [[0, 1], [1, 0]]) {
        if (r + dr >= N || c + dc >= N) continue
        const a = { r, c }
        const b = { r: r + dr, c: c + dc }
        swap(a, b)
        const found = findMatches().size > 0
        swap(a, b)
        if (found) return { a, b }
      }
    }
  }
  return null
}
```

Ne işe yarıyor

Sıra sende

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

Beceriler: Döngüler, Oyun durumları

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