2009年02月15日

ドリトルについて(その5)「かめた!千鳥足」

ドリトルについて(その1)
ドリトルについて(その2)
ドリトルについて(その3)
ドリトルについて(その4)
の続きです。

そろそろかめた自身に勝手に歩かせてみたいと思います。

ドリトルには「乱数」という命令があります。

乱数(正の整数)


とすることで、1〜正の整数の間のランダムな数字を発生します。そこでこれを使ってかめたを勝手に歩かせてみます。

例1)
かめた=タートル!作る。
かめた!(乱数(360)) 左回り 100 歩く。


乱数(360)で、360度のどこに回転するかをランダムに決定しその角度を左回り。100ドット歩きます。乱数( )の外側の( )は必要です。これがないとかめたというタートルオブジェクトに対する命令として処理しようとして「乱数という命令が見つかりません」というエラーになります。あくまで左回りに対するパラメータの数値ですから( )をつけることで数値にする訳です。

実行結果は以下の通り。
ドリトルランダムロケット1

実行する度にどこに飛んでいくかわからない。ランダムロケットです。
さて、どれだけ進むかもランダムにしてみましょう。

例2)
かめた=タートル!作る。
かめた!(乱数(360)) 左回り (乱数(300)) 歩く。


実行結果は次のような感じです。
ドリトルランダムロケット2

実行する度に、向きと距離が変わります。不発のようにほとんど進まないときや、画面からはみ出してしまうときまでいろいろです。

もっとランダムに、ふらふら歩くようにできないでしょうか。ランダムウォークといいます。千鳥足ですね。

さてここで新しいオブジェクトを使います。それはタイマーオブジェクトです。タイマーオブジェクトは一定時間ごとにブロックを実行するためのものです。タイマーにできる命令は、

作る、間隔、回数、時間、実行、待つ、中断


です。「作る」はコピーして新しいオブジェクトを作ります。後はタイマーとしての性質ですが、間隔、回数、時間を何も指定しないと、0.1秒間隔で100回(約10秒間)となっています。「 」で括ったブロックを「実行」していきます。

まずは次のプログラムを実行してみましょう。

例3)
かめた=タートル!作る。
かめた!(乱数(360))左回り。
時計=タイマー!作る。
時計!「かめた!2 歩く」実行。


3行目にてタイマーオブジェクトを作り、「時計」という名前を付けています。
4行目では時計オブジェクトに実行命令をして「 」を0.1秒間隔で100回実行します。実行する内容はかめたを2ドット歩かせるものです。つまり10秒かけて200ドット進みます。ゆっくり版ランダムロケットですね。かなりノロノロしていていますが、カメですからガマンしましょう。

さて、ふらふらさせるにはどうしたらいいでしょうか。右に行くか左に行くか分からないわけですから、プラス・マイナス同じだけの大きさにランダムな角度を発生し、回転させればいいでしょう。

乱数(180)−90


とすることで−90〜+90になるはずです(実際は乱数( )は1からですから、−89〜+90)。これで左回りをさせながら少しずつ進めればいいでしょう。

例4)
かめた=タートル!作る。
かめた!(乱数(360))左回り。
時計=タイマー!作る。
時計!「かめた!(乱数(180)−90)左回り 5 歩く」実行。


実行結果は以下のようになります。
ドリトル千鳥足1

まるで化学で出てくる分子のブラウン運動のようになってしまいました。−90〜+90では角度が広すぎるのでしょう。そこで次のように変えてみます。

例5)
かめた=タートル!作る。
かめた!(乱数(360))左回り。
時計=タイマー!作る。
時計!「かめた!(乱数(60)−30)左回り 5 歩く」 実行。


実行してみましょう。
ドリトル千鳥足2

良い感じにふらふら歩いてくれます。10秒ではつまらない、20秒にしたいという場合は時計を作った後、「実行」する前に指定します。3行目と4行目の間に、

時計!20 時間。


という行を入れればいいわけです。または4行目を

時計!20 時間 「かめた!(乱数(60)−30)左回り 5 歩く」 実行。


と指定しても良いと思います。

今日はこの辺で。
posted by n_shimizu at 14:57| Comment(0) | TrackBack(1) | ドリトル
この記事へのコメント
コメントを書く
お名前: [必須入力]

メールアドレス:

ホームページアドレス:

コメント: [必須入力]

認証コード: [必須入力]


※画像の中の文字を半角で入力してください。
この記事へのトラックバックURL
http://blog.sakura.ne.jp/tb/26765458
※言及リンクのないトラックバックは受信されません。

この記事へのトラックバック

ドリトルについて(その6)「続かめた!千鳥足」
Excerpt: ドリトルについて(その5)「かめた!千鳥足」の続きです。 ドリトルの記事全体はカテゴリ「ドリトル」をご覧下さい。 さて前回のタイトルに冗談のように「かめた!千鳥足」と書きましたが、このように新しい命..
Weblog: 情報科雑感
Tracked: 2009-02-19 22:54