2009年03月01日

ドリトルについて(その7)「衝突」

ドリトルについて(その6)「続・かめた!千鳥足」」の続きです。
ドリトルの記事全体はカテゴリ「ドリトル」をご覧下さい。

うちの娘が画面を見ていて、「パパ。このかめさんたち、上に乗っかっちゃうんだね」と言いました。

そうです。作った「かめた」「かめこ」「かめお」達は相手がどういう状態か関係なしに勝手気ままに進むので、平気で乗っかっていきます。

オブジェクト同士がぶつかったかどうかで処理を変えるにはどうすればいいでしょうか。それは「衝突」という命令を使います。

タートルオブジェクトの命令の一つですが、「衝突」は少し変わっています。以前、プロパティの一つのように書いてしまいましたが、本当はメソッドです(おそらく「衝突する」という主体的に行う動作ではない(無理に表現するなら「衝突される」)ので、メソッドであっても「衝突」という表現になったのでしょう)。この動作は難しい言葉で「イベント」と呼ばれるものの一種です。event を英和辞書で引くと、「出来事」とあります。なんらかの出来事が発生することをイベントといいます。ボタンオブジェクトで「ボタンが押された」というのも一つのイベントです。

「衝突」は他のオブジェクトと重なったとき(オブジェクトの画像の一部分でも)に実行されます。しかし、最初は何を実行するのか定義されていません。したがって、たとえ衝突しても何も起こりません。新しい命令を定義する書式と同じやりかたで、

オブジェクト:衝突=「 」。


というようにどんな動作を実行するのか定義する必要があります。

ここではぶつかったら右に90度曲がるようにしてみましょう。かめたに「千鳥足」を定義した直後に、かめたの「衝突」を定義してあげれば、全員にコピーされますね。

かめた=タートル!作る。

かめた:千鳥足=「
自分!(乱数(360)) 左回り。
時計=タイマー!作る。
時計!「自分!(乱数(60)−30) 左回り 5 歩く」 実行。
」。

かめた:衝突=「自分!90 右回り」。

かめこ=かめた!作る。
かめこ!"ayumiRed.png" 変身する (赤) 線の色。

かめお=かめた!作る。
かめお!"ayumiYellow.png" 変身する (黄) 線の色。

かめた!千鳥足。
かめこ!千鳥足。
かめお!千鳥足。



さて実行してみましょう。
ドリトル千鳥足3匹じたばた

ん? みんな中央でじたばたしていますね。ちっとも進めないようです。
すぐに気がついたと思いますが、「作る」でみんな中央に作られますので最初から衝突しているのです。ですから全員くるくる回ってしまいます。

このように、命令そのものの構文エラーではなく(シンタックス・エラーといいます)、組み合わせにより思ったとおりにいかないエラーをアルゴリズム・エラーとかバグなどといいます。バグとはゴキブリなどの虫のことですが、まさしくプログラム上の「虫」です。昔から厄介者でした。

コンピュータは思った通りに動くのではなく命令したとおりに動く

ということなんですね。そのぐらいわかってくれよと言ってもわかってくれません。

さて、今回の場合は最初に登場する位置を少しずらしてあげる必要があります。それはタートルオブジェクトの「位置」という命令を使います。「位置」はx軸方向、y軸方向の二つのパラメータを指定します。

ドリトルの画面下に「方眼紙」というチェックボックスがあります。これをチェックすると実行画面に方眼紙が現れます。

実はドリトルの実行画面はx軸、y軸の座標が存在し、中央が原点O(0,0)になっています。何も考えずに「作る」でオブジェクトを作るとこの原点に現れます。従って、かめた、かめこ、かめおを50ずつずらしてあげましょう。

かめた=タートル!作る。

かめた:千鳥足=「
自分!(乱数(360)) 左回り。
時計=タイマー!作る。
時計!「自分!(乱数(60)−30) 左回り 5 歩く」 実行。
」。

かめた:衝突=「自分!90 右回り」。

かめこ=かめた!作る。
かめこ!"ayumiRed.png" 変身する (赤) 線の色 50 50 位置。

かめお=かめた!作る。
かめお!"ayumiYellow.png" 変身する (黄) 線の色 −50 50 位置。

かめた!千鳥足。
かめこ!千鳥足。
かめお!千鳥足。


それぞれ異なる場所から歩き始め、ぶつかったら曲がるようになりました。

ところで技を一つ。「衝突」に「タートル:跳ね返る」を定義してあげることで、自然な跳ね返りを定義することもできます。「90 右回り」の行を変更して、

かめた:衝突=タートル:跳ね返る。

と書けば良いのです。

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

メールアドレス:

ホームページアドレス:

コメント: [必須入力]

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


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

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

人工知能アルゴリズムを搭載した自動売買ツール
Excerpt: 『Yume Auto FX』は、自動売買ツールです。あなたが最初に設定したルール(ルールはマニュアルでフォローしています。)で自動で売り時・買い時を判断し、エントリー&イグジットを繰り返します。これは..
Weblog: 「ポンド/円」専用FXシステムトレードツール/初心者でも稼ぐ[夢オートFX(Yume Auto FX)]
Tracked: 2009-03-26 15:52