Atölye › 2048 › 18/26. adım
2048 tahta dolunca bitmez; dolu bir tahtada hâlâ birleşme olabilir. Oyun, hiçbir hamle bir şey değiştiremeyince biter. Bir hamle mümkünse şunlardan biri doğrudur:
Her hücrenin yalnız sağ ve alt komşusuna bakmak yeter: her komşu çifti, birinin "sağı" ya da "altı"dır. Dört yöne bakmak aynı işi iki kez yapmak olurdu.
```js
// Any empty cell, or two equal neighbours (checking right and below covers every pair once).
function canMove() {
for (let row = 0; row < SIZE; row++) {
for (let col = 0; col < SIZE; col++) {
const value = board[row][col]
if (value === 0) return true
if (col < SIZE - 1 && value === board[row][col + 1]) return true
if (row < SIZE - 1 && value === board[row + 1][col]) return true
}
}
return false
}
```return true → bir boşluk ya da eşit çift bulunduğu an fonksiyon biter; gerisine bakmaya gerek yok.col < SIZE - 1 && value === board[row][col + 1] → sağda komşu varsa (son sütunda yok) ve eşitse. &&'nin
solu yanlışsa sağına hiç bakılmaz; böylece tahtanın dışını okumayız.row < SIZE - 1 && value === board[row + 1][col] → aynısı alttaki komşu için. Son satırda board[4] yok; ona
bakmak hata verirdi.return false, oyuncu sıkıştı.// Every direction is ... yorum satırının üstüne yorum satırını ve canMove fonksiyonunu yaz; altında bir boş
satır kalsın. Çalıştır.
Beceriler: Döngüler