Atölye › Adam Asmaca › 22/36. adım
Altı if çalışıyor ama hepsi aynı şeyi söylüyor: "n. ıskada n. parçayı çiz". Tekrar eden kod, daha düzgün bir yol
olduğunun işaretidir.
Fikir: parçaları sırayla bir listeye koymak ve ilk wrong tanesini çizmek. Listenin elemanları sayı ya da yazı
değil, fonksiyon olacak: her eleman bir parçayı çizen küçük bir fonksiyon. JavaScript'te fonksiyonlar da birer
değerdir; sayılar gibi bir listede durabilirler. Ekran aynı kalacak; kod toparlanacak.
```js
// One drawing per wrong guess.
const PARTS = [
() => {
ctx.beginPath()
ctx.arc(170, 110, 20, 0, Math.PI * 2) // head
ctx.stroke()
},
() => line(170, 130, 170, 200), // body
() => line(170, 150, 140, 180), // left arm
() => line(170, 150, 200, 180), // right arm
() => line(170, 200, 145, 245), // left leg
() => line(170, 200, 195, 245), // right leg
]
for (let i = 0; i < wrong; i++) PARTS[i]()
```const PARTS = [ ... ] → altı elemanlı bir liste; her eleman bir ok fonksiyonu, çizim sırasıyla.() => line(170, 130, 170, 200) → parametresiz, tek satırlık fonksiyon: çağrılınca gövdeyi çizer.{ } içinde yazıldı. Her elemandan sonra virgül var.PARTS[0] → listedeki ilk fonksiyon; sonuna () koyunca çağrılır: PARTS[0]() başı çizer.for (let i = 0; i < wrong; i++) PARTS[i]() → bir döngü:let i = 0 → sayaç 0'dan başlar.i < wrong → sayaç wrong'dan küçük olduğu sürece tekrarla.i++ → her turdan sonra i'yi 1 artır.wrong 2 ise PARTS[0]() ve PARTS[1]() çalışır: baş ve gövde.function draw() { satırının üstüne yorum satırıyla birlikte PARTS listesini yaz; arada bir boş satır kalsın.
Başın üç satırını if bloğundan buraya taşıyabilirsin.draw içinde başı çizen if (wrong > 0) { ... } bloğunu ve beş if satırını sil; yerlerine tek for
satırını yaz (ctx.lineWidth = 4 satırının altına).Beceriler: Diziler ve nesneler, Fonksiyonlar
← Gövde, kollar ve bacaklar Kaybetmek →