Atölye › Köstebek Vurmaca › 10/18. adım
Oyun 30 saniyelik bir tur olacak. Tur başlamadan çayır "Click to start" (başlamak için tıkla) yazısıyla beklesin;
ilk tıklama turu başlatan start fonksiyonunu çağırsın.
Oyunun bir durumu var: 'ready' (hazır), 'playing' (oynanıyor), 'over' (bitti). Köstebekler yalnız
'playing' sırasında çıkar.
```js
const ROUND = 30000 // a round lasts 30 seconds
let state = 'ready' // 'ready', 'playing' or 'over'
let endsAt = 0
function start() {
state = 'playing'
score = 0
endsAt = now + ROUND
nextPop = now
for (const hole of holes) hole.upUntil = 0
}
if (state !== 'playing') {
start()
return
}
if (state !== 'playing') return
ctx.textAlign = 'center'
if (state === 'ready') {
ctx.fillText('Click to start', canvas.width / 2, canvas.height / 2)
}
```ROUND → turun süresi: 30 000 ms = 30 saniye.let state = 'ready' → başta "hazır". let endsAt = 0 → turun biteceği zaman.function start() → yeni tur: durum 'playing', skor 0, endsAt = now + ROUND (şu andan 30 sn sonra),
nextPop = now (ilk köstebek hemen), bütün delikler boş.pointerdown başında: oyun oynanmıyorsa start() ve return → bu tıklama tur başlatır, köstebek vurmaz.update başında: oynanmıyorsa hiçbir şey yapma; köstebek çıkmaz.if (state === 'ready') → hazır durumunda ortaya yazı.const HOLE_R = 40 satırının altına ROUND; let score = 0 satırının altına state ve endsAt satırlarını yaz.pointerdown dinleyicisinin üstüne start fonksiyonunu yaz; dinleyicinin ilk satırlarına başlatma kontrolünü
yaz.update'in ilk satırı if (state !== 'playing') return olsun.draw'ın sonuna, bir boş satırdan sonra ortalanmış "Click to start" bloğunu yaz.Beceriler: Oyun durumları