Bölüm 2 · Sunum 2
Bir döngü bir sıra çizer. İki döngü bir tahta çizer.
for ile bir sıra kare çizdik. Satranç tahtasını nasıl çizeriz?8 satır var, her satırda 8 kare. 64 tane rect mi yazacağız?
rect(sutun * boyut, satir * boyut, …)İç döngü, dış döngünün her turunda baştan başlar. Bu yüzden önce bir satırın bütün sütunları, sonra bir sonraki satır gelir.
İç döngü bir satırı baştan sona bitirmeden dış döngü bir sonraki satıra geçmez. Bir kitabı okurken gözünüzün izlediği sıranın aynısı.
Döngü başlığını oturtamıyorsanız birkaç hücrenin köşesini elle yazın (hücre 40 piksel). Önce üst satırı, sonra sol sütunu; kural kendiliğinden çıkar.
Amaç kodu kâğıtta bitirmek değil, örüntüyü görünür kılmak. Bu bir zorunluluk da değil; yalnızca takıldığınızda başvuracağınız bir yol.
Konsoldaki ilk hücre (0, 0) idi. 1’den başlatsak ne değişirdi?
1’den başlarsak her konum hesabına − 1 eklemek gerekir. 0’dan başlayınca sutun * 40 yeter ve satir < 3 koşulu doğal okunur.
Aynı alışkanlığı dizilerde de göreceksiniz: ilk eleman dizi[0]’dır.
Ölçüler en üstte, sabit olarak duruyor. Tuvalin boyutu da onlardan hesaplanıyor: 8 × 50 = 400.
| satir | sutun | toplam | % 2 | Renk |
|---|---|---|---|---|
| 0 | 0 | 0 | 0 | açık |
| 0 | 1 | 1 | 1 | koyu |
| 0 | 2 | 2 | 0 | açık |
| 1 | 0 | 1 | 1 | koyu |
| 1 | 1 | 2 | 0 | açık |
(satir + sutun) % 2 === 0
Burada üç şey birleşti: döngü, % ve if / else.
Komşu hücreye geçtiğinizde toplam 1 değişir, kalan 0’dan 1’e ya da 1’den 0’a döner. Renklerin dönüşümlü olmasının tek sebebi bu.
| Dış: satir | İç: sutun | Bu satırda çizilen |
|---|---|---|
| 0 | 0 → 7 (8 tur) | 8 kare |
| 1 | 0 → 7 (8 tur) | 8 kare |
| … | … | … |
| 7 | 0 → 7 (8 tur) | 8 kare |
8 × 8 = 64
Toplam tur, dış tur sayısı ile iç tur sayısının çarpımıdır.
Space Invaders’ın (1978) filosu bir ızgaradır. Tetris’in kuyusu 10 × 20, satranç tahtası 8 × 8, Mayın Tarlası’nın büyük boyu 30 × 16 hücredir; hepsi iç içe iki döngüyle çizilir.
i’si, dış döngünün i’sini gölgeler. JavaScript hata vermez; kod çalışır ama sonuç sessizce bozulur.Satır ve sütun için satir ve sutun, genel sayaçlar için i ve j kullanın.
continue: yalnızca köşegensatir !== sutun ise o hücre atlanır. Geriye (0,0), (1,1), (2,2), (3,3) kalır.

line + for).triangle kullanmayın; hücreleri rect ile boyayın.rect.mid = floor(SUTUN / 2). Yeşil satır r için aralık mid - r … mid + r. Sıra: ızgara → yeşil → gövde; background bir kez.
for yeter.satir === sutun.satir + sutun === 8.continue ya da if.const N = 9; ve const BOYUT = 40; gibi sabitler kullanın. Önce boş tahtayı çizin, sonra taş döngüsünü ekleyin.Beyaz taşların üstünde ızgara çizgileri görünüyor. Sizce kodda ne ters gitti?
İpucu: tuvalde üstte görünen şekil hangisidir?
Elimizde iki araç var: aynı frame’de birçok şekil çizen for ve zamanı sayan frameCount.
frameCount hareket ettirirframeCount * 2Hız. Her frame 2 piksel sağa.i * 70Ofset. Her şerit bir öncekinden 70 piksel ileride başlar.% widthSonucu 0 … width − 1 arasında tutar. Kenara gelen şerit soldan yeniden girer.Çekirdek fikir: döngü = aynı frame’de birden fazla nesne · frameCount = zaman.
Zamanla artıp azalan, sonra yine artan bir sayıya ihtiyacımız var.
sin(): −1 ile +1 arasında salınan sayı
sin(açı)Verilen açının sinüs değerini döndürür. Sonuç her zaman −1 ile +1 arasındadır; açı arttıkça değer dalga gibi yükselir ve alçalır.Animasyonda sin’i “zamanla −1 … +1 arasında gidip gelen bir sayı üreteci” gibi düşünün.
| Parça | Aralık | Anlamı |
|---|---|---|
sin(...) | −1 … +1 | Ham salınım |
* 40 | −40 … +40 | Genlik: kaç piksel oynasın? |
150 + … | 110 … 190 | Merkez: hangi yükseklikte? |
+ i her daireye farklı bir faz verir: hepsi aynı anda aynı yükseklikte olmaz, dalga oluşur.
sin() oyunlarda her yerdeSüzülen altınlar, gidip gelen platform, yanıp sönen yazı, nefes alan karakter: dördü de aynı kalıp. orta + genlik * sin(zaman).
p5.js’te sin, cos, rotate açıyı varsayılan olarak radyan kabul eder.
| Sabit | Derece | Anlamı |
|---|---|---|
HALF_PI | ≈ 90° | Çeyrek tur |
PI | ≈ 180° | Yarım tur |
TWO_PI | ≈ 360° | Tam tur |
| Dönüşüm | p5.js |
|---|---|
| Derece → radyan | radians(90) → PI/2 |
| Radyan → derece | degrees(HALF_PI) → 90 |
angleMode(DEGREES) ile bütün sketch dereceye çevrilebilir; o zaman sin(90) yazılır. Örneklerimiz radyanla kalıyor.
20 köşenin 20 çift koordinatını tek tek hesaplamak istemiyoruz. Köşelerin ortak özelliği ne?

TWO_PI. 20 köşe için adım: TWO_PI / 20 (18°).i. köşenin açısı: i * adım.x = merkezX + r * cos(açı)y = merkezY + r * sin(açı)cos yatay, sin dikey izdüşümü verir; ikisi de −1 … +1 arasındadır.
for ile düzgün yirmigenKOSE’yi 3 yapın: üçgen. 6 yapın: altıgen. -HALF_PI ilk köşeyi tepeye, saat 12 yönüne taşır.
Fareyi sağa götürdükçe köşe sayısı artar; çokgen çembere yaklaşır. Mavi nokta aynı formülle çemberde dolaşır: oyunlardaki yörüngeler, saat ibreleri ve daire biçimli mermi dizilimleri böyle hesaplanır.
while ile
Gelecek bölümde bir tic-tac-toe (XOX) oyunu yazacağız. 3 × 3 tahtayı döngülerle çizeceğiz.
rect()’i kaç kez çağırır?HUCRE_BOYUTU iki katına çıkarsa createCanvas boyutu nasıl etkilenir?frameCount olmadan döngü yalnızca konum çeşitliliği mi sağlar, hareket mi?sin’li daire örneğinin ortak yanı ne?TWO_PI / 20 neyi temsil eder? KOSE 6 olursa şekil ne olur?draw() içinde iç içe for ile bu ızgarayı çizen kodu isteyin. Dama deseni için (satir + sutun) % 2 kullanmasını, her satırı yorumla açıklamasını söyleyin.console.log ile doğrulayın.“Çalışmıyor” demek yetmez; neden çalışmadığını görmek gerekir.
İç içe for’da satir ve sutun’un tur tur değişmesini izlemek, çoğu zaman console.log yağmurundan daha öğreticidir.

9 Eylül 1947, Harvard Mark II bilgisayarı arıza yapar.
i sıfırdan başlıyor, sonra iç döngüde yine i… Bir dakika!Kodu birine (ya da bir şeye) yüksek sesle anlatmak, ne yaptığını sandığınız ile gerçekte ne yaptığı arasındaki farkı ortaya çıkarır.
satir ve sutun’un tur tur değiştiğini görün.for ile 6 × 6 daire ızgarası isteyin: ellipse(sutun * 60, satir * 60, 30).sin(frameCount * 0.05 + satir + sutun) * 12 kadar kayma. Dalganın satır ve sütun boyunca ilerleyişini izleyin.sutun yerine sabit bir sayı yazın: ellipse(3 * 60, …). Ne değişti? Aynısını satir için deneyin.sin’li dairelerin yalnızca y’si değil, çapı da salınsın.console.log kaç kez çalışır?İç döngünün sınırı dış değişkene bağlı: 1 + 2 + 3 + 4 = 10. Çam ağacındaki üçgenin sırrı da bu.
x sütundan, y satırdan gelir: rect(sutun * 50, satir * 50, …). İkisini karıştırmak en sık yapılan ızgara hatası.
y = 200 + sin(frameCount * 0.1) * 60. y hangi aralıkta gezer?sin −1 … +1 arasında. 60 ile çarpınca −60 … +60; 200 eklenince 140 … 260.
x = sutun * boyut, y = satir * boyut. 0’dan saymak formülü sade tutar.(satir + sutun) % 2 dama desenini üretir.frameCount hareket ettirir, % width başa döndürür.sin −1 … +1 arasında salınır; genlikle çarpılır, merkeze eklenir.TWO_PI / köşe; köşeler cos ve sin ile bulunur.Sıradaki ders
Fonksiyonlar, parametreler ve return.