Javaプログラミング基礎

演習問題 (基礎クラス向け)

解答は

に提出しなさい。ソースファイル (〜.java) のみを提出。 gFTP 等を使い ftp を用いて提出しなさい。

問題1 (Beginners')

前回の問題 では、オブジェクト指向の考え方を用いた ボールのアニメーションのプログラムを作成した。

このプログラムを改造し、 2つのボールが移動するようなプログラムとしなさい。 この問題では、ボール同士がぶつかった際に跳ね返るなどの ボール間の相互作用は考える必要はない。 mainメソッドを書くクラス名は TwoBallsSimulation1 とする。 (ファイル名は TwoBallsSimulation1.java)

このプログラムの大枠は次のようになる。

class TwoBallsSimulation1 {
    public static void main(String[] args) {
        // Ballクラスのオブジェクト ball1 と ball2 を宣言
        // ball1 と ball2 に対して、位置情報を設定
        // ball1 と ball2 に対して、速度情報を設定
        // ball1 と ball2 に対して、枠の幅と高さを設定

        while(true) {

            // ball1 と ball2 が移動するようなプログラムを書く

        }
    }
}

class Ball {

    // クラス Ball は前回の問題と同じとする (変更してはいけない)

}

なお、このプログラムでは、 1コマごとのボールの位置 (x座標とy座標) が表示されれば良い。 画面の書き換えを伴うアニメーション表示までは必要ない。

このプログラムは無限に繰り返しを行う。終了させるには Ctrl-C を押すこと。

問題2 (Beginners')

問題1のプログラムを改造し、 2つのボールがぶつかったときの動作を加えなさい。 例えば、ボール同士がぶつかった際に「ぶつかった」と表示し プログラムを終了することや、 方向に応じて跳ね返ることなどが考えられる。

main メソッド のあるクラス名は TwoBallsSimulation2 とする。 (ファイル名は TwoBallsSimulation2.java)

class TwoBallsSimulation2 {
    public static void main(String[] args) {
        // Ballクラスのオブジェクト ball1 と ball2 を宣言
        // ball1 と ball2 に対して、位置情報を設定
        // ball1 と ball2 に対して、速度情報を設定
        // ball1 と ball2 に対して、枠の幅と高さを設定

        while(true) {

            // ball1 と ball2 が移動するようなプログラムを書く
            // ball1 と ball2 の x, y 座標が同じであったら、
            // ぶつかったと判定する。

        }
    }
}

class Ball {

    // クラス Ball は前回の問題とほぼ同じ内容とするが、
    // 1,2個のメソッドを追加しても良い。

}