ブロック崩し(1) ステージを作る

ブロック崩しを作ります。まずはステージを。

以下のクラスを作ります。

ボール:上下左右に動く。画面下のラケット、上左右の壁、ブロックにぶつかるとはね返る。ブロックにはね返ったらブロックは消失する。ボールが画面下まで行ったら画面中央に再び出現する。
ラケット:マウスの動きにあわせて左右に動く。ボールに当たればボールをはね返す。ボールをはね返せなければスコアが 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();
}

以下のようにボールとラケットが表示されました。現時点ではブロックを出現させていません。また、ラケットの当たる場所によってボールの角度が変わるようになっていません(ボールは上下動しかしない)。このあたりをこれから実装していきます。

Leave a Reply

Your email address will not be published. Required fields are marked *