Atölye › Dört Bağla › 13/38. adım

Tıklayarak oyna

Ne yapıyoruz

Artık fareyle oynayacağız: bir sütuna tıklayınca o sütuna disk düşsün.

Tarayıcı sayfada bir şey olunca bunu bir olay (event) olarak duyurur; sen de "şu olunca şunu yap" diye kayıt olursun. Kapıya zil takmak gibi. 'pointerdown' fareyle tıklanınca (ya da parmakla dokununca) olur.

Farenin hangi sütunda olduğunu colAt(event) hesaplayacak. Bir incelik: sayfa canvas'ı ekrana sığdırmak için büyütüp küçültebilir. O yüzden önce ekran pikselini canvas pikseline çeviriyoruz.

```js
let hoverCol = 3

function colAt(event) {
  const rect = canvas.getBoundingClientRect()
  const x = ((event.clientX - rect.left) * canvas.width) / rect.width
  return Math.min(COLS - 1, Math.max(0, Math.floor(x / CELL)))
}

canvas.addEventListener('pointerdown', (event) => {
  hoverCol = colAt(event)
  play(hoverCol)
})
```

Ne işe yarıyor

Sıra sende

  1. let turn satırının altına let hoverCol = 3 yaz.
  2. function disc( satırının üstüne colAt fonksiyonunu ve bir boş satırdan sonra pointerdown dinleyicisini yaz; altında bir boş satır kalsın.
  3. Çalıştır ve sütunlara tıkla: kırmızı ve sarı diskler sırayla dizilmeli.

Beceriler: Klavye ve fare girdisi

Tüm adımlar

  1. Koyu bir arka plan
  2. Çizen bir fonksiyon
  3. Mavi tahta
  4. Bir delik
  5. Bütün bir satır
  6. 42 deliğin hepsi
  7. Bellekteki tahta
  8. Renkli diskler
  9. Her karede çiz
  10. Disk nereye düşer?
  11. Bir sütuna oyna
  12. Sırayla
  13. Tıklayarak oyna
  14. Sıradaki disk
  15. Sıra kimde?
  16. Klavyeyle oynamak
  17. 1'den 7'ye tuşlar
  18. Yoldaki disk
  19. Yer çekimi
  20. Düşüşü izle
  21. Tahtanın içinde mi?
  22. Bir çizgi boyunca yürümek
  23. Dört yan yana mı?
  24. Kazanan var
  25. Dördünü halkala
  26. Kim kazandı?
  27. Berabere
  28. Yeniden oyna
  29. Hamleyi dene, geri al
  30. Kazan ya da engelle
  31. Oyuncuya yardım etme
  32. Ortayı tercih et
  33. Sıra bilgisayarda
  34. Sadece senin sıranda
  35. Sen ve bilgisayar
  36. Galibiyetleri say
  37. Skoru göster
  38. Kendin yap: kaybeden başlasın