アニメーションとユーザーインタラクション
変数は必要最小限のスコープで使用するのが基本です。 関数やブロックの中でしか使わない変数はローカル変数を使用しましょう。
しかし、アニメーションやユーザーインタラクションを含むプログラムでは、アプリケーション全体の状態を記憶するためにグローバル変数を使用する必要があります。 また、プログラム全体で使用される定数もグローバル変数にしておくと良い場合があります。
アニメーション
以下はボールが画面の 4 辺でバウンドしながら移動するアニメーションのプログラムです。
int r = 30;
int x = r;
int vx = 6;
int y = r;
int vy = 8;
void setup() {
size(400, 400);
}
void draw() {
background(255);
fill(255, 0, 0);
noStroke();
ellipse(x, y, 2 * r, 2 * r);
if (x - r < 0 || width <= x + r) {
vx *= -1;
}
if (y - r < 0 || height <= y + r) {
vy *= -1;
}
x += vx;
y += vy;
}
ボールの現在座標 x
、y
とボールの速度 vx
、vy
はアニメーション中に変化するのでグローバル変数が使用されています。
r
はアニメーション中変更されませんが、関数内からも変更されていないので、定数の意味合いでグローバル変数が使用されています。
ユーザーインタラクション
以下は、画面をクリックした回数を画面に表示するプログラムです。
int count = 0;
void setup() {
size(400, 400);
}
void draw() {
background(0);
textAlign(CENTER, CENTER);
text(count, width / 2, height / 2);
}
void mouseClicked() {
count += 1;
}
クリックされた回数を記憶するグローバル変数 count
を使用しています。