Bölüm 3 · Sunum 2
Elli düşmanı elli ayrı değişkende tutmadan yönetmeyi öğreneceğiz.
Peki hepsini 2 piksel sağa kaydırmak için kaç satır yazacaksınız?
üstte değerler · altta indeksler
[] ile tanımlanan, indeksle erişilen sıralı veri koleksiyonudur.| İfade | Anlamı |
|---|---|
[] | Boş dizi oluşturur |
[a, b, c] | Başlangıç elemanlarıyla dizi |
dizi[0] | İlk eleman (indeks 0) |
dizi.length | Eleman sayısı |
Dokuz kutu, tek bir ad. Hangi kutuyu istediğinizi bir sayıyla söylüyorsunuz.
Ortak nokta: aynı türden birçok değer ve onları sırayla işleme ihtiyacı.
skorlar[1] hangi değeri verir?Peki skorlar[3]?
skorlar.length === 3 · son geçerli indeks 2
skorlar[1] ikinci elemandır.skorlar[3] hata vermez; undefined döner. Hata sessizdir.
undefined verirler. Konsolda [1, <2 empty slots>, 44] gibi görünür.push ya da 0, 1, 2… sırasıyla atama boşluk bırakmaz. Oyun listelerinde bu delikleri oluşturmayın.
| İndeks | renkler[indeks] | Anlamı |
|---|---|---|
| 0 | 255 | Kırmızı |
| 1 | 120 | Yeşil |
| 2 | 80 | Mavi |
| 3 | undefined | Karşılığı yok |
fill(255, 120, 80) ile aynı sonuç.
[1, "iki", true]. Oyun kodunda tek tür tutmak okumayı kolaylaştırır.skorlar[0] ve skorlar[2] nedir? skorlar[3] neden sorunlu?skorlar.length kaçtır? Son geçerli indeks hangisi?for döngüsünün koşulunu yazın: i < …↓ tahminler[0] = 8
Her hücre kendi başına bir değişken gibidir: okunur, üstüne yazılır. Diğer hücreler etkilenmez.
for ile diziyi dolaşmaki < tahminler.length koşulu indeksi dizinin sınırları içinde tutar. Diziye bir sayı daha ekleyin: döngüye dokunmanız gerekmez.
i <= tahminler.length yaparsak?Dizide 4 eleman var. Döngü kaç tur atar? Son turda ne okunur?
undefined| i | tahminler[i] |
|---|---|
| 0 | 7 |
| 1 | 12 |
| 2 | 5 |
| 3 | 9 |
| 4 | undefined |
length eleman sayısıdır: 4. Son geçerli indeks ise length - 1: 3.for (let i = 0; i < dizi.length; i++)Ekranda üç hedef daire olacak. Altı sayıyı nasıl düzenlersiniz ki hangisinin hangi daireye ait olduğu karışmasın?
hedefXListesi
hedefYListesi
1 numaralı hedef: (200, 150)
hedefXListesi[i] ile hedefYListesi[i] aynı hedefin koordinatlarıdır.İleride nesneler ve iki boyutlu diziler gibi başka yollar da göreceğiz. Şimdilik paralel dizi yeterli.
Aynı i hem x’i hem y’yi okur; döngü her turda bir hedef çizer. İki diziye birer sayı daha ekleyin: dördüncü hedef kendiliğinden belirir.

dusmanX.length kaç? Sahnede gerçekten kaç düşman var?(dusmanX[0], dusmanY[0]) neresi? [2] neden sahnede yok?for ile −1 olanları atlayıp dist ile en küçüğü bulun.Dizinin kaç eleman tutacağını baştan bilmiyoruz. Çalışırken nasıl büyütürüz?
push() ve pop()push()Dizinin sonuna eleman ekler. length bir artar.pop()Dizinin son elemanını çıkarır ve o değeri döndürür. length bir azalır.| İşlem | Örnek | Önce | Sonra |
|---|---|---|---|
| Sona ekle | liste.push(42) | [10, 20] | [10, 20, 42] |
| Sondan çıkar | liste.pop() | [10, 20, 42] | [10, 20]; 42 döner |
| Eleman sayısı | liste.length | [10, 20] | 2 |
push(9): önce ve sonra
for döngüsü her turda bir sonraki hücreyi okuyor.floor(): aşağı yuvarlafloor()Verilen sayıyı aşağı yuvarlayan p5.js fonksiyonu. Tam sayı elde etmek için random() ile birlikte kullanılır.| İfade | Sonuç |
|---|---|
random(1, 11) | 1.00 … 10.99 |
floor(7.93) | 7 |
floor(random(1, 11)) | 1, 2, … 10 |
floor(random(1, 7)). Rastgele bir düşman türü seçmek, rastgele bir hücreye ödül koymak hep aynı kalıptır.
pop() adım adım| Adım | İşlem | liste | Dönen |
|---|---|---|---|
| Başlangıç | — | [10, 20, 42] | — |
| 1 | liste.pop() | [10, 20] | 42 |
| 2 | liste.pop() | [10] | 20 |
| 3 | liste.pop() | [] | 10 |
| 4 | liste.pop() | [] | undefined |
pop()Hata vermez ama anlamlı bir değer de vermez. Önce length > 0 diye bakın.push da bir değer döndürürEklemeden sonraki yeni eleman sayısını. Örneklerimizde kullanmıyoruz; var olduğunu bilmek yeter.En alttakini mi, en üsttekini mi? En üstteki, yığına ne zaman konmuştu?
push ve pop birlikte kullanıldığında dizi bir yığın gibi davranır. Kural LIFO’dur: last in, first out. En son eklenen, ilk çıkarılır.Ayrı bir Stack sınıfı şart değil; sıradan bir dizi ve push / pop çoğu zaman yeter.
pop’tur. Super Mario Maker’ın seviye düzenleyicisi, bulmaca oyunları.pop.pop; kart koymak push.enBuyuk(skorlar) en yüksek skoru verir.for + karşılaştırma kalıbı toplam, ortalama, en küçük gibi birçok özet hesapta tekrar eder.
Her tıklama, konumu iki diziye birden push eder. Birkaç kule kurun, sonra sol üstteki GERİ AL’a basın.
kuleX = [10, 20], kuleY = [30, 40]. (50, 60)’a bir kule kurun, sonra bir kez geri alın. Diziler nasıl kalır?length > 0 ise her iki dizide pop çağırın.kuleX.length ile uyumlu mu?if’in içine pop yazmak yetmez. GERİ AL’a basınca alttaki push satırına ulaşılmaması gerekir.i <= dizi.length yazan hatalı bir döngü düşünün. Ne olur? Önce kendiniz yazın.ortalama(degerler) fonksiyonu yazın; skor listesinin ortalamasını döndürsün.d nasıl görünür?[3, 6, 1][3, 1][1, 3][3, 6, 9, 1][3, 6, 9] → [3, 6] → [3] → [3, 1]. Ekleme de çıkarma da hep sondan.
liste[liste.length] neyi verir?undefinedSon eleman liste[liste.length - 1]’dir. length her zaman son geçerli indeksten bir fazladır.
Üçüncü turda ys[2] undefined. Paralel dizilerin uzunlukları her zaman eşit olmalı.
length - 1.for (let i = 0; i < dizi.length; i++).push sona ekler, pop sondan çıkarır; birlikte bir yığın (LIFO) oluştururlar.pop ve sınır dışı indeks undefined verir; hata sessizdir.Sıradaki ders
Sabit kapasiteli diziler ve paralel dizilerle balon sahnesi.