クラスとオブジェクト
FreeFallBall fb1 = new FreeFallBall(); BoundBall bb1 = new BoundBall(); void setup() { size(400, 400); fb1.init(200, 10); } void draw() { background(255); fb1.paint(); bb1.paint(); } class BoundBall { //名前は自分で好きに決める(最初は大文字が良い) float x = random(width), y = random(height); float vx = random(5)-2.5, vy = -random(5)-1; float g = 0.25; //重力加速度 float sx = random(width), sy = random(height); int lifeTime = 180; //必要な変数があれば追加で宣言していく void paint() { //このボールを描画するためのメソッド //このボールの動きに関係するプログラムだけを書く(背景等はここには書かない) fill(255, 0, 0); ellipse(x, y, 10, 10); x += vx; y += vy; vy+=g; //vy(速度)を少しずつ早くすることで放物線の動きになる if (x <= 0 || x >= width) { vx *= -1; } lifeTime--; if (lifeTime < 0) { //画面外に出たら vy = -random(5)-1; //y方向の速度を初期化 x = mouseX; y = mouseY; //初期値をマウス座標に lifeTime = 180; } if (y >= height && vy > 0) { vy *= -0.5; } } } class FreeFallBall { int ballNum = 50; float g = 0.25; //重力加速度 float[] x = new float[ballNum]; float[] y = new float[ballNum]; float sx; float sy; float[] vx = new float[ballNum]; float[] vy = new float[ballNum]; //初期化のためのメソッド,setup()内でfb1.init(200,100); のようにして呼び出す void init(float x2, float y2) { for (int i = 0; i < ballNum; i++) { x[i] = x2; y[i] = y2; sx = x2; sy = y2; vx[i] = random(3)-1.5; vy[i] = -random(5)-2.5; } } void paint() { //このボールを描画するためのメソッド for (int i = 0; i < ballNum; i++) { ellipse(x[i], y[i], 5, 5); x[i] += vx[i]; y[i] += vy[i]; vy[i]+=g; //vy(速度)を少しずつ早くすることで放物線の動きになる if (y[i] > height) { //画面外に出たら vy[i] = -random(5)-1; //y方向の速度を初期化 x[i] = sx; y[i] = sy; //座標を基点座標にリセット } } } }
Copy