解答は
- ホスト名: earth.mlab.im.dendai.ac.jp
- ディレクトリ: /home/submit/JavaBeginners/[今日の日付]/[学籍番号]
に提出しなさい。ソースファイル (〜.java) のみを提出。 gFTP 等を使い ftp を用いて提出しなさい。
前回の問題 では、オブジェクト指向の考え方を用いた ボールのアニメーションのプログラムを作成した。
このプログラムを改造し、 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 を押すこと。
問題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個のメソッドを追加しても良い。 }