Atölye › Tetris Tarzı Bloklar › 6/32. adım
Her parça kendi başına minik bir tablodur, yani bir matris: sayılardan oluşan satırlar. 0 boş, 0 olmayan sayı dolu hücre. T parçası:
0 3 0
3 3 3
0 0 0
Satırları alt alta yazınca şekli gözünle görürsün: üstte ortada bir blok, altında üç blok. 3 aynı zamanda rengi: mor.
Düşen parça = şekil + kuyudaki yeri: x sütun, y satır (matrisin sol üst köşesinin yeri). Bir nesnede
tutuyoruz ve drawShape ile çiziyoruz.
```js
let piece = { shape: [[0, 3, 0], [3, 3, 3], [0, 0, 0]], x: 3, y: 0 }
function drawShape(shape, x, y) {
shape.forEach((cells, r) => {
cells.forEach((value, c) => {
if (value) drawCell(x + c, y + r, COLORS[value])
})
})
}
drawShape(piece.shape, piece.x, piece.y)
```let piece = { shape: ..., x: 3, y: 0 } → bir nesne: şekil matrisi ve kuyudaki yeri. [[0, 3, 0], [3, 3, 3], [0, 0, 0]] üç satırlık matrisin tek satırda yazılışı.function drawShape(shape, x, y) { → bir matrisi (x, y) yerine çizer:shape.forEach((cells, r) => { ... }) → forEach listedeki her eleman için fonksiyonu çalıştırır ve ona
elemanı ve sıra numarasını verir. Dıştaki her satırı (cells) ve satır numarasını (r) alır.cells.forEach((value, c) => { ... }) → o satırdaki her sayıyı (value) ve sütun numarasını (c) alır.if (value) drawCell(x + c, y + r, COLORS[value]) → sayı 0 değilse, kuyuda (x + c, y + r) hücresini sayının
rengiyle çiz. Matristeki yer + parçanın yeri = kuyudaki yer.drawShape(piece.shape, piece.x, piece.y) (draw'ın sonunda) → parçayı tahtanın üstüne çiz.let board = ... satırının altına let piece = ... satırını yaz.drawCell fonksiyonunun altına bir boş satır bırakıp drawShape fonksiyonunu yaz.draw içinde iki döngünün kapanan } satırlarının altına drawShape(piece.shape, piece.x, piece.y) yaz.Beceriler: Diziler ve nesneler, Canvas üzerine çizim
← Sayı renktir Şekil listesi →