Atölye › 2048 › 3/26. adım
Tahtanın verisi bir 2 boyutlu dizi: 4 satırdan oluşan bir liste, her satır da 4 sayıdan oluşan bir liste. 0 boş
hücre demek. Bir hücreyi board[satır][sütun] diye okuruz; tıpkı resimdeki gibi, önce satır sonra sütun.
[
[0, 2, 0, 0], // board[0]: en üst satır
[0, 0, 4, 0], // board[1][2] → 4
...
]
Boş tahtayı kurarken JavaScript'in en ünlü tuzaklarından biri saklı; aşağıda.
```js
let board
function newGame() {
// Array.from calls the function for every row, so each row is its own array.
board = Array.from({ length: SIZE }, () => Array(SIZE).fill(0))
}
newGame()
draw()
```let board → tahtayı tutacak değişken; içini newGame dolduracak.Array(SIZE).fill(0) → 4 kutuluk bir liste yapıp hepsine 0 koyar: bir satır.Array.from({ length: SIZE }, () => ...) → 4 elemanlı bir liste yapar ve her eleman için sağdaki ok
fonksiyonunu ayrı ayrı çağırır. Her çağrı yepyeni bir satır üretir.Array(4).fill(Array(4).fill(0)) de doğru görünür, ama fill dört yere aynı satır nesnesini koyar.
board[0][0] = 2 yazınca board[1][0], board[2][0], board[3][0] da 2 olur; çünkü aslında tek bir satır
var, dört yerden görünüyor. Bir değer ile bir nesneye başvuru (referans) arasındaki bu fark, oyunların çok
ötesinde sayısız hataya yol açar.newGame() → çizmeden önce tahtayı kur.const TOP = ... satırının altında bir boş satır bırak ve let board yaz.function cellX(col) { satırının üstüne newGame fonksiyonunu yaz; altında bir boş satır kalsın.draw() satırının üstüne newGame() yaz.Beceriler: Diziler ve nesneler
← On altı hücre Her sayıya bir renk →