Atölye › Mayın Tarlası › 16/26. adım
Oyuncular altında mayın olduğundan emin oldukları hücreyi bayrakla işaretler; bunun için sağ tuş kullanılır.
Hücreye yeni bir bilgi: flagged (bayraklı mı).
Sağ tıklayınca tarayıcı 'contextmenu' olayını gönderir ve normalde kendi menüsünü açar. Olayı dinleyen fonksiyonda
event.preventDefault() çağırırsak bu varsayılan davranış durur; sağ tuş artık sadece oyunundur.
```js
Array.from({ length: SIZE }, (_, col) => ({ row, col, mine: false, count: 0, revealed: false, flagged: false })),
function toggleFlag(cell) {
if (cell.revealed || state === 'lost') return
cell.flagged = !cell.flagged
}
canvas.addEventListener('contextmenu', (event) => {
event.preventDefault() // no browser menu: right click places a flag
const cell = cellAt(event)
if (cell) toggleFlag(cell)
})
```flagged: false → her hücre bayraksız başlar.cell.flagged = !cell.flagged → aç/kapa (toggle): ! tersini alır; bayrak varsa kaldırır, yoksa koyar.if (cell.revealed || state === 'lost') return → açık hücreye ya da kaybedilmiş oyunda bayrak konmaz.canvas.addEventListener('contextmenu', ...) → sağ tıklamayı dinler.event.preventDefault() → tarayıcının menüsü açılmasın.cellAt(event) → sol tıklamadaki gibi hücreyi bulur; varsa bayrağını değiştir.newGame içindeki hücre nesnesine flagged: false ekle.function lose() { satırının üstüne toggleFlag fonksiyonunu yaz; arada bir boş satır kalsın.function draw() { satırının üstüne contextmenu dinleyicisini yaz; arada bir boş satır kalsın.Beceriler: Klavye ve fare girdisi
← Taşma dolgusu Bayrak hücresini korur →