welcome: please sign in
location: "etoys属性を条件に利用する"の差分
1と23のリビジョン間の差分 (その間の編集: 22回)
2010-06-02 00:37:46時点のリビジョン1
サイズ: 34
編集者: masahiko
コメント:
2011-05-19 07:30:14時点のリビジョン23
サイズ: 5711
編集者: masahiko
コメント:
削除された箇所はこのように表示されます。 追加された箇所はこのように表示されます。
行 1: 行 1:
#acl All:
== 属性と条件 ==
## page was renamed from etoys属性と条件
== 属性を条件に利用する ==
これまでは'''重なっているか'''という判定を主につかってきました。

属性の値を使うと細かな条件判定を行うことができます。

属性もたくさんありますが、座標を使った条件について説明します。

数値で表されている他の属性も
同様の考え方で条件に使えるはずです。

例えば、
幾何のカテゴリには次のような属性があります。
 . {{attachment:jouken19.png}}

----
=== 座標を使う ===
位置は座標で表されているので、座標の値を使って判定ができます。

 . ビューアでx座標の項目を表示し、項目名のところをつかんで引き出すとこのようになります。
 . {{attachment:jouken10.png}}
 . 属性値を設定するときは、矢印のところをつかんで引き出しましたが、今回はつかむところが異なります。
 . このタイルは条件(テスト)の場所や、計算式の一部分に配置することができます。
==== 例1 ====
 . x座標のタイルをテストの場所に配置し、数値を修正しました。
 . {{attachment:jouken11.png}}
 . いぬのx座標が200より小さいとき条件が成り立ちます。
  . '''はい'''の右に命令を記入すれば、条件が成り立つとき実行されます。
  . '''いいえ'''の右に命令を記入すれば、条件が成り立たないとき実行されます。
 . <<BR>>
 . Etoysの座標はこのようになっています。
  . {{attachment:zahyo02.png}}
 . いぬが色の付いた範囲内にあるとき、例1の条件が成り立ちます。
  . {{attachment:jouken15.png}}
----
=== 複数の条件 ===
図の範囲内にあるという条件の書き方。
 . '''x座標が200より小さい'''
 . '''y座標が300より小さい'''
 . の2つの条件が成り立つ場合に対応します。
  . {{attachment:jouken16.png}}
 . テストタイルを2つ組み合わせて使います。
 . 1つ目のテストに'''x座標が200より小さい'''という条件を書き、
 . 1つ目のテストタイルの'''はい'''のところに2つ目のテストタイルを配置します。
 . 1つ目のテストに'''y座標が300より小さい'''という条件を書きます。
  . {{attachment:jouken17.png}}
 . 1つ目のテストが成り立つとき、対応する'''はい'''の部分が実行されます。
 . ここにもテストがあるので、さらに条件判定が行われ
 . 2つ目のテストも成り立つとき、赤で示した部分に書かれた処理が行われます。
----
オブジェクトがある範囲内にあることを、どうやって判定したら良いでしょうか?
 . {{attachment:jouken01.png}}
これまでは'''重なっているか'''という判定をつかってきました。
 . {{attachment:jouken09.png}}
この方法では、2つのオブジェクトがちょっとでも触れていれば'''はい'''となりました。
 . {{attachment:jouken02.png}} {{attachment:jouken03.png}} {{attachment:jouken04.png}}
----
=== 差による判定 ===
犬と青い丸の横方向の位置(X座標)が近いという条件の書き方。
 . 犬にも丸にも大きさがありますが、中心座標で判定するものとします。
  . {{attachment:jouken05.png}}
  . {{attachment:jouken06.png}}
 . 上下位置(Y座標)は条件に含まないことにします。(上下どこでもよい)
  . {{attachment:jouken07.png}}
 . X座標の差が20より小さいとすると条件は
  . '''いぬのx座標 - 青い丸のx座標 < 20'''
  . '''いぬのx座標 - 青い丸のx座標 > -20'''
 . の2つになります。
上の例のように2つのテストタイルを使ってもできますが、関数を使って1つの条件で書くことができます。
 . 絶対値 '''| |''' を使うと1つの式に書けます。
  . '''|いぬのx座標 - 青い丸のx座標| < 20'''
 . 絶対値をとる関数は '''abs( )''' です。
  . '''abs(いぬのx座標 - 青い丸のx座標) < 20'''
 . という式を作ります。
次のような手順で配置できます。
 . テストタイルを配置します。
 . スクリプトの道具箱から abs() を取り出し配置します。
  . {{attachment:jouken18.png}}
 . abs( )の中にある右向きの△をクリックします。
  . {{attachment:jouken12.png}}
 . 2つの数の部分に、いぬのx座標 と 青い丸のx座標 を入れます。
  . {{attachment:jouken13.png}}
 . 演算と数値を修正します。
  . {{attachment:jouken14.png}}
----
=== 条件の考え方 ===
およそ図のような位置関係にあることを判定する場合。
 . {{attachment:jouken08.png}}
 . 目的の配置にしてみて、ビューアで座標を調べ差を手計算します。
  . '''いぬのx座標 - 青い丸のx座標 = 280'''
  . '''いぬのy座標 - 青い丸のy座標 = 50'''
 . 右辺の数を移項し、右辺を0にします。
  . '''いぬのx座標 - 青い丸のx座標 - 280 = 0'''
 . 左辺を絶対値(abs関数)で囲みます。
  . '''abs(いぬのx座標 - 青い丸のx座標 - 280) = 0'''
 . 等号を不等号に変え、右辺の0を誤差に変えます。
  . '''abs(いぬのx座標 - 青い丸のx座標 - 280) < 15'''
 . これで誤差15以内のX方向の条件ができました。
 . 同様にY方向の条件も書けます。
 . スクリプトでは2つのテストタイルを使うことになります。

属性を条件に利用する

これまでは重なっているかという判定を主につかってきました。

属性の値を使うと細かな条件判定を行うことができます。

属性もたくさんありますが、座標を使った条件について説明します。

数値で表されている他の属性も 同様の考え方で条件に使えるはずです。

例えば、 幾何のカテゴリには次のような属性があります。

  • jouken19.png


座標を使う

位置は座標で表されているので、座標の値を使って判定ができます。

  • ビューアでx座標の項目を表示し、項目名のところをつかんで引き出すとこのようになります。
  • jouken10.png

  • 属性値を設定するときは、矢印のところをつかんで引き出しましたが、今回はつかむところが異なります。
  • このタイルは条件(テスト)の場所や、計算式の一部分に配置することができます。

例1

  • x座標のタイルをテストの場所に配置し、数値を修正しました。
  • jouken11.png

  • いぬのx座標が200より小さいとき条件が成り立ちます。
    • はいの右に命令を記入すれば、条件が成り立つとき実行されます。

    • いいえの右に命令を記入すれば、条件が成り立たないとき実行されます。


  • Etoysの座標はこのようになっています。
    • zahyo02.png

  • いぬが色の付いた範囲内にあるとき、例1の条件が成り立ちます。
    • jouken15.png


複数の条件

図の範囲内にあるという条件の書き方。

  • x座標が200より小さい

  • y座標が300より小さい

  • の2つの条件が成り立つ場合に対応します。
    • jouken16.png

  • テストタイルを2つ組み合わせて使います。
  • 1つ目のテストにx座標が200より小さいという条件を書き、

  • 1つ目のテストタイルのはいのところに2つ目のテストタイルを配置します。

  • 1つ目のテストにy座標が300より小さいという条件を書きます。

    • jouken17.png

  • 1つ目のテストが成り立つとき、対応するはいの部分が実行されます。

  • ここにもテストがあるので、さらに条件判定が行われ
  • 2つ目のテストも成り立つとき、赤で示した部分に書かれた処理が行われます。


オブジェクトがある範囲内にあることを、どうやって判定したら良いでしょうか?

  • [添付]

これまでは重なっているかという判定をつかってきました。

  • [添付]

この方法では、2つのオブジェクトがちょっとでも触れていればはいとなりました。

  • [添付] [添付] [添付]


差による判定

犬と青い丸の横方向の位置(X座標)が近いという条件の書き方。

  • 犬にも丸にも大きさがありますが、中心座標で判定するものとします。
    • [添付]

    • [添付]

  • 上下位置(Y座標)は条件に含まないことにします。(上下どこでもよい)
    • jouken07.png

  • X座標の差が20より小さいとすると条件は
    • いぬのx座標 - 青い丸のx座標 < 20

    • いぬのx座標 - 青い丸のx座標 > -20

  • の2つになります。

上の例のように2つのテストタイルを使ってもできますが、関数を使って1つの条件で書くことができます。

  • 絶対値 | | を使うと1つの式に書けます。

    • |いぬのx座標 - 青い丸のx座標| < 20

  • 絶対値をとる関数は abs( ) です。

    • abs(いぬのx座標 - 青い丸のx座標) < 20

  • という式を作ります。

次のような手順で配置できます。

  • テストタイルを配置します。
  • スクリプトの道具箱から abs() を取り出し配置します。
    • [添付]

  • abs( )の中にある右向きの△をクリックします。
    • [添付]

  • 2つの数の部分に、いぬのx座標 と 青い丸のx座標 を入れます。
    • jouken13.png

  • 演算と数値を修正します。
    • jouken14.png


条件の考え方

およそ図のような位置関係にあることを判定する場合。

  • [添付]

  • 目的の配置にしてみて、ビューアで座標を調べ差を手計算します。
    • いぬのx座標 - 青い丸のx座標 = 280

    • いぬのy座標 - 青い丸のy座標 = 50

  • 右辺の数を移項し、右辺を0にします。
    • いぬのx座標 - 青い丸のx座標 - 280 = 0

  • 左辺を絶対値(abs関数)で囲みます。
    • abs(いぬのx座標 - 青い丸のx座標 - 280) = 0

  • 等号を不等号に変え、右辺の0を誤差に変えます。
    • abs(いぬのx座標 - 青い丸のx座標 - 280) < 15

  • これで誤差15以内のX方向の条件ができました。
  • 同様にY方向の条件も書けます。
  • スクリプトでは2つのテストタイルを使うことになります。

etoys属性を条件に利用する (最終更新日時 2011-05-19 07:54:00 更新者 masahiko)