Atölye › Yazı Yağmuru › 11/33. adım
Hangi kelimeyi yazıyorsun? Bunu hiç söylemezsin; oyun anlar. Yazdığın ilk harf, o harfle başlayan bir kelimeye kilitlenir. O harfle başlayan birkaç kelime varsa en alttaki seçilir: yere en yakın olan, en acil olan.
Kilitlendiğimiz kelimeyi target (hedef), onun kaç harfini yazdığımızı typed değişkeninde tutacağız.
```js
let target // the word being typed, or null
let typed // how many letters of the target are typed
target = null
typed = 0
function type(key) {
if (!target) {
// Lock on to the lowest word starting with this letter: it is the most urgent.
const options = words.filter((w) => w.text[0] === key).sort((a, b) => b.y - a.y)
if (options.length === 0) return
target = options[0]
typed = 0
}
}
```let target → yazılan kelime; yoksa null ("hiçbir şey"). let typed → kaç harfi yazıldı.function type(key) → key basılan harf ('c' gibi). Buna parametre denir.if (!target) → ! "değil": henüz bir hedef yoksa.w.text[0] → yazının ilk harfi (sayma 0'dan). filter bu harfle başlayan kelimeleri seçer..sort((a, b) => b.y - a.y) → listeyi sıralar. Sıralama iki kelimeyi (a, b) karşılaştırır: sonuç
pozitifse b öne geçer. b.y - a.y → y'si büyük olan (daha aşağıdaki) başa. Yani options[0] en alttaki.if (options.length === 0) return → bu harfle başlayan kelime yoksa dur. return fonksiyondan hemen çıkar.target = options[0] → hedef bu. typed = 0 → henüz harfi sayılmadı.let words ... satırının altına let target ... ve let typed ... satırlarını yaz.reset içinde words = [] satırının altına target = null ve typed = 0 yaz.reset fonksiyonunun kapanan }'sinin altında bir boş satır bırak ve type fonksiyonunu yaz.type'ı çağırmıyor.Beceriler: Oyun durumları, Diziler ve nesneler
← Zemini geçince gider Klavyeyi dinle →