読者です 読者をやめる 読者になる 読者になる

人工知能に関する断創録

人工知能、認知科学、心理学、ロボティクス、生物学などに興味を持っています。このブログでは人工知能のさまざまな分野について調査したことをまとめています。最近は、機械学習・Deep Learningに関する記事が多いです。



跳ね回るボール

Javagame

ブロックを壊すボールを実装します。ボールは壁に当たったら跳ね返ります。実行するとわかりますがラケットに当てなくてもボールが跳ね返るようになっています。次回はボールとラケットの当たり判定処理を入れてボールがラケットに当たったとき跳ね返るようにします。

breakout02.jar

ボールクラスです。ボールの実装はボールを動かす(2004/9/19)とボールが跳ね返る処理(2004/9/20)で詳しく解説したので見てください。

public class Ball {
    // サイズ
    private static final int SIZE = 8;

    // 位置(ボールを囲む矩形の左上隅)
    private int x, y;
    // 速度
    private int vx, vy;

    // 乱数生成器
    private Random rand;

    public Ball() {
        rand = new Random(System.currentTimeMillis());

        // 位置を初期化
        x = rand.nextInt(MainPanel.WIDTH - SIZE);
        y = 0;

        // 速度を初期化(とりあえず固定)
        vx = 5;
        vy = 5;
    }

    /**
     * ボールを描画
     * 
     * @param g
     */
    public void draw(Graphics g) {
        g.setColor(Color.YELLOW);
        g.fillOval(x, y, SIZE, SIZE);
    }

    /**
     * ボールの移動
     * 
     */
    public void move() {
        x += vx;
        y += vy;

        // 左右の壁にぶつかった場合にバウンド
        if (x < 0 || x > MainPanel.WIDTH - SIZE) {
            vx = -vx;
        }

        // 上下の壁にぶつかった場合にバウンド
        if (y < 0 || y > MainPanel.HEIGHT - SIZE) {
            vy = -vy;
        }
    }
}