こんにちは、コンスキです。
「Processingを使って一つのボールなら動かせるようになった!でも複数となると・・・」
というような方はいませんか?
今回はProcessingで複数のボールを同時に動かすコードをご紹介します。
アニメーションの例
ボールを同時に動かすと、次のようなアニメーションを作れます。
複数のボールを生成するスクリプト
今見ていただいたアニメーションのスクリプトをご覧ください。
pdeファイルにしたのスクリプトをコピーして実行すれば、10個のボールが作成されます。
//配列を作成する。Ball型の要素に持つ
Ball[] balls = new Ball[10];
void setup(){
fullScreen();
//オブジェクトを定義する
for (int i=0; i<balls.length; i++) {
balls[i] = new Ball(int(random(width)), int(random(height)), 10, 10);
}
}
void draw(){
background(255);
for (int i=0; i<balls.length; i++) {
balls[i].ballBehavior();
}
}
//Ballクラスを定義する
class Ball{
//使う変数(フィールド)を宣言する
int x;
int y;
float xspeed;
float yspeed;
//Ballクラスのコンストラクタを定義する
Ball(int xpos, int ypos, float xvelocity, float yvelocity){
x = xpos;
y = ypos;
xspeed = xvelocity;
yspeed = yvelocity;
}
//ボールを描画するメソッドを定義する
void display(){
fill(188, 118, 118);
noStroke();
ellipse(x, y, 50, 50);
}
//ボールの位置を変えるメソッドを定義する
void move(){
x += xspeed;
y += yspeed;
}
//ボールを跳ね返らせるメソッドを定義する
void edges(){
if(x > width-15 || x < 15){
xspeed *= -1;
}
if(y > height-15 || y < 15){
yspeed *= -1;
}
}
//ボールの描画と位置変更と跳ね返りを全て行うメソッドを定義する
void ballBehavior() {
display();
move();
edges();
}
}
終わりに
どんなものが作れるのかとどういうスクリプトを書けば作れるのかということに絞って紹介させていただきました。
コメント