リテラシー的(?)プログラム例

1. 準備

(ECC 駒場環境を想定) ライブラリを自分のディレクトリにダウンロード
> rlogin java		JDKのあるマシンにログイン
> setenv CLASSPATH .:Introlet.zip:/opt/jdk1.1.4/classes.zip

以上のように準備しておけば、

> javac Foo.java

のようにしてコンパイルができ、

> setenv DISPLAY xxx.xx.x.x:0.0
> appletviewer foo.html

で実行できる(はず)。Netscape等でも実行できるはずだが、バージョンによっ
ては reload のタイミングがあやしいので appletviewer の方が無難だろう。
HTMLファイルの書き方は、下のプログラム例を「View source」で見るとよい。

2. プログラム例

  1. 簡単なプログラム: 丸四角×を描く
  2. 変数とキーボード入力: 点数に応じて棒の長さを変化させる
  3. 条件分岐: 点数に応じて棒の色を変える
    条件分岐(ちょっと複雑?): 同上
  4. 手続き(がないと大変): 3つの棒グラフ
    手続き: 同上・手続きを使う
  5. 関数: 同上・平均を計算するので関数にした
  6. 無限のくり返し: 動くボール
  7. 条件のあるくり返し: n個の棒グラフを入力・表示
  8. お遊び: はね返るボール
    お遊び2: 同上・重力つき (正確な計算になってない)
    お遊び2: 同上・速度メータつき

3. 仕掛け

Appletでキーボードから入力や、テキストの出力が簡単にできるように、 Introletというサブクラスを作った。 上のプログラム例は全てIntroletのサブクラスを定義している。

いろいろ絵を描く必要上、たいていの場合は、import java.awt.*; としておく必要がある。

HTMLファイルは

<applet code="ファイル名.class" width=250 height=350 archive="Introlet.zip">
</applet>
のように書く。 (Netscapeのバージョンによっては archive=... 指定を見てくれないものもあるようだ。)

新たに用意したメソッドは、以下のようなものである。

void doComputation(Graphics g)
「start」が押されると呼ばれるメソッド。Cプログラムのmainみたいなもの。 (本当は main とか run とか start とかいう名前にしたかったのだが……。)
int input(String prompt)
キーボートから入力を受け取って、整数を返す。
void print(String s), void println(String s)
文字列を表示する。
void sleep(double seconds)
スレッドの一時停止。try-catchを書く必要がないのがウレシイ。
問題点: アニメーションがちょっとチラつく。
ECC環境で試していない。
マウスクリックによる座標を拾えるようにすると楽しい?

1998年6月17日 増原英彦