ラケットとボールで遊ぶ - Processing
画面内を跳ね返りながら進むボールをラケットで打ち返すプログラムを書いてみた。
実行結果はソースコードの下に。
int[] x = new int[4]; // ボールのX座標 int[] y = new int[4]; // ボールのY座標 int[] dx = {1, 1, -1, -1}; // 各ボールのX方向移動量 int[] dy = {1, -1, -1, 1}; // 各ボールのY方向移動量 int rx, ry; // ラケットの座標 int rsize = 20; // ラケットのサイズ void setup() { size(500, 500); // ボールの初期位置 for(int i = 0; i < 4; i++){ x[i] = (int)random(width); y[i] = (int)random(height); } // ラケットの初期位置 rx = width / 2; ry = height - 50; } void draw(){ background(0); stroke(255); fill(255); // ラケット line(rx-rsize/2, ry, rx+rsize/2, ry); rx = mouseX; if(rx>=width-rsize/2) rx = width-rsize/2; if(rx<=rsize/2) rx = rsize/2; // ボール for(int i=0; i<4; i++){ ellipse(x[i], y[i], 3, 3); x[i] += dx[i]; y[i] += dy[i]; // 画面の枠からはみ出さないように if(x[i]<0 || x[i]>width) dx[i] *= -1; if(y[i]<0 || y[i]>height) dy[i] *= -1; // ラケットに当たったら跳ね返す if(y[i] == ry && x[i] >= rx-rsize/2 && x[i] <= rx+rsize) dy[i] *= -1; } }