class Ball { float x, y; // バーの上になるように変える。 float dx, dy; // ボールの速度 int size = 10; boolean start = false; int life = 3; // コンストラクタ Ball(Bar v) { x = v.x-(v.barx/2); y = v.y-(size/2); } // 初期化 void initial(Bar v, int a) { x = v.x-(v.barx/2); y = v.y-(size/2); if (a == 0) { dx = 4.0; dy = -4.0; } else if (a == 1) { dx = 6.0; dy = -6.0; } else if (a == 2) { dx = 10.0; dy = -10.0; } start = false; life = 3; } // ボール発射 void start() { start = true; } // ボールを描写 void display() { stroke(#f8f4e6); fill(#c53d43); ellipse(x, y, size, size); fill(#7b8d42); textFont(font2); textAlign(RIGHT); textSize(30); text("life: ", width-30, 20); text(life, width-20, 20); } void move(Bar v, int a) { if (start) { x += dx; y += dy; // ボールが横の壁に当たったとき if (x < size/2 || x > width-(size/2)) { dx = -dx; } // ボールが上に当たったとき if (y < size/2) { dy = -dy; } // バリアが張られているとき if (v.barrier) { if (y > height-30) { dy = -dy; } } // ボールがバーに当たったとき if ( x > v.x-(v.barx/2) && x < v.x+(v.barx/2) ) { if (y > v.y-(size/2) && y < v.y+v.bary+(size/2)) { y = v.y-10; dy = -dy; dx += ( x - v.x) / 10; } } // ボールが落ちたとき else if ( x < v.x-30 || x > v.x+30 ) { if (y > height+50) { life--; x = v.x-(v.barx/2); y = v.y-(size/2); start = false; } } } // ボールを発射していないとき else { if (life > 0) { x = mouseX; } // 難易度別のボールの速度 if (a == 0) { dx = 3.0; dy = -3.0; } else if (a == 1) { dx = 6.0; dy = -6.0; } else if (a == 2) { dx = 10.0; dy = -10.0; } } } }