Bölüm 2 · Sunum 4
x hangi x?Bir değişken nerede doğar, nerede yaşar, nerede görünmez olur?
Programda da aynı adı taşıyan iki değişken olabilir. Hangisinin kastedildiğini belirleyen bir kural olmalı.
| Nerede tanımlanır? | Tür | Örnek | Ne kadar yaşar? |
|---|---|---|---|
setup / draw dışında, en üstte | Global | skor, hedefX, oyunBitti | Sketch çalıştığı sürece |
Fonksiyon gövdesinde let / const | Yerel | Geçici hesap, döngü değişkeni | Fonksiyon bitene kadar |
| Fonksiyon parametresi | Yerel | dikdortgenCiz(x, y, w, h) içindeki x | Fonksiyon bitene kadar |
Tuvale tıklayın. draw her frame baştan çalışsa da skor silinmiyor. Oyun durumu bu yüzden en üstte tutulur.
geciciX her frame fare konumundan yeniden hesaplanır. Global tutmaya gerek yok.skor birikmeli; bu yüzden global.draw içindeki letHer frame’in başında yeniden yaratılır, sonunda yok olur. Kalıcı oyun durumu için kullanılamaz.Adları aynı olsa da iki ayrı kutu var. Çağrı anında değer kopyalanır.
function konumYaz(ekranX). Davranış aynıdır, okuması kolaylaşır.let adı, global bir değişkenle aynı olursa fonksiyonun içinde yerel olan kazanır. Global, o adla görünmez olur.skor. Artan şey yerel kopya; global skor hâlâ 10.Parametreye artisMiktari gibi ayırt edici bir ad verin ya da globali parametresiz, doğrudan güncelleyin. İkisini aynı adla karıştırmayın.
draw() içinde let ile tanımlanmamalı?for döngüsünde ikisine de i demek neden sorun çıkarıyordu? Bunun bugünkü konuyla ilgisi ne?can değişkeni tutun (başlangıç 3). canAzalt(miktar) fonksiyonu yazın; her tıklamada 1 azaltsın, ekranda gösterin.can yapın. Ne oldu? Neden?yeniCan(eskiCan, miktar) yeni değeri döndürsün; çağıran can = yeniCan(can, 1); yazsın.Fonksiyonun içindeki let a yeni, yerel bir kutu açar ve globali gölgeler. Global a’ya hiç dokunulmaz.
let yok; yeni kutu açılmıyor. Fonksiyon doğrudan global a’yı değiştiriyor. Tek bir sözcük bütün farkı yaratıyor.
text sayı yazamaz.i yalnızca for bloğunun içinde yaşar; dışarıda tanımsızdır.let blok kapsamlıdır: süslü parantezin içinde tanımlanan, dışarıdan görünmez.
Sıradaki ders
Oyun döngüsü, FPS ve frameRate.