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ü başlığını oturtamıyorsanız birkaç hücrenin köşesini elle yazın (hücre 40 piksel):
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.
| 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.
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.
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.
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.
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.