Atölye › 2048 › 14/26. adım
Bir hamle ancak bir şeyi değiştirdiyse sayılmalı. Yoksa oyuncu işe yaramayan bir yöne basıp durarak tahtayı yeni karolarla doldurabilirdi.
Tahtanın hamleden önceki hâlini saklayıp sonrakiyle karşılaştıracağız. İki diziyi === ile karşılaştıramayız (iki
ayrı dizi, içleri aynı olsa da "aynı nesne" değildir); bu yüzden tahtayı yazıya çeviririz ve yazıları
karşılaştırırız.
```js
function move(direction) {
const before = JSON.stringify(board)
if (JSON.stringify(board) === before) return false
addTile()
return true
}
```JSON.stringify(board) → bütün tahtayı tek bir yazıya çevirir: '[[2,4,0,0],[0,0,0,0],...]'. Yazılar === ile
harf harf karşılaştırılabilir.const before = ... → hamleden önceki hâl.if (JSON.stringify(board) === before) return false → hamleden sonra yazı aynıysa hiçbir şey değişmemiş: karo
eklemeden çık ve false ("hamle olmadı") döndür.return true → hamle oldu. Bu cevabı ileride kullanacağız.move'un ilk satırı olarak const before = JSON.stringify(board) yaz.}'sinden sonra, addTile() satırının üstüne karşılaştırma satırını, altına return true
yaz.Beceriler: Oyun durumları
← Ok tuşu Sağ, ters çevrilmiş sol →