Atölye › Ritim Şeritleri › 7/35. adım
Oyunun işine yarayan yazı değil, notalar. Çizelgedeki her 1'i bir notaya çevireceğiz. Her nota üç bilgi taşır:
lane),time),hit).Zamanı "kare" (frame) olarak sayacağız. Ekran saniyede 60 kez yenilenir; her yenilenme bir kare. Satırlar 15 karede bir gelir (saniyenin dörtte biri: dakikada 120 vuruşluk bir şarkıda sekizlik nota). İlk notadan önce oyuncuya 2 saniye (120 kare) hazırlanma payı veririz.
```js
const STEP = 15 // frames between rows of the chart (an eighth note at 120 beats a minute)
const LEAD = 120 // frames before the first row reaches the line
let notes // { lane, time, hit }
function reset() {
notes = []
CHART.forEach((row, i) => {
for (let lane = 0; lane < LANES; lane++) if (row[lane] === '1') notes.push({ lane, time: LEAD + i * STEP, hit: false })
})
}
reset()
draw()
```const STEP = 15 → iki satır arası 15 kare. const LEAD = 120 → ilk notadan önce 120 kare (2 saniye) bekleme.let notes → notaların listesi. let, değeri sonradan verilebilen bir ad açar; içini reset dolduracak.function reset() { → oyunu baştan kuran fonksiyon.notes = [] → boş bir liste.CHART.forEach((row, i) => { ... }) → forEach, listenin her elemanı için içini çalıştırır. row o satırın
yazısı ('1001'), i sıra numarası (0, 1, 2...). (row, i) => { } adı olmayan kısa bir fonksiyondur.for (let lane = 0; lane < LANES; lane++) → satırın dört harfine sırayla bakar.if (row[lane] === '1') → o harf '1' ise. === "tam olarak eşit mi?" diye sorar.notes.push({ ... }) → listenin sonuna yeni bir nota ekler. Süslü parantez bir nesne (object): birbirine
ait bilgiler ad: değer çiftleriyle tek pakette. lane tek başına, lane: lane'in kısaltması.time: LEAD + i * STEP → 0. satır 120. karede, 1. satır 135. karede, 2. satır 150. karede...hit: false → henüz vurulmadı. false "hayır", true "evet" demek.reset() → çizmeden önce notaları hazırla.const HIT_Y = ... satırının altına STEP ve LEAD satırlarını yaz.CHART listesinin kapanan ] satırının altında bir boş satır bırak; let notes satırını, bir boş satır daha ve
reset fonksiyonunu yaz.draw() satırının üstüne reset() yaz.Beceriler: Diziler ve nesneler, Döngüler
← Yazı olarak şarkı Yeri saat belirler →