Atölye › Mayın Tarlası › 12/26. adım

Tıkla ve aç

Ne yapıyoruz

Şimdi fareyle oynayalım: tıklanan hücre açılsın. Tıklamanın hangi hücre olduğunu bulan bir fonksiyon yazacağız: cellAt(event).

Hesap basit: x'i 40'a bölüp aşağı yuvarlarsan sütun (130 / 40 = 3,25 → 3). Satır için önce üst şeridi (40) çıkar. Şeride ya da tahtanın dışına tıklanırsa "hücre yok" (undefined) döner.

```js
function cellAt(event) {
  // The canvas may be displayed at a different size than its own pixels, so scale the pointer.
  const rect = canvas.getBoundingClientRect()
  const x = (event.clientX - rect.left) * (canvas.width / rect.width)
  const y = (event.clientY - rect.top) * (canvas.height / rect.height)
  const col = Math.floor(x / CELL)
  const row = Math.floor((y - TOP) / CELL)
  if (row < 0 || row >= SIZE || col < 0 || col >= SIZE) return undefined
  return grid[row][col]
}

canvas.addEventListener('click', (event) => {
  const cell = cellAt(event)
  if (cell) reveal(cell)
})
```

Ne işe yarıyor

Sıra sende

function draw() { satırının üstüne cellAt fonksiyonunu ve tıklama dinleyicisini yaz; ikisinden sonra birer boş satır kalsın. Çalıştır ve hücrelere tıkla: açılıp sayılarını göstermeli. (Mayına basarsan şimdilik bir şey olmaz; sıradaki adım.)

Beceriler: Klavye ve fare girdisi

Tüm adımlar

  1. Hücre nesnelerinden bir ızgara
  2. Tuval ve kalem
  3. Tarlayı çiz
  4. Her karede çiz
  5. Komşular
  6. Mayınlar, ama ilk tıklamanın altına değil
  7. Adayları karıştır
  8. Çevredeki mayınları say
  9. Hücre aç
  10. Açık hücre farklı görünür
  11. Renkli sayılar
  12. Tıkla ve aç
  13. Mayına basmak
  14. Mayınları göster
  15. Taşma dolgusu
  16. Sağ tuşla bayrak
  17. Bayrak hücresini korur
  18. Bayrakları çiz
  19. Kalan mayınlar
  20. Kazanmak
  21. Son ve yeni oyun
  22. Saat kaç?
  23. Saat
  24. Saati durdur
  25. En iyi süre
  26. Kendin yap: yanlış bayraklar