情報処理2z(Java version)
課題3:オブジェクトの移動

基本課題
  1. ボールをアプレットの上から下へ垂直移動させてみよう。

  2. 下まで行ったら今度は上へと無限に反復運動させてみよう。

応用課題

  1. 反射する度にスピードが上がるようにしてみよう。

難関応用課題

  1. ボールが引力に引かれて床で弾んでいるようにしてみよう。


参考資料


(List 3.2) kadai301.java
import java.awt.*;

public class kadai301 extends java.applet.Applet implements Runnable /* (1) */ 
{
  Thread th; /* Thread 型のフィールド変数を宣言 (2)*/
  int x, y;

  public void init(){
    th = new Thread(this); /* 変数の初期化 (3) */
    th.start();            /* スレッドの開始   */

    ........; /* 初期値代入 */
    ........;
  }

  public void paint(Graphics g){
    ........; /* (x, y) にボールを描く */
  }

  public void run(){ /* 継続的な処理を実行するメソッド run (4)*/
    while(y < 180){

      try{                             /* ここから以下3行が重要 (5)   */
        Thread.sleep(70);              /* 1回のループで止めておく時間 */
      }catch(InterruptedException e){} /* 例外処理(とりあえず必要)     */

      ........; /* ボールを動かす */
      repaint(); /* paint メソッド呼び出し */
    }
  }

  public void destroy(){
    th.stop(); /* スレッドの終了 (6) */
  }

}



[*1] アプレットビューアは MS-DOS から実行することになるので、 その MS-DOS の画面が標準出力になります。 これに対して Netscape や Internet Explorer などのブラウザは標準出力を持たないので System.out.println は出力する場所を見つけられないのです。

[*2] true は変数ではなく、C にはない boolean 型の定数です。 boolean 型は真偽値型で true (真)、false(偽)の二つの値しかとりません。


Tips
  • Mule の便利コマンド

    Windows95 にはデフォルトでメモ帳というエディタが入っていますが、 プログラムを書く時には Mule (Mule for win32) を使うことをお勧めします。

    その理由の一つとして Tab キーでの行の頭揃えができる点があります。

    プログラマーはプログラムを書く時には、 まず誰が見ても分かりやすいプログラムを書くように心がけるべきでしょう。 見て分かりにくいプログラムだと、後で変更するのがとても大変です。

    C のプログラムの場合、 Mule で Tab キーを押すと、カッコ { } の数などを見て、 その行を相応しい位置に勝手にインデントしてくれます。 実はこの機能は Java のプログラムを書く時にも使えるのです。

    Mule で以下のコマンドを打ってみましょう。

      M-x c-mode
    これで Tab キーが非常に使えるキーに変わります。