next up previous contents
: RCMorphクラスのビューワにタイルを追加する : ユーザインターフェース : インスタンスメソッドの定義   目次

Playerクラスにメソッドを追加する

Playerクラスにメソッドを追加し、RCMorphクラスのメソッドと一対一対応させる。対応の方法については8.3にて既に述べた。また先にも述べた通り、タイルスクリプティングにおいてタイルが持つ事のできる引数の数はひとつだけであるので、Playerクラスに定義するメソッドも、引数がひとつか引数が必要ないものとした。例としてRCMorphクラスのsendWait:メソッド(WAITコマンドを送信するメソッド)に対応する、「引数×100ミリ秒待つ:」メソッドを挙げる。メソッド名はタイルに表示されるため、分かりやすいようにできる限り日本語にした。
引数×100ミリ秒待つ: time 
    ^ self costume sendWait: time   "RCMorphクラスのsendWait:を使う"

引数をひとつ以上取るメソッドに対しては、Playerに与えられる引数以外の引数に定数を与えることで対処した。その例としてRCMorphクラスのadInput: option:メソッド(A/D入力コマンドを送信するメソッド)に対応する、「AD入力:」メソッドを挙げる。

AD入力: port
    ^ self costume adInput: port option: 4  "4は定数で与える"
定数を与えたのはオプションの使用頻度が少ないと判断したためであり、最も推奨されるサンプル回数の16回を利用するために4を与えた。もしオプションの値を変更する必要があるならば、プロトコルを見て命令語を作成しsend:メソッドを用いるか、RCMorphクラスにオプションを保持するインスタンス変数を設け、そのインスタンス変数を扱うためのメソッドをRCMorphクラスとPlayerクラスの両方に定義する必要がある。

メソッドの対応方法が、少しだけ他と異なるメソッドもある。それがconvertToBatch: player:メソッドである。このメソッドは第一引数にコンバートするスクリプトの名前、第二引数にスクリプトを所有しているプレイヤークラスのインスタンスをとり、スクリプトをバッチの書き込み用にコンバートするためのメソッドである。第二引数に与えるのはもちろんRCMorphのパートナーとなるプレイヤークラスのインスタンスであるため、定義は以下のようになる。

コンバート実行: scriptName
    "selfを渡すところがポイント"
    ^ self costume convertToBatch: scriptName player: self



Deguchi Lab. 平成20年3月5日