Algodoo プログラミング

Algodooはスクリプト言語によって物体が衝突したときなどに物体を消すなど、その動きをプログラミングできます。これまでは補助的に使ってきましたが、今回はもう少しプログラミングの要素、条件分岐、繰り返しなどを積極的に使ってみました。

まず作ったシーンの説明ですが、青色Boxをクリックすると10×10のBoxを積み上げます。その上のCircleをクリックすると弾丸をイメージしたCircleが右に向けて飛び出し、Boxを崩します。このとき画面がかなり散らかりますので、これらを10秒で消すようにしています。これとは別に10秒のカウンタを青色Boxに表示します。
メインはこれだけですが、左二つのBoxは随時プログラムで位置を、二つ目のBoxはランダムで色も変化させています。
(関数のリファレンスとして作成しました)

衝突時などの出来事をきっかけに動き出すプログラミングのことをイベントドリブン(onColideなどon〜というところに記述)といいますが、常に動いているプログラミングを記述するときは、postStepやupdateというところにかきます。

青色Boxのクリックは、10×10のforループでBoxを積み上げます。このとき”:=”で変数に代入しないとクリック元のBoxに影響を与えるので注意が必要です。postStepでは、シミュレーション時間から0から10を作り出し、Boxに表示しています。
他でも利用するために、グローバル変数に該当するscene.my.numを定義して代入しています。(これは以前の投稿で説明:F10キーによるコンソールで) timeToLiveは、生存時間です。

Circleのクリックによって、速度x方向20で放出します。

postStepによってBoxの位置をグローバル変数の値によって変化させます。また10秒に一回色をランダムに変えています。(0になっている1秒間だけ何度も色を変えるためちらつくためあまりよくないですが、今回はこのままで)

一番左のBoxはupdateによって上下になめらかに位置を変えます。
postStepとupdateの違いは、シミュレーション中かそうでないかによって差があるという説明がありましたが、ここでは確認できませんでした。

F10キーによるコンソールでタブキーを押すとたくさんキーワードがでてきます。
これを見るとまだまだたくさんの機能があるようですので、少しずつ進めていたきたいと思っています。