日曜日, 4月 16, 2006

ドリトルのメソッドを定義してみる

オブジェクト指向プログラミングの特徴に、メソッドというものがある。
http://e-words.jp/w/E383A1E382BDE38383E38389.html

メソッドとは、簡単に言うとオブジェクトが実行できる仕事のことだ。この仕事は、プログラムを書くことでどんどん機能を増やすことができる。

ドリトルでのメソッドの書き方はこうだ。

オブジェクト名:メソッド名=「|メソッドの引数|メソッドのプログラム」。

このメソッドを呼び出す時はこう書く。

オブジェクト名! 引数 メソッド名

ということで、今日は昨日のプログラムをさらにバージョンアップして、12音階を生成する部分を作品オブジェクトのメソッド(メソッド名は作曲)として定義してみる。

このメソッドへのパラメータはこういうように決める。
n ・・・・ 作成する音程の幅
m ・・・・ 作成する音符の数

作曲メソッドの呼び出し方

作品! 音程の幅 音符の数 作曲

このメソッドを使って、1部、2部、3部の3部構成の曲をドリトルに作曲させてみる。そして、1部をチェロ、2部をピアノ、3部をバスフルートで演奏させる。

あまりすばらしい演奏なので、最後に拍手も付けてみた。

//--------- ここから ----------
音列=配列!作る ""入れる ""入れる ""入れる。
音1=メロディ!作る "ド1"追加。
音2=メロディ!作る "ド2"追加。
音3=メロディ!作る "ド4"追加。
拍手=メロディ!作る "ド1~~~~~~~~~~~~~~~~"追加。

作品:作曲=「|n m| 作品=メロディ!作る。「
 音列!1 (音1! (random(n)-n/2) 音上げる) 上書き。
 音列!2 (音2! (random(n)-n/2) 音上げる) 上書き。
 音列!3 (音3! (random(n)-n/2) 音上げる) 上書き。
 作品!(音列!(random(3)) 見る) 追加 
」! (m) 繰り返す」。

piano=1。 cello=42。 flute=73。Applause=126。
Part1=作品! 30 100 作曲。奏者=楽器! (cello) 作る(Part1)設定 演奏 待つ。
part2=作品! 80 200 作曲。奏者=楽器! (piano) 作る(Part2)設定 演奏 待つ。
part2=作品! 20 100 作曲。奏者=楽器! (flute) 作る(Part2)設定 演奏 待つ。
聴衆=楽器! (Applause) 作る(拍手)設定 演奏。
//--------- ここまで ----------



そして実行!ボタンだ。

ちょっと本格的になってきた!と思いませんか。