ブロック崩しを作ります。まずはステージを。
以下のクラスを作ります。
ボール:上下左右に動く。画面下のラケット、上左右の壁、ブロックにぶつかるとはね返る。ブロックにはね返ったらブロックは消失する。ボールが画面下まで行ったら画面中央に再び出現する。
ラケット:マウスの動きにあわせて左右に動く。ボールに当たればボールをはね返す。ボールをはね返せなければスコアが 1 減少する。
以下、最初に作成したコードです。
Ball ball;
Player player;
class Ball{
float x, y, r, hr, xDir, yDir;
Ball(){
x = width/2;
y = height/2;
r = 10;
xDir = 0;
yDir = 1;
hr = r/2;
}
void move(){
if ((x+hr > width) || (x-hr < 0))
xDir *= -1;
if ((y-hr<=0) || ((y+hr >= player.y) && (x >= player.x) && (x <= player.x+50))) yDir *= -1; if (y > height) {
player.score --;
x = width/2;
y = height/2;
}
y += yDir;
fill(255);
ellipse(x, y, r, r);
}
}
class Player{
float x, y, easing, targetX;
int score;
Player(){
x = width/2-13;
y = 470;
easing = 0.1;
score = 10;
}
void move(){
targetX = mouseX-25;
x += (targetX - x) * easing;
rect(x, y, 50, 10);
}
}
void setup(){
size(500, 500);
ball = new Ball();
player = new Player();
}
void draw(){
background(0);
ball.move();
player.move();
}
以下のようにボールとラケットが表示されました。現時点ではブロックを出現させていません。また、ラケットの当たる場所によってボールの角度が変わるようになっていません(ボールは上下動しかしない)。このあたりをこれから実装していきます。
