解答は
- ホスト名: 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個のメソッドを追加しても良い。
}