## page was renamed from etoys属性と条件 == 属性を条件に利用する == これまでは'''重なっているか'''という判定を主につかってきました。 属性の値を使うと細かな条件判定を行うことができます。 属性もたくさんありますが、座標を使った条件について説明します。 数値で表されている他の属性も 同様の考え方で条件に使えるはずです。 例えば、 幾何のカテゴリには次のような属性があります。 . {{attachment:jouken19.png}} ---- === 座標を使う === 位置は座標で表されているので、座標の値を使って判定ができます。 . ビューアでx座標の項目を表示し、項目名のところをつかんで引き出すとこのようになります。 . {{attachment:jouken10.png}} . 属性値を設定するときは、矢印のところをつかんで引き出しましたが、今回はつかむところが異なります。 . このタイルは条件(テスト)の場所や、計算式の一部分に配置することができます。 ==== 例1 ==== . x座標のタイルをテストの場所に配置し、数値を修正しました。 . {{attachment:jouken11.png}} . いぬのx座標が200より小さいとき条件が成り立ちます。 . '''はい'''の右に命令を記入すれば、条件が成り立つとき実行されます。 . '''いいえ'''の右に命令を記入すれば、条件が成り立たないとき実行されます。 . <
> . Etoysの座標はこのようになっています。 . {{attachment:zahyo02.png}} . いぬが色の付いた範囲内にあるとき、例1の条件が成り立ちます。 . {{attachment:jouken15.png}} ---- === 複数の条件 === ある範囲内にあるという条件の書き方。 ==== 例2 ==== . '''x座標が200より小さい''' . '''y座標が300より小さい''' . の2つの条件が成り立つ場合に対応します。 . {{attachment:jouken16.png}} . テストタイルを2つ組み合わせて使います。 . 1つ目のテストに'''x座標が200より小さい'''という条件を書き、 . 1つ目のテストタイルの'''はい'''のところに2つ目のテストタイルを配置します。 . 1つ目のテストに'''y座標が300より小さい'''という条件を書きます。 . {{attachment:jouken17.png}} . 1つ目のテストが成り立つとき、対応する'''はい'''の部分が実行されます。 . ここにもテストがあるので、さらに条件判定が行われ . 2つ目のテストも成り立つとき、赤で示した部分に書かれた処理が行われます。 ==== 例3 ==== x座標が400から500の間にある、の場合も2つのテストを使って表します。 . '''x座標が400より大きい''' . '''x座標が500より小さい''' ---- === 例4 === 犬と青い丸の横方向の位置(X座標)が近いという条件の書き方。 . 犬にも丸にも大きさがありますが、中心座標で判定するものとします。 . 上下位置(Y座標)は条件に含まないことにします。(上下どこでもよい) . {{attachment:jouken07.png}} . X座標の差が20より小さいとすると条件は . '''いぬのx座標 - 青い丸のx座標 < 20''' . '''いぬのx座標 - 青い丸のx座標 > -20''' . の2つになります。 上の例のように2つのテストタイルを使ってもできますが、関数を使って1つの条件で書くことができます。 . 絶対値 '''| |''' を使うと1つの式に書けます。 . '''|いぬのx座標 - 青い丸のx座標| < 20''' . 絶対値をとる関数は '''abs( )''' です。 . '''abs(いぬのx座標 - 青い丸のx座標) < 20''' . という式を作ります。 次のような形の式を作り、赤で示した2つの数の部分に、いぬのx座標 と 青い丸のx座標 を入れます。 . {{attachment:jouken13.png}} このようになります。演算と数値を修正します。 . {{attachment:jouken14.png}} ---- === 条件の考え方 === そのオブジェクトの位置を判定するには . x座標 . y座標 と数値を比較する。 2つのオブジェクトの位置関係をみるには、2つのオブジェクトの . x座標とx座標 . y座標とy座標 を比較する。 2つのオブジェクトの距離をみるには、 観察カテゴリにある . タートルへの距離 を使う。