Atölye › Tetris Tarzı Bloklar › 31/32. adım
Son dokunuş: kuyunun dibinde, parçanın nereye düşeceğini gösteren soluk bir hayalet. Oyuncu Boşluk'a basmadan önce sonucu görür.
Hayalet için sert bırakmadaki fikri kullanıyoruz ama hiçbir şeyi taşımadan: parçanın satırından başla, bir alt satıra sığdıkça bir aşağı in. Sonra parçayı o satırda yarı saydam beyazla çiz.
```js
function ghostY() {
let y = piece.y
while (fits(piece.shape, piece.x, y + 1)) y++
return y
}
function drawShape(shape, x, y, color) {
if (value) drawCell(x + c, y + r, color || COLORS[value])
drawShape(piece.shape, piece.x, ghostY(), 'rgba(255, 255, 255, 0.15)')
```let y = piece.y → gerçek piece.y'ye dokunmayız; kendi y kopyamızı artırırız.while (fits(piece.shape, piece.x, y + 1)) y++ → bir alt satıra sığdıkça bir aşağı in (y++ 1 artır). Sonuç
parçanın inebileceği en alt satır.function drawShape(shape, x, y, color) { → dördüncü, isteğe bağlı bir parametre: color.color || COLORS[value] → || burada "yoksa" gibi çalışır: color verildiyse onu, verilmediyse (boşsa) sayının
kendi rengini kullan. Eski çağrılar dördüncü değeri vermediği için eskisi gibi çalışır.'rgba(255, 255, 255, 0.15)' → beyaz, yalnız %15 görünür.fits tek bir soruyu açıkça cevaplayan küçük bir fonksiyondu; hareket, döndürme, düşme, kilitleme, oyun sonu, sert
bırakma ve hayaletin hepsi ondan çıktı.hardDrop fonksiyonunun altına bir boş satır bırakıp ghostY fonksiyonunu yaz.function drawShape(shape, x, y) { satırına , color ekle; içinde COLORS[value] yerine color || COLORS[value]
yaz.draw içinde if (state === 'playing') { bloğunda, gerçek parçayı çizen satırın üstüne hayalet satırını yaz.Beceriler: Canvas üzerine çizim, Döngüler
← Bırak gitsin Kendin yap: parçayı beklet →