Atölye › 2048 › 10/26. adım

Bir satırı kaydır

Ne yapıyoruz

Bütün oyun tek bir fonksiyona dayanıyor: bir satırı sola kaydırmak. Diğer üç yönü de sonra buna çevireceğiz.

Önce yalnız kayma: karolar boşlukların üstünden sola kayar. Kolay bir yolu var: sıfırları at, kalanları sırayla yaz, sonra sonunu yine sıfırla doldur. [0, 4, 0, 2] → [4, 2] → [4, 2, 0, 0].

Fonksiyonu saf (pure) yazacağız: satırı alır, yeni bir satır ve kazanılan puanı geri verir; tahtaya ya da başka hiçbir şeye dokunmaz. Saf fonksiyonlar test etmesi ve güvenmesi en kolay koddur: aynı girdi hep aynı sonucu verir.

```js
// Slides one row to the left. Pure: returns a new row and the points gained, and changes nothing else.
function slideRow(row) {
  const tiles = row.filter((value) => value !== 0)
  const result = []
  let gained = 0
  for (let i = 0; i < tiles.length; i++) {
    result.push(tiles[i])
  }
  while (result.length < SIZE) result.push(0)
  return { row: result, gained }
}
```

Ne işe yarıyor

Sıra sende

function cellX(col) { satırının üstüne yorum satırını ve slideRow fonksiyonunu yaz; altında bir boş satır kalsın. Çalıştır: ekran değişmez.

Beceriler: Fonksiyonlar, Diziler ve nesneler

Tüm adımlar

  1. Tahta
  2. On altı hücre
  3. Sayılardan bir ızgara
  4. Her sayıya bir renk
  5. Karolara sayılar
  6. Büyük sayı, küçük yazı
  7. Boş hücreleri bul
  8. Yeni bir karo
  9. Başlangıçta iki karo
  10. Bir satırı kaydır
  11. Eşit karoları birleştir
  12. Sola hareket
  13. Ok tuşu
  14. Yalnız gerçek hamleler sayılır
  15. Sağ, ters çevrilmiş sol
  16. Yukarı ve aşağı sütunlardır
  17. Skor
  18. Hamle kaldı mı?
  19. Oyun bitti
  20. 2048 yapmak
  21. Kazanma ve kaybetme ekranları
  22. Devam için Boşluk
  23. Rekor
  24. Kaydırmalar
  25. Dokunmak kaydırmak değildir
  26. Kendin yap: geri al