Atölye › 2048 › 11/26. adım
Şimdi oyunun kalbi: birleştirme. İki eşit komşu karo tek bir karoda birleşir, değeri iki katına çıkar. Ama bir kural var ve ilk denemelerin çoğu burada yanılır: birleşmeden yeni çıkan karo aynı hamlede bir daha birleşemez.
[2, 2, 2, 2] → [4, 4, 0, 0] [8, 0, 0, 0] değil
[4, 4, 8, 0] → [8, 8, 0, 0] [16, 0, 0, 0] değil
Sıfırları zaten attık; karoları soldan sağa yürürken bir karo bir sonrakine eşitse toplamlarını yazıp sonrakini atlarız. Böylece bir karo iki kez kullanılamaz.
```js
if (tiles[i] === tiles[i + 1]) {
result.push(tiles[i] * 2)
gained += tiles[i] * 2
i++ // the next tile was used up by this merge
} else {
result.push(tiles[i])
}
```if (tiles[i] === tiles[i + 1]) → bu karo bir sonrakiyle aynı mı?result.push(tiles[i] * 2) → birleşmiş karo: iki katı. gained += tiles[i] * 2 → birleşmenin değeri puana eklenir.i++ → döngünün kendi i++'sına ek olarak bir kez daha artırır: sonraki karoyu atla, çünkü birleşmede
kullanıldı. Yeni çıkan 4 result'ta durur, tiles'a hiç geri bakılmaz; bu yüzden aynı hamlede yeniden
birleşemez.else → eşit değilse karoyu olduğu gibi yaz.tiles[i + 1] listenin dışına düşer ve undefined verir; hiçbir sayıya eşit değildir.slideRow içindeki döngüde result.push(tiles[i]) satırını sil; yerine if ... else bloğunu yaz. Çalıştır.
Beceriler: Döngüler
← Bir satırı kaydır Sola hareket →